From 6246d0d62bc14a1297e2d8ab5f300daf50949937 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Sat, 20 May 2017 10:12:03 -0400 Subject: [PATCH 1/8] updated to use Mapped Types and align with Object.freeze in lib.d.ts Updated the declaration to take advantage of Mapped Types. Specifically, I added a `DeepReadonly` recursive generic mapped type. Additionally, I took the opportunity to add overloads that mirroring those of `Object.freeze` as specified in the latest `lib.d.ts`. I removed the interface as it is now unused. --- types/deep-freeze/index.d.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/types/deep-freeze/index.d.ts b/types/deep-freeze/index.d.ts index 92f6c8db2f..423cecf81c 100644 --- a/types/deep-freeze/index.d.ts +++ b/types/deep-freeze/index.d.ts @@ -1,13 +1,13 @@ -// Type definitions for deep-freeze +// Type definitions for deep-freeze 0.1 // Project: https://github.com/substack/deep-freeze // Definitions by: Bart van der Schoor // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 -declare var deepFreeze: DeepFreeze.DeepFreezeInterface; export = deepFreeze; -declare namespace DeepFreeze { - export interface DeepFreezeInterface { - (obj: T): T; - } -} +declare function deepFreeze(a: T[]): ReadonlyArray>; +declare function deepFreeze(f: T): T; +declare function deepFreeze(o: T): DeepReadonly; + +declare type DeepReadonly = Readonly<{ [P in keyof T]: Readonly }>; From 8e4832bbdd306a5960ccc1f312591a7fdb5ca0c9 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Sat, 20 May 2017 10:19:44 -0400 Subject: [PATCH 2/8] add tslint.json --- types/deep-freeze/tslint.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 types/deep-freeze/tslint.json diff --git a/types/deep-freeze/tslint.json b/types/deep-freeze/tslint.json new file mode 100644 index 0000000000..1cd17c5dc4 --- /dev/null +++ b/types/deep-freeze/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + // This package uses the Function type to align with lib.d.ts + "ban-types": false + } +} From 10297b8f3eb3c15bb5c0a1e0c2e49ea030de7faa Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Sat, 20 May 2017 10:30:53 -0400 Subject: [PATCH 3/8] lint tests --- types/deep-freeze/deep-freeze-tests.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/types/deep-freeze/deep-freeze-tests.ts b/types/deep-freeze/deep-freeze-tests.ts index 4eeb1e9890..77f111c30f 100644 --- a/types/deep-freeze/deep-freeze-tests.ts +++ b/types/deep-freeze/deep-freeze-tests.ts @@ -1,8 +1,7 @@ - - import df = require('deep-freeze'); class Foo { - foo: string; + foo: string; } -var foo:Foo = df(new Foo()); +const foo: Foo = df(new Foo()); +const items = [{id: 0, name: 'first'}]; From 01065233d5943a9bcebd78a1a28c34801086793a Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Sat, 20 May 2017 10:37:00 -0400 Subject: [PATCH 4/8] lint declaration --- types/deep-freeze/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/deep-freeze/index.d.ts b/types/deep-freeze/index.d.ts index 423cecf81c..3579a5f673 100644 --- a/types/deep-freeze/index.d.ts +++ b/types/deep-freeze/index.d.ts @@ -10,4 +10,4 @@ declare function deepFreeze(a: T[]): ReadonlyArray>; declare function deepFreeze(f: T): T; declare function deepFreeze(o: T): DeepReadonly; -declare type DeepReadonly = Readonly<{ [P in keyof T]: Readonly }>; +type DeepReadonly = Readonly<{ [P in keyof T]: Readonly }>; From f2172aa7beea7eb61cd823c3f92902172ae50fef Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Sat, 20 May 2017 10:50:27 -0400 Subject: [PATCH 5/8] Use recursive mapped type --- types/deep-freeze/deep-freeze-tests.ts | 2 +- types/deep-freeze/index.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/types/deep-freeze/deep-freeze-tests.ts b/types/deep-freeze/deep-freeze-tests.ts index 77f111c30f..40be1faa47 100644 --- a/types/deep-freeze/deep-freeze-tests.ts +++ b/types/deep-freeze/deep-freeze-tests.ts @@ -3,5 +3,5 @@ import df = require('deep-freeze'); class Foo { foo: string; } -const foo: Foo = df(new Foo()); +const foo = df(new Foo()); const items = [{id: 0, name: 'first'}]; diff --git a/types/deep-freeze/index.d.ts b/types/deep-freeze/index.d.ts index 3579a5f673..d96003a6be 100644 --- a/types/deep-freeze/index.d.ts +++ b/types/deep-freeze/index.d.ts @@ -10,4 +10,4 @@ declare function deepFreeze(a: T[]): ReadonlyArray>; declare function deepFreeze(f: T): T; declare function deepFreeze(o: T): DeepReadonly; -type DeepReadonly = Readonly<{ [P in keyof T]: Readonly }>; +type DeepReadonly = Readonly<{ [P in keyof T]: DeepReadonly }>; From cbb74ca81c516cda8c3040d00203cc1f1eeac234 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Thu, 25 May 2017 13:21:21 -0400 Subject: [PATCH 6/8] Export DeepReadonly via declaration merging --- types/deep-freeze/index.d.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/types/deep-freeze/index.d.ts b/types/deep-freeze/index.d.ts index d96003a6be..809db01dfe 100644 --- a/types/deep-freeze/index.d.ts +++ b/types/deep-freeze/index.d.ts @@ -6,8 +6,10 @@ export = deepFreeze; -declare function deepFreeze(a: T[]): ReadonlyArray>; +declare function deepFreeze(a: T[]): ReadonlyArray>; declare function deepFreeze(f: T): T; -declare function deepFreeze(o: T): DeepReadonly; +declare function deepFreeze(o: T): deepFreeze.DeepReadonly; -type DeepReadonly = Readonly<{ [P in keyof T]: DeepReadonly }>; +declare namespace deepFreeze { + export type DeepReadonly = Readonly<{ [P in keyof T]: DeepReadonly }>; +} From 6a2127b2be99eb03ea3e86c96a9e81b941a514a7 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Thu, 25 May 2017 13:34:43 -0400 Subject: [PATCH 7/8] lint --- types/deep-freeze/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/deep-freeze/index.d.ts b/types/deep-freeze/index.d.ts index 809db01dfe..2e08d1532a 100644 --- a/types/deep-freeze/index.d.ts +++ b/types/deep-freeze/index.d.ts @@ -11,5 +11,5 @@ declare function deepFreeze(f: T): T; declare function deepFreeze(o: T): deepFreeze.DeepReadonly; declare namespace deepFreeze { - export type DeepReadonly = Readonly<{ [P in keyof T]: DeepReadonly }>; + type DeepReadonly = Readonly<{ [P in keyof T]: DeepReadonly }>; } From 8fb52b5f6c84c4c0d641f308ed3d556c5247d9fc Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Fri, 26 May 2017 11:08:36 -0400 Subject: [PATCH 8/8] Update deep-freeze-tests.ts Fix tests --- types/deep-freeze/deep-freeze-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/deep-freeze/deep-freeze-tests.ts b/types/deep-freeze/deep-freeze-tests.ts index 40be1faa47..b8a6061859 100644 --- a/types/deep-freeze/deep-freeze-tests.ts +++ b/types/deep-freeze/deep-freeze-tests.ts @@ -4,4 +4,4 @@ class Foo { foo: string; } const foo = df(new Foo()); -const items = [{id: 0, name: 'first'}]; +const items = df([{id: 0, name: 'first'}]);