From 40f3dc758454c33e8430a1d78f2ea0de4f18b8ad Mon Sep 17 00:00:00 2001 From: Javier Gonzalez Date: Sun, 18 Feb 2018 23:33:36 +0100 Subject: [PATCH] fixes for typescript 2.7 --- package.json | 6 +++--- packages/mobx-state-tree/package.json | 2 +- .../src/core/type/type-checker.ts | 2 +- .../src/types/complex-types/array.ts | 9 +++++---- .../src/types/complex-types/map.ts | 9 +++++---- .../src/types/complex-types/model.ts | 18 ++++++++++-------- packages/mobx-state-tree/src/utils.ts | 2 +- packages/mobx-state-tree/test/action.ts | 2 +- packages/mobx-state-tree/test/hooks.ts | 2 +- packages/mobx-state-tree/test/optimizations.ts | 2 +- packages/mobx-state-tree/test/primitives.ts | 2 +- packages/mobx-state-tree/tsconfig.json | 2 ++ yarn.lock | 4 ++++ 13 files changed, 36 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index f4fa93616..99e63d889 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "private": true, "dependencies": { - "lerna": "^2.4.0", + "cross-env": "^5.1.1", "husky": "^0.13.4", - "prettier": "^1.4.4", + "lerna": "^2.4.0", "lint-staged": "^3.6.1", - "cross-env":"^5.1.1" + "prettier": "^1.4.4" }, "scripts": { "clean": "lerna clean", diff --git a/packages/mobx-state-tree/package.json b/packages/mobx-state-tree/package.json index 390b23a0a..15d5d96ac 100644 --- a/packages/mobx-state-tree/package.json +++ b/packages/mobx-state-tree/package.json @@ -55,7 +55,7 @@ "tape": "^4.6.0", "tslib": "^1.7.1", "tslint": "^3.15.1", - "typescript": "^2.4.2" + "typescript": "^2.7.0" }, "peerDependencies": { "mobx": "^3.1.15" diff --git a/packages/mobx-state-tree/src/core/type/type-checker.ts b/packages/mobx-state-tree/src/core/type/type-checker.ts index a1809e6fe..16d12aa88 100644 --- a/packages/mobx-state-tree/src/core/type/type-checker.ts +++ b/packages/mobx-state-tree/src/core/type/type-checker.ts @@ -124,7 +124,7 @@ export function typecheckPublic(type: IType, value: any): void { const errors = type.validate(value, [{ path: "", type }]) if (errors.length > 0) { - console.error("Failed to create `${type.name}` from:", value) + console.error(`Failed to create "${type.name}" from:`, value) fail( `Error while converting ${shortenPrintValue( prettyPrintValue(value) diff --git a/packages/mobx-state-tree/src/types/complex-types/array.ts b/packages/mobx-state-tree/src/types/complex-types/array.ts index eba2e8ff5..fa104b528 100644 --- a/packages/mobx-state-tree/src/types/complex-types/array.ts +++ b/packages/mobx-state-tree/src/types/complex-types/array.ts @@ -61,11 +61,12 @@ export class ArrayType extends ComplexType> { return array } - finalizeNewInstance = (node: ObjectNode, snapshot: any) => { - const instance = node.storedValue as IObservableArray - extras.getAdministration(instance).dehancer = node.unbox + finalizeNewInstance = (node: INode, snapshot: any) => { + const objNode = node as ObjectNode + const instance = objNode.storedValue as IObservableArray + extras.getAdministration(instance).dehancer = objNode.unbox intercept(instance, change => this.willChange(change) as any) - node.applySnapshot(snapshot) + objNode.applySnapshot(snapshot) observe(instance, this.didChange) } diff --git a/packages/mobx-state-tree/src/types/complex-types/map.ts b/packages/mobx-state-tree/src/types/complex-types/map.ts index 903e0bcfb..28ba3dccd 100644 --- a/packages/mobx-state-tree/src/types/complex-types/map.ts +++ b/packages/mobx-state-tree/src/types/complex-types/map.ts @@ -100,11 +100,12 @@ export class MapType extends ComplexType<{ [key: string]: S }, IExtendedOb return map } - finalizeNewInstance = (node: ObjectNode, snapshot: any) => { - const instance = node.storedValue as ObservableMap - extras.interceptReads(instance, node.unbox) + finalizeNewInstance = (node: INode, snapshot: any) => { + const objNode = node as ObjectNode + const instance = objNode.storedValue as ObservableMap + extras.interceptReads(instance, objNode.unbox) intercept(instance, c => this.willChange(c)) - node.applySnapshot(snapshot) + objNode.applySnapshot(snapshot) observe(instance, this.didChange) } diff --git a/packages/mobx-state-tree/src/types/complex-types/model.ts b/packages/mobx-state-tree/src/types/complex-types/model.ts index c80268db5..e690fb26f 100644 --- a/packages/mobx-state-tree/src/types/complex-types/model.ts +++ b/packages/mobx-state-tree/src/types/complex-types/model.ts @@ -121,7 +121,7 @@ export class ModelType extends ComplexType implements IModelType any)[] - public readonly properties: { [K: string]: IType } + public readonly properties: { [K: string]: IType } = {} private preProcessor: (snapshot: any) => any | undefined private readonly propertiesNames: string[] @@ -190,7 +190,8 @@ export class ModelType extends ComplexType implements IModelType( - properties: { [K in keyof TP]: IType } & { [K in keyof SP]: IType } + properties: { [K in keyof TP]: IType | TP[K] } & + { [K in keyof SP]: IType | SP[K] } ): IModelType { return this.cloneAndEnhance({ properties } as any) } @@ -309,15 +310,16 @@ export class ModelType extends ComplexType implements IModelType { - const instance = node.storedValue as IStateTreeNode + finalizeNewInstance = (node: INode, snapshot: any) => { + const objNode = node as ObjectNode + const instance = objNode.storedValue as IStateTreeNode this.forAllProps((name, type) => { extendShallowObservable(instance, { [name]: observable.ref( - type.instantiate(node, name, node._environment, snapshot[name]) + type.instantiate(objNode, name, objNode._environment, snapshot[name]) ) }) - extras.interceptReads(instance, name, node.unbox) + extras.interceptReads(instance, name, objNode.unbox) }) this.initializers.reduce((self, fn) => fn(self), instance) @@ -493,10 +495,10 @@ export function model(properties?: IModelProperties): IModelType(...args: any[]): IModelType, T> { const name = typeof args[0] === "string" ? args.shift() : "AnonymousModel" const properties = args.shift() || {} - return new ModelType({ name, properties }) + return new ModelType({ name, properties }) as IModelType, T> } export function compose( diff --git a/packages/mobx-state-tree/src/utils.ts b/packages/mobx-state-tree/src/utils.ts index 723a0bb63..cfc9dcde2 100644 --- a/packages/mobx-state-tree/src/utils.ts +++ b/packages/mobx-state-tree/src/utils.ts @@ -51,7 +51,7 @@ export function extendKeepGetter(a: any, ...b: any[]) { for (let i = 0; i < b.length; i++) { const current = b[i] for (let key in current) { - const descriptor = Object.getOwnPropertyDescriptor(current, key) + const descriptor = Object.getOwnPropertyDescriptor(current, key)! if ("get" in descriptor) { Object.defineProperty(a, key, { ...descriptor, configurable: true }) continue diff --git a/packages/mobx-state-tree/test/action.ts b/packages/mobx-state-tree/test/action.ts index 44539ff4b..5b3183242 100644 --- a/packages/mobx-state-tree/test/action.ts +++ b/packages/mobx-state-tree/test/action.ts @@ -258,7 +258,7 @@ test("snapshot should be available and updated during an action", t => { const a = Model.create({ x: 2 }) t.is(a.inc(), 3) t.is(a.x, 4) - t.is(getSnapshot(a).x, 4) + t.is(getSnapshot(a).x, 4) }) test("indirectly called private functions should be able to modify state", t => { diff --git a/packages/mobx-state-tree/test/hooks.ts b/packages/mobx-state-tree/test/hooks.ts index 2983fd09d..a9160325c 100644 --- a/packages/mobx-state-tree/test/hooks.ts +++ b/packages/mobx-state-tree/test/hooks.ts @@ -242,5 +242,5 @@ test("snapshot processors can be composed", t => { })) const x = X.create({ x: 25 }) t.is(x.x, 2) - t.is(getSnapshot(x).x, 25) + t.is(getSnapshot(x).x, 25) }) diff --git a/packages/mobx-state-tree/test/optimizations.ts b/packages/mobx-state-tree/test/optimizations.ts index 30a7a11a1..a8011978e 100644 --- a/packages/mobx-state-tree/test/optimizations.ts +++ b/packages/mobx-state-tree/test/optimizations.ts @@ -24,7 +24,7 @@ test("it should avoid processing patch if is exactly the current one in reconcil }) const store = RootModel.create({ a: { a: 1, b: "hello" } }) unprotect(store) - const snapshot = getSnapshot(store) + const snapshot = getSnapshot(store) store.a = snapshot.a t.is(getSnapshot(store.a), snapshot.a) t.deepEqual(getSnapshot(store), snapshot) diff --git a/packages/mobx-state-tree/test/primitives.ts b/packages/mobx-state-tree/test/primitives.ts index 23fe17d07..3692316b4 100644 --- a/packages/mobx-state-tree/test/primitives.ts +++ b/packages/mobx-state-tree/test/primitives.ts @@ -46,5 +46,5 @@ test("Date can be rehydrated using unix timestamp", t => { t.is(store.date.getTime(), time.getTime()) applySnapshot(store, { date: newTime }) t.is(store.date.getTime(), newTime) - t.is(getSnapshot(store).date, newTime) + t.is(getSnapshot(store).date, newTime) }) diff --git a/packages/mobx-state-tree/tsconfig.json b/packages/mobx-state-tree/tsconfig.json index 5b6b0a9ed..39bb5fb2e 100644 --- a/packages/mobx-state-tree/tsconfig.json +++ b/packages/mobx-state-tree/tsconfig.json @@ -10,6 +10,8 @@ "noImplicitAny": true, "moduleResolution": "node", "experimentalDecorators": true, + "strict": true, + "strictPropertyInitialization": false, "strictNullChecks": true, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, diff --git a/yarn.lock b/yarn.lock index 52ac8ca5e..1ca05b8b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10503,6 +10503,10 @@ typescript@^2.4.2: version "2.5.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" +typescript@^2.7.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"