From 977a56539357c97f30f3b6cb04d15e950ab8a10f Mon Sep 17 00:00:00 2001 From: Uri Shaked Date: Fri, 23 Mar 2018 16:32:41 +0300 Subject: [PATCH 1/2] Initial steps toward TypeScript migration - renamed source files .js -> .ts - install types for deep-freeze, lodash.clonedeep - install ts-jest, rollup-plugin-typescript2 --- .gitignore | 3 + __tests__/{base.js => base.ts} | 4 +- __tests__/{curry.js => curry.ts} | 0 __tests__/{frozen.js => frozen.ts} | 0 __tests__/{readme.js => readme.ts} | 0 package.json | 25 ++- rollup.config.js | 4 +- src/{common.js => common.ts} | 0 src/{es5.js => es5.ts} | 0 src/{immer.js => immer.ts} | 2 +- src/{proxy.js => proxy.ts} | 0 tsconfig.json | 20 +++ yarn.lock | 273 ++++++++++++++++++++++++++++- 13 files changed, 320 insertions(+), 11 deletions(-) rename __tests__/{base.js => base.ts} (99%) rename __tests__/{curry.js => curry.ts} (100%) rename __tests__/{frozen.js => frozen.ts} (100%) rename __tests__/{readme.js => readme.ts} (100%) rename src/{common.js => common.ts} (100%) rename src/{es5.js => es5.ts} (100%) rename src/{immer.js => immer.ts} (97%) rename src/{proxy.js => proxy.ts} (100%) create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index f10dcaa3..1745baeb 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,9 @@ typings/ # Yarn Integrity file .yarn-integrity +# rollup-plugin-typescript2 cache +.rpt2_cache + # dotenv environment variables file .env diff --git a/__tests__/base.js b/__tests__/base.ts similarity index 99% rename from __tests__/base.js rename to __tests__/base.ts index 16e5e258..e94cbd6e 100644 --- a/__tests__/base.js +++ b/__tests__/base.ts @@ -1,7 +1,7 @@ "use strict" import produce, {setAutoFreeze, setUseProxies} from "../src/immer" -import deepFreeze from "deep-freeze" -import cloneDeep from "lodash.clonedeep" +import deepFreeze = require("deep-freeze") +import cloneDeep = require("lodash.clonedeep") import * as lodash from "lodash" jest.setTimeout(1000) diff --git a/__tests__/curry.js b/__tests__/curry.ts similarity index 100% rename from __tests__/curry.js rename to __tests__/curry.ts diff --git a/__tests__/frozen.js b/__tests__/frozen.ts similarity index 100% rename from __tests__/frozen.js rename to __tests__/frozen.ts diff --git a/__tests__/readme.js b/__tests__/readme.ts similarity index 100% rename from __tests__/readme.js rename to __tests__/readme.ts diff --git a/package.json b/package.json index 5f1ce185..b5f00669 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "test:flow": "yarn-or-npm flow check", "coveralls": "jest --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage", "build": "rimraf dist/ && cross-env NODE_ENV=production rollup -c && cpx \"src/immer.{d.ts,js.flow}\" dist", - "prettier": "prettier \"*/**/*.js\" --ignore-path ./.prettierignore --write", + "prettier": "prettier \"*/**/*.js\" \"*/**/*.ts\" --ignore-path ./.prettierignore --write", "precommit": "lint-staged", "prepublish": "yarn-or-npm run build", "release": "np --no-cleanup" @@ -38,10 +38,11 @@ "dist/" ], "devDependencies": { + "@types/deep-freeze": "^0.1.1", "@types/jest": "^22.0.0", + "@types/lodash.clonedeep": "^4.5.3", "babel-cli": "^6.26.0", "babel-core": "^6.26.0", - "babel-jest": "^22.0.4", "babel-plugin-external-helpers": "^6.22.0", "babel-preset-env": "^1.6.1", "babel-preset-es2015": "^6.24.1", @@ -66,20 +67,34 @@ "rollup-plugin-commonjs": "^8.2.6", "rollup-plugin-filesize": "^1.5.0", "rollup-plugin-node-resolve": "^3.0.2", + "rollup-plugin-typescript2": "^0.12.0", "rollup-plugin-uglify": "^2.0.1", + "ts-jest": "^22.4.2", "typescript": "^2.6.2", "uglify-es": "^3.3.6", "yarn-or-npm": "^2.0.4" }, "lint-staged": { - "*.js": [ + "*.ts": [ "prettier --write", "git add" ] }, "jest": { "transform": { - "^.+\\.jsx?$": "babel-jest" - } + "^.+\\.tsx?$": "ts-jest" + }, + "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", + "testPathIgnorePatterns": [ + "__tests__/flow" + ], + "moduleFileExtensions": [ + "ts", + "tsx", + "js", + "jsx", + "json", + "node" + ] } } diff --git a/rollup.config.js b/rollup.config.js index b704234d..b40959fe 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,12 +2,13 @@ import {minify} from "uglify-es" import commonjs from "rollup-plugin-commonjs" import filesize from "rollup-plugin-filesize" import resolve from "rollup-plugin-node-resolve" +import typescript from "rollup-plugin-typescript2" import uglify from "rollup-plugin-uglify" import babel from "rollup-plugin-babel" function getConfig(dest, format, ugly) { const conf = { - input: "src/immer.js", + input: "src/immer.ts", output: { exports: "named", file: dest, @@ -20,6 +21,7 @@ function getConfig(dest, format, ugly) { jsnext: true }), commonjs(), + typescript(), babel({ babelrc: false, presets: [ diff --git a/src/common.js b/src/common.ts similarity index 100% rename from src/common.js rename to src/common.ts diff --git a/src/es5.js b/src/es5.ts similarity index 100% rename from src/es5.js rename to src/es5.ts diff --git a/src/immer.js b/src/immer.ts similarity index 97% rename from src/immer.js rename to src/immer.ts index b422d6f3..086b76a5 100644 --- a/src/immer.js +++ b/src/immer.ts @@ -14,7 +14,7 @@ import {produceEs5} from "./es5" * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified * @returns {any} a new state, or the base state if nothing was modified */ -export default function produce(baseState, producer) { +export default function produce(baseState, producer?) { // prettier-ignore if (arguments.length !== 1 && arguments.length !== 2) throw new Error("produce expects 1 or 2 arguments, got " + arguments.length) diff --git a/src/proxy.js b/src/proxy.ts similarity index 100% rename from src/proxy.js rename to src/proxy.ts diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..729f7a50 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es2015", + "module": "es2015", + "moduleResolution": "node", + "noImplicitThis": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "removeComments": false, + "sourceMap": true, + "declaration": true, + "noEmitOnError": true, + "rootDir": "src", + "outDir": "dist", + "lib": ["es5", "es2015"] + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/yarn.lock b/yarn.lock index cd098892..d3cd74f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,10 +10,24 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@types/deep-freeze@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@types/deep-freeze/-/deep-freeze-0.1.1.tgz#0e1ee6ceee06f51baeb663deec0bb7780bd72827" + "@types/jest@^22.0.0": version "22.0.0" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.0.0.tgz#23009941178aad7979a9591e026f7a96054d7bc0" +"@types/lodash.clonedeep@^4.5.3": + version "4.5.3" + resolved "https://registry.yarnpkg.com/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.3.tgz#d42cfba3d929a4e1177a775142ce2a9444e384cf" + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.106" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.106.tgz#6093e9a02aa567ddecfe9afadca89e53e5dce4dd" + "@types/node@*": version "8.5.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.2.tgz#83b8103fa9a2c2e83d78f701a9aa7c9539739aa5" @@ -426,7 +440,7 @@ babel-plugin-external-helpers@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-istanbul@^4.1.5: +babel-plugin-istanbul@^4.1.4, babel-plugin-istanbul@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" dependencies: @@ -438,6 +452,10 @@ babel-plugin-jest-hoist@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.3.tgz#62cde5fe962fd41ae89c119f481ca5cd7dd48bb4" +babel-plugin-jest-hoist@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz#7d8bcccadc2667f96a0dcc6afe1891875ee6c14a" + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -737,6 +755,13 @@ babel-preset-jest@^22.0.3: babel-plugin-jest-hoist "^22.0.3" babel-plugin-syntax-object-rest-spread "^6.13.0" +babel-preset-jest@^22.4.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz#e92eef9813b7026ab4ca675799f37419b5a44156" + dependencies: + babel-plugin-jest-hoist "^22.4.3" + babel-plugin-syntax-object-rest-spread "^6.13.0" + babel-preset-modern-browsers@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-preset-modern-browsers/-/babel-preset-modern-browsers-10.0.1.tgz#8d7bc356e76a27881b7c3fb4ea6cfb9a3d81aae6" @@ -1036,6 +1061,14 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1462,6 +1495,17 @@ expect@^22.0.3: jest-message-util "^22.0.3" jest-regex-util "^22.0.3" +expect@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^22.4.3" + jest-get-type "^22.4.3" + jest-matcher-utils "^22.4.3" + jest-message-util "^22.4.3" + jest-regex-util "^22.4.3" + extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -1603,6 +1647,22 @@ form-data@~2.3.1: combined-stream "^1.0.5" mime-types "^2.1.12" +fs-extra@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -1740,7 +1800,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -2035,6 +2095,10 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -2297,6 +2361,22 @@ jest-config@^22.0.4: jest-validate "^22.0.3" pretty-format "^22.0.3" +jest-config@^22.4.2, jest-config@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403" + dependencies: + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^22.4.3" + jest-environment-node "^22.4.3" + jest-get-type "^22.4.3" + jest-jasmine2 "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" + pretty-format "^22.4.3" + jest-diff@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.0.3.tgz#ffed5aba6beaf63bb77819ba44dd520168986321" @@ -2306,6 +2386,15 @@ jest-diff@^22.0.3: jest-get-type "^22.0.3" pretty-format "^22.0.3" +jest-diff@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" + jest-docblock@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.0.3.tgz#c33aa22682b9fc68a5373f5f82994428a2ded601" @@ -2320,6 +2409,14 @@ jest-environment-jsdom@^22.0.4: jest-util "^22.0.4" jsdom "^11.5.1" +jest-environment-jsdom@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" + dependencies: + jest-mock "^22.4.3" + jest-util "^22.4.3" + jsdom "^11.5.1" + jest-environment-node@^22.0.4: version "22.0.4" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.0.4.tgz#068671f85a545f96a5469be3a3dd228fca79c709" @@ -2327,6 +2424,13 @@ jest-environment-node@^22.0.4: jest-mock "^22.0.3" jest-util "^22.0.4" +jest-environment-node@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" + dependencies: + jest-mock "^22.4.3" + jest-util "^22.4.3" + jest-get-type@^21.2.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" @@ -2335,6 +2439,10 @@ jest-get-type@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.0.3.tgz#fa894b677c0fcd55eff3fd8ee28c7be942e32d36" +jest-get-type@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + jest-haste-map@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.0.3.tgz#c9ecb5c871c5465d4bde4139e527fa0dc784aa2d" @@ -2360,6 +2468,22 @@ jest-jasmine2@^22.0.4: jest-snapshot "^22.0.3" source-map-support "^0.5.0" +jest-jasmine2@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965" + dependencies: + chalk "^2.0.1" + co "^4.6.0" + expect "^22.4.3" + graceful-fs "^4.1.11" + is-generator-fn "^1.0.0" + jest-diff "^22.4.3" + jest-matcher-utils "^22.4.3" + jest-message-util "^22.4.3" + jest-snapshot "^22.4.3" + jest-util "^22.4.3" + source-map-support "^0.5.0" + jest-leak-detector@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.0.3.tgz#b64904f0e8954a11edb79b0809ff4717fa762d99" @@ -2376,6 +2500,14 @@ jest-matcher-utils@^22.0.3: jest-get-type "^22.0.3" pretty-format "^22.0.3" +jest-matcher-utils@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" + jest-message-util@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.0.3.tgz#bf674b2762ef2dd53facf2136423fcca264976df" @@ -2386,14 +2518,32 @@ jest-message-util@^22.0.3: slash "^1.0.0" stack-utils "^1.0.1" +jest-message-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + jest-mock@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.0.3.tgz#c875e47b5b729c6c020a2fab317b275c0cf88961" +jest-mock@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" + jest-regex-util@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.0.3.tgz#c5c10229de5ce2b27bf4347916d95b802ae9aa4d" +jest-regex-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" + jest-resolve-dependencies@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.3.tgz#202ddf370069702cd1865a1952fcc7e52c92720e" @@ -2407,6 +2557,13 @@ jest-resolve@^22.0.4: browser-resolve "^1.11.2" chalk "^2.0.1" +jest-resolve@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" + dependencies: + browser-resolve "^1.11.2" + chalk "^2.0.1" + jest-runner@^22.0.4: version "22.0.4" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.0.4.tgz#3aa43a31b05ce8271539df580c2eb916023d3367" @@ -2456,6 +2613,17 @@ jest-snapshot@^22.0.3: natural-compare "^1.4.0" pretty-format "^22.0.3" +jest-snapshot@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" + dependencies: + chalk "^2.0.1" + jest-diff "^22.4.3" + jest-matcher-utils "^22.4.3" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^22.4.3" + jest-util@^22.0.4: version "22.0.4" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.0.4.tgz#d920a513e0645aaab030cee38e4fe7d5bed8bb6d" @@ -2468,6 +2636,18 @@ jest-util@^22.0.4: jest-validate "^22.0.3" mkdirp "^0.5.1" +jest-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^22.4.3" + mkdirp "^0.5.1" + source-map "^0.6.0" + jest-validate@^21.1.0: version "21.2.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" @@ -2486,6 +2666,16 @@ jest-validate@^22.0.3: leven "^2.1.0" pretty-format "^22.0.3" +jest-validate@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" + dependencies: + chalk "^2.0.1" + jest-config "^22.4.3" + jest-get-type "^22.4.3" + leven "^2.1.0" + pretty-format "^22.4.3" + jest-worker@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.0.3.tgz#30433faca67814a8f80559f75ab2ceaa61332fd2" @@ -2576,6 +2766,12 @@ json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -3329,6 +3525,12 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + pn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9" @@ -3363,6 +3565,13 @@ pretty-format@^22.0.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +pretty-format@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + private@^0.1.6, private@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -3649,6 +3858,12 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.4.0: dependencies: path-parse "^1.0.5" +resolve@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c" + dependencies: + path-parse "^1.0.5" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -3709,6 +3924,15 @@ rollup-plugin-node-resolve@^3.0.2: is-module "^1.0.0" resolve "^1.1.6" +rollup-plugin-typescript2@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.12.0.tgz#c6cd4d6c2fff954ba475ed5faec3c08544a9fc71" + dependencies: + fs-extra "^5.0.0" + resolve "^1.5.0" + rollup-pluginutils "^2.0.1" + tslib "^1.9.0" + rollup-plugin-uglify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz#67b37ad1efdafbd83af4c36b40c189ee4866c969" @@ -4146,6 +4370,24 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +ts-jest@^22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.2.tgz#2137bc0899b14dfb1d58257ee10b18ab8a2d92c5" + dependencies: + babel-core "^6.26.0" + babel-plugin-istanbul "^4.1.4" + babel-plugin-transform-es2015-modules-commonjs "^6.26.0" + babel-preset-jest "^22.4.0" + cpx "^1.5.0" + fs-extra "4.0.3" + jest-config "^22.4.2" + pkg-dir "^2.0.0" + yargs "^11.0.0" + +tslib@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -4203,6 +4445,10 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" @@ -4388,6 +4634,12 @@ yargs-parser@^8.0.0: dependencies: camelcase "^4.1.0" +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.0" + yargs@^10.0.3: version "10.0.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" @@ -4405,6 +4657,23 @@ yargs@^10.0.3: y18n "^3.2.1" yargs-parser "^8.0.0" +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From 5747829bdaa073993046e0a83216a22fde883780 Mon Sep 17 00:00:00 2001 From: Uri Shaked Date: Fri, 23 Mar 2018 16:55:42 +0300 Subject: [PATCH 2/2] Fix issues discovered by TypeScript build passes now --- src/es5.ts | 7 ++----- src/proxy.ts | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/es5.ts b/src/es5.ts index 8df50f47..ed1f010e 100644 --- a/src/es5.ts +++ b/src/es5.ts @@ -4,10 +4,10 @@ import { is, isProxyable, - isProxy, PROXY_STATE, shallowCopy, RETURNED_AND_MODIFIED_ERROR, + has, each, finalize } from "./common" @@ -191,10 +191,7 @@ function shallowEqual(objA, objB) { const keysB = Object.keys(objB) if (keysA.length !== keysB.length) return false for (let i = 0; i < keysA.length; i++) { - if ( - !hasOwnProperty.call(objB, keysA[i]) || - !is(objA[keysA[i]], objB[keysA[i]]) - ) { + if (!has(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { return false } } diff --git a/src/proxy.ts b/src/proxy.ts index e1d063c9..7de63439 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -27,7 +27,7 @@ const objectTraps = { deleteProperty, getOwnPropertyDescriptor, defineProperty, - setPrototypeOf() { + setPrototypeOf(): never { throw new Error("Don't even try this...") } } @@ -102,7 +102,7 @@ function getOwnPropertyDescriptor(state, prop) { return descriptor } -function defineProperty() { +function defineProperty(): never { throw new Error( "Immer does currently not support defining properties on draft objects" )