diff --git a/flat/flat-tests.ts b/flat/flat-tests.ts new file mode 100644 index 000000000..b6909cdb1 --- /dev/null +++ b/flat/flat-tests.ts @@ -0,0 +1,57 @@ +/// + +import {flatten, unflatten} from "flat"; + +module TestFlatten { + let options: { + delimiter?: string; + safe?: boolean; + maxDepth?: number; + }; + + type Target = { + a: { + b: number; + }, + c: boolean[][]; + }; + + let target: Target; + + type Result = { + 'a.b': number; + 'c.0.0': boolean; + }; + + let result: Result; + + result = flatten(target); + result = flatten(target, options); +} + +module TestUnflatten { + let options: { + delimiter?: string; + object?: boolean; + overwrite?: boolean; + }; + + type Target = { + 'a.b': number; + 'c.0.0': boolean; + }; + + let target: Target; + + type Result = { + a: { + b: number; + }, + c: boolean[][]; + }; + + let result: Result; + + result = unflatten(target); + result = unflatten(target, options); +} diff --git a/flat/flat.d.ts b/flat/flat.d.ts new file mode 100644 index 000000000..f3698f125 --- /dev/null +++ b/flat/flat.d.ts @@ -0,0 +1,41 @@ +// Type definitions for flat +// Project: https://github.com/hughsk/flat +// Definitions by: Ilya Mochalov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module FlatTypes { + interface FlattenOptions { + delimiter?: string; + safe?: boolean; + maxDepth?: number; + } + + interface Flatten { + ( + target: TTarget, + options?: FlattenOptions + ): TResult; + + flatten: Flatten; + unflatten: Unflatten; + } + + interface UnflattenOptions { + delimiter?: string; + object?: boolean; + overwrite?: boolean; + } + + interface Unflatten { + ( + target: TTarget, + options?: UnflattenOptions + ): TResult; + } +} + +declare module "flat" { + var flatten: FlatTypes.Flatten; + + export = flatten; +}