From 9db69fb4ce9299ef88b898804ed772f525c62f97 Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Wed, 21 Oct 2015 11:34:52 +0500 Subject: [PATCH 1/2] flat: definition of the module has been added --- flat/flat.d.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 flat/flat.d.ts 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; +} From d698a7f84458499c624575bc5dc04bbcdd38c84f Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Wed, 21 Oct 2015 11:35:02 +0500 Subject: [PATCH 2/2] flat: tests have been added --- flat/flat-tests.ts | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 flat/flat-tests.ts 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); +}