diff --git a/.eslintignore b/.eslintignore index fba047090e..fb08d81140 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,3 +8,4 @@ website/src/**/*.js presets/index.d.ts *.config.js .eslintrc.js +src/generated-raw-compiler-options.d.ts diff --git a/package-lock.json b/package-lock.json index 752cac6654..13ef47a37f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "@types/micromatch": "4.x", "@types/mkdirp": "latest", "@types/node": "14.x", + "@types/node-fetch": "^2.5.8", "@types/react": "17.x", "@types/semver": "latest", "@types/yargs": "latest", @@ -57,7 +58,9 @@ "husky": "4.x", "jest": "next", "js-yaml": "latest", + "json-schema-to-typescript": "^10.1.3", "lint-staged": "latest", + "node-fetch": "^2.6.1", "npm-run-all": "latest", "prettier": "2.x", "source-map": "latest", @@ -67,10 +70,34 @@ "node": ">= 10" }, "peerDependencies": { - "jest": "27.0.0-next.2", + "jest": "27.0.0-next.3", "typescript": ">=3.8 <5.0" } }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz", + "integrity": "sha512-QdwOGF1+eeyFh+17v2Tz626WX0nucd1iKOm6JUTUvCZdbolblCOOQCxGrQPY0f7jEhn36PiAWqZnsC2r5vmUWg==", + "dev": true, + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -2004,6 +2031,12 @@ "node": ">=8" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -2137,6 +2170,16 @@ "@types/node": "*" } }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -2209,6 +2252,12 @@ "@types/braces": "*" } }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", @@ -2229,6 +2278,30 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.30.tgz", "integrity": "sha512-gUWhy8s45fQp4PqqKecsnOkdW0kt1IaKjgOIR3HPokkzTmQj9ji2wWFID5THu1MKrtO+d4s2lVrlEhXUsPXSvg==" }, + "node_modules/@types/node-fetch": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz", + "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -2666,6 +2739,12 @@ "node": ">=4" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -3041,6 +3120,12 @@ "get-intrinsic": "^1.0.2" } }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3132,6 +3217,29 @@ "node": ">=6" } }, + "node_modules/cli-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.0.tgz", + "integrity": "sha512-a0VZ8LeraW0jTuCkuAGMNufareGHhyZU9z8OGsW0gXd1hZGi1SRuNRXdbGkraBBKnhyUhyebFWnRbp+dIn0f0A==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.1.1", + "d": "^1.0.1", + "es5-ext": "^0.10.51", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.7" + } + }, + "node_modules/cli-color/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -4481,6 +4589,16 @@ "node": ">=0.10.0" } }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "node_modules/dargs": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", @@ -4793,6 +4911,50 @@ "node": ">= 0.4" } }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -5512,6 +5674,16 @@ "node": ">=0.10.0" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/execa": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", @@ -5582,6 +5754,21 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", + "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", + "dev": true + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -6375,9 +6562,9 @@ } }, "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -6389,6 +6576,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-gitignore": { @@ -6429,6 +6619,21 @@ "node": ">= 6" } }, + "node_modules/glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "dev": true, + "dependencies": { + "@types/glob": "*" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "glob": "*" + } + }, "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -7052,6 +7257,12 @@ "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", "dev": true }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", @@ -9470,6 +9681,47 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "node_modules/json-schema-ref-parser": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz", + "integrity": "sha512-uxU9Ix+MVszvCTvBucQiIcNEny3oAEFg7EQHSZw2bquCCuqUqEPEczIdv/Uqo1Zv4/wDPZqOI+ulrMk1ncMtjQ==", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "9.0.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-schema-to-typescript": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-10.1.3.tgz", + "integrity": "sha512-yiyDK1sSSWhLN2JAuAyAE7jscFJj2hR7AhdF19BmdLh/N/QPdnIqrGa23CSc7z92OSSzKVPclAKof+rV8S8weA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "@types/lodash": "^4.14.168", + "@types/prettier": "^2.1.5", + "cli-color": "^2.0.0", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "is-glob": "^4.0.1", + "json-schema-ref-parser": "^9.0.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.20", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "mz": "^2.7.0", + "prettier": "^2.2.0", + "stdin": "0.0.1" + }, + "bin": { + "json2ts": "dist/src/cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -10035,6 +10287,15 @@ "node": ">=10" } }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, "node_modules/make-array": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/make-array/-/make-array-1.0.5.tgz", @@ -10088,6 +10349,28 @@ "node": ">=8" } }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/memoizee/node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -10434,6 +10717,17 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -10446,12 +10740,27 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -11915,6 +12224,12 @@ "node": ">=8" } }, + "node_modules/stdin": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", + "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", + "dev": true + }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -12211,23 +12526,6 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -12243,6 +12541,27 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", @@ -12265,6 +12584,16 @@ "xtend": "~4.0.1" } }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "node_modules/tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -12395,6 +12724,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -12890,6 +13225,29 @@ } }, "dependencies": { + "@apidevtools/json-schema-ref-parser": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz", + "integrity": "sha512-QdwOGF1+eeyFh+17v2Tz626WX0nucd1iKOm6JUTUvCZdbolblCOOQCxGrQPY0f7jEhn36PiAWqZnsC2r5vmUWg==", + "dev": true, + "requires": { + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.13.1" + }, + "dependencies": { + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -14568,6 +14926,12 @@ } } }, + "@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -14692,6 +15056,16 @@ "@types/node": "*" } }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -14764,6 +15138,12 @@ "@types/braces": "*" } }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@types/minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", @@ -14784,6 +15164,29 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.30.tgz", "integrity": "sha512-gUWhy8s45fQp4PqqKecsnOkdW0kt1IaKjgOIR3HPokkzTmQj9ji2wWFID5THu1MKrtO+d4s2lVrlEhXUsPXSvg==" }, + "@types/node-fetch": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz", + "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -15145,6 +15548,12 @@ "color-convert": "^1.9.0" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -15456,6 +15865,12 @@ "get-intrinsic": "^1.0.2" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -15528,6 +15943,28 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, + "cli-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.0.tgz", + "integrity": "sha512-a0VZ8LeraW0jTuCkuAGMNufareGHhyZU9z8OGsW0gXd1hZGi1SRuNRXdbGkraBBKnhyUhyebFWnRbp+dIn0f0A==", + "dev": true, + "requires": { + "ansi-regex": "^2.1.1", + "d": "^1.0.1", + "es5-ext": "^0.10.51", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.7" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -16636,6 +17073,16 @@ "array-find-index": "^1.0.1" } }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dargs": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", @@ -16888,6 +17335,50 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -17470,6 +17961,16 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "execa": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", @@ -17529,6 +18030,23 @@ } } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", + "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -18162,9 +18680,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -18206,6 +18724,15 @@ "is-glob": "^4.0.1" } }, + "glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "dev": true, + "requires": { + "@types/glob": "*" + } + }, "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -18681,6 +19208,12 @@ "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", "dev": true }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "is-regex": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", @@ -20642,6 +21175,38 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "json-schema-ref-parser": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz", + "integrity": "sha512-uxU9Ix+MVszvCTvBucQiIcNEny3oAEFg7EQHSZw2bquCCuqUqEPEczIdv/Uqo1Zv4/wDPZqOI+ulrMk1ncMtjQ==", + "dev": true, + "requires": { + "@apidevtools/json-schema-ref-parser": "9.0.7" + } + }, + "json-schema-to-typescript": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-10.1.3.tgz", + "integrity": "sha512-yiyDK1sSSWhLN2JAuAyAE7jscFJj2hR7AhdF19BmdLh/N/QPdnIqrGa23CSc7z92OSSzKVPclAKof+rV8S8weA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "@types/lodash": "^4.14.168", + "@types/prettier": "^2.1.5", + "cli-color": "^2.0.0", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "is-glob": "^4.0.1", + "json-schema-ref-parser": "^9.0.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.20", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "mz": "^2.7.0", + "prettier": "^2.2.0", + "stdin": "0.0.1" + } + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -21099,6 +21664,15 @@ "yallist": "^4.0.0" } }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, "make-array": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/make-array/-/make-array-1.0.5.tgz", @@ -21142,6 +21716,30 @@ "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", "dev": true }, + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "dependencies": { + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + } + } + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -21411,6 +22009,17 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -21423,12 +22032,24 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -22583,6 +23204,12 @@ } } }, + "stdin": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/stdin/-/stdin-0.0.1.tgz", + "integrity": "sha1-0wQZgarsPf28d6GzjWNy449ftx4=", + "dev": true + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -22820,22 +23447,6 @@ "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "text-extensions": { @@ -22850,6 +23461,24 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", @@ -22872,6 +23501,16 @@ "xtend": "~4.0.1" } }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -22977,6 +23616,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", diff --git a/package.json b/package.json index 9654aae693..0d3e71ae7e 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "description": "A preprocessor with source maps support to help use TypeScript with Jest", "scripts": { - "prebuild": "node scripts/clean-dist.js", + "prebuild": "node scripts/pre-build.js", "build": "tsc -p tsconfig.build.json", "postbuild": "node scripts/post-build.js", "clean": "node scripts/clean.js", @@ -31,7 +31,8 @@ "prepublishOnly": "npm run test", "preversion": "npm run test", "update:e2e": "node scripts/update-e2e-templates.js", - "version": "npm run changelog && git add CHANGELOG.md" + "version": "npm run changelog && git add CHANGELOG.md", + "raw:options": "node scripts/generate-raw-compiler-options.js" }, "repository": { "type": "git", @@ -93,6 +94,7 @@ "@types/micromatch": "4.x", "@types/mkdirp": "latest", "@types/node": "14.x", + "@types/node-fetch": "^2.5.8", "@types/react": "17.x", "@types/semver": "latest", "@types/yargs": "latest", @@ -113,7 +115,9 @@ "husky": "4.x", "jest": "next", "js-yaml": "latest", + "json-schema-to-typescript": "^10.1.3", "lint-staged": "latest", + "node-fetch": "^2.6.1", "npm-run-all": "latest", "prettier": "2.x", "source-map": "latest", diff --git a/scripts/generate-raw-compiler-options.js b/scripts/generate-raw-compiler-options.js new file mode 100644 index 0000000000..395f567b4a --- /dev/null +++ b/scripts/generate-raw-compiler-options.js @@ -0,0 +1,30 @@ +const fs = require('fs') + +const { compile } = require('json-schema-to-typescript') +const fetch = require('node-fetch') + +const { generatedPath } = require('./lib/paths') + +// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types +const generateRawTsCompilerOptions = async () => { + const response = await fetch('https://json.schemastore.org/tsconfig') + const tsconfigSchema = await response.json() + + return compile( + { + title: 'RawCompilerOptions', + type: 'object', + properties: tsconfigSchema.definitions.compilerOptionsDefinition.properties, + additionalProperties: false, + }, + 'generated-raw-compiler-options' + ) +} + +void generateRawTsCompilerOptions().then((rawCompilerOptions) => { + fs.writeFileSync(generatedPath, rawCompilerOptions) +}) + +module.exports = { + generateRawTsCompilerOptions, +} diff --git a/scripts/lib/paths.d.ts b/scripts/lib/paths.d.ts index dff1574696..ed96093d8a 100644 --- a/scripts/lib/paths.d.ts +++ b/scripts/lib/paths.d.ts @@ -11,6 +11,7 @@ declare const distDir: string declare const testsRootDir: string declare const e2eTestsDir: string declare const projectsToRun: string[] +declare const generatedPath: string export { rootDir, @@ -26,4 +27,5 @@ export { testsRootDir, e2eTestsDir, projectsToRun, + generatedPath, } diff --git a/scripts/lib/paths.js b/scripts/lib/paths.js index 115e9e1df9..b60131f0cb 100644 --- a/scripts/lib/paths.js +++ b/scripts/lib/paths.js @@ -24,6 +24,7 @@ const projectsToRun = [ `${e2eExternalRepoDir}/simple-project-references`, `${e2eExternalRepoDir}/yarn-workspace-composite`, ] +const generatedPath = path.join(process.cwd(), 'src', 'generated-raw-compiler-options.d.ts') module.exports = { pkgDigestFile, @@ -39,4 +40,5 @@ module.exports = { testsRootDir, e2eTestsDir, projectsToRun, + generatedPath, } diff --git a/scripts/post-build.js b/scripts/post-build.js index c88e7b5796..20fed4941f 100644 --- a/scripts/post-build.js +++ b/scripts/post-build.js @@ -1,3 +1,14 @@ +const fs = require('fs') + +const { generateRawTsCompilerOptions } = require('./generate-raw-compiler-options') const { computePackageDigest } = require('./lib/bundle') +const { generatedPath } = require('./lib/paths') + +void (async () => { + const rawCompilerOptions = await generateRawTsCompilerOptions() + if (rawCompilerOptions !== fs.readFileSync(generatedPath, 'utf-8')) { + throw new Error('Tsconfig options have changed. The generated file should be regenerated') + } +})() computePackageDigest() diff --git a/scripts/clean-dist.js b/scripts/pre-build.js similarity index 100% rename from scripts/clean-dist.js rename to scripts/pre-build.js diff --git a/src/config/config-set.spec.ts b/src/config/config-set.spec.ts index 686eb64aa3..fdea8bc389 100644 --- a/src/config/config-set.spec.ts +++ b/src/config/config-set.spec.ts @@ -64,7 +64,6 @@ describe('parsedTsConfig', () => { expect(cs.parsedTsConfig.options).toMatchObject({ module: ts.ModuleKind.CommonJS, - rootDir: normalizeSlashes(resolve(__dirname, '..')), skipLibCheck: true, }) }) diff --git a/src/config/config-set.ts b/src/config/config-set.ts index 2753035a04..36a3f36d4d 100644 --- a/src/config/config-set.ts +++ b/src/config/config-set.ts @@ -11,13 +11,13 @@ import { existsSync, readFileSync } from 'fs' import { dirname, extname, isAbsolute, join, normalize, resolve } from 'path' -import type { Config } from '@jest/types' import { LogContexts, Logger } from 'bs-logger' import { globsToMatcher } from 'jest-util' import json5 from 'json5' import type { CompilerOptions, Diagnostic, FormatDiagnosticsHost, ParsedCommandLine } from 'typescript' import { DEFAULT_JEST_TEST_MATCH, JS_JSX_EXTENSIONS } from '../constants' +import type { RawCompilerOptions } from '../raw-compiler-options' import type { AstTransformer, AstTransformerDesc, @@ -121,7 +121,7 @@ export class ConfigSet { /** * @internal */ - private _jestCfg!: Config.ProjectConfig + private _jestCfg!: ProjectConfigTsJest /** * @internal */ @@ -173,7 +173,7 @@ export class ConfigSet { this.cwd = normalize(this.jestConfig.cwd ?? process.cwd()) this.rootDir = normalize(this.jestConfig.rootDir ?? this.cwd) const tsJestCfg = this.jestConfig.globals && this.jestConfig.globals['ts-jest'] - const options: TsJestGlobalOptions = tsJestCfg ?? Object.create(null) + const options = tsJestCfg ?? Object.create(null) // compiler module this.compilerModule = importer.typescript(ImportReasons.TsJest, options.compiler ?? 'typescript') // isolatedModules @@ -384,7 +384,7 @@ export class ConfigSet { /** * @internal */ - private _getAndResolveTsConfig(compilerOptions?: CompilerOptions, resolvedConfigFile?: string): ParsedCommandLine { + private _getAndResolveTsConfig(compilerOptions?: RawCompilerOptions, resolvedConfigFile?: string): ParsedCommandLine { const result = this._resolveTsConfig(compilerOptions, resolvedConfigFile) as ParsedCommandLine const { _overriddenCompilerOptions: forcedOptions } = this const finalOptions = result.options @@ -473,9 +473,9 @@ export class ConfigSet { * Load TypeScript configuration. Returns the parsed TypeScript config and any `tsconfig` options specified in ts-jest * Subclasses which extend `ConfigSet` can override the default behavior */ - protected _resolveTsConfig(compilerOptions?: CompilerOptions, resolvedConfigFile?: string): Record + protected _resolveTsConfig(compilerOptions?: RawCompilerOptions, resolvedConfigFile?: string): Record // eslint-disable-next-line no-dupe-class-members - protected _resolveTsConfig(compilerOptions?: CompilerOptions, resolvedConfigFile?: string): ParsedCommandLine { + protected _resolveTsConfig(compilerOptions?: RawCompilerOptions, resolvedConfigFile?: string): ParsedCommandLine { let config = { compilerOptions: Object.create(null) } let basePath = normalizeSlashes(this.rootDir) const ts = this.compilerModule diff --git a/src/generated-raw-compiler-options.d.ts b/src/generated-raw-compiler-options.d.ts new file mode 100644 index 0000000000..1a9294516b --- /dev/null +++ b/src/generated-raw-compiler-options.d.ts @@ -0,0 +1,530 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export interface RawCompilerOptions { + /** + * Instructs the TypeScript compiler how to compile .ts files. + */ + compilerOptions?: { + /** + * The character set of the input files. This setting is deprecated. + */ + charset?: string; + /** + * Enables building for project references. Requires TypeScript version 3.0 or later. + */ + composite?: boolean; + /** + * Generates corresponding d.ts files. + */ + declaration?: boolean; + /** + * Specify output directory for generated declaration files. Requires TypeScript version 2.0 or later. + */ + declarationDir?: string | null; + /** + * Show diagnostic information. This setting is deprecated. See `extendedDiagnostics.` + */ + diagnostics?: boolean; + /** + * Recommend IDE's to load referenced composite projects dynamically instead of loading them all immediately. Requires TypeScript version 4.0 or later. + */ + disableReferencedProjectLoad?: boolean; + /** + * Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. + */ + emitBOM?: boolean; + /** + * Only emit '.d.ts' declaration files. Requires TypeScript version 2.8 or later. + */ + emitDeclarationOnly?: boolean; + /** + * Enable incremental compilation. Requires TypeScript version 3.4 or later. + */ + incremental?: boolean; + /** + * Specify file to store incremental compilation information. Requires TypeScript version 3.4 or later. + */ + tsBuildInfoFile?: string; + /** + * Emit a single file with source maps instead of having a separate file. Requires TypeScript version 1.5 or later. + */ + inlineSourceMap?: boolean; + /** + * Emit the source alongside the sourcemaps within a single file; requires --inlineSourceMap to be set. Requires TypeScript version 1.5 or later. + */ + inlineSources?: boolean; + /** + * Specify JSX code generation: 'preserve', 'react', 'react-jsx', 'react-jsxdev' or 'react-native'. Requires TypeScript version 2.2 or later. + */ + jsx?: "preserve" | "react" | "react-jsx" | "react-jsxdev" | "react-native"; + /** + * Specify the object invoked for createElement and __spread when targeting 'react' JSX emit. + */ + reactNamespace?: string; + /** + * Specify the JSX factory function to use when targeting react JSX emit, e.g. 'React.createElement' or 'h'. Requires TypeScript version 2.1 or later. + */ + jsxFactory?: string; + /** + * Specify the JSX Fragment reference to use for fragements when targeting react JSX emit, e.g. 'React.Fragment' or 'Fragment'. Requires TypeScript version 4.0 or later. + */ + jsxFragmentFactory?: string; + /** + * Declare the module specifier to be used for importing the `jsx` and `jsxs` factory functions when using jsx as "react-jsx" or "react-jsxdev". Requires TypeScript version 4.1 or later. + */ + jsxImportSource?: string; + /** + * Print names of files part of the compilation. + */ + listFiles?: boolean; + /** + * Specify the location where debugger should locate map files instead of generated locations + */ + mapRoot?: string; + /** + * Specify module code generation: 'None', 'CommonJS', 'AMD', 'System', 'UMD', 'ES6', 'ES2015', 'ES2020' or 'ESNext'. Only 'AMD' and 'System' can be used in conjunction with --outFile. + */ + module?: ( + | ("CommonJS" | "AMD" | "System" | "UMD" | "ES6" | "ES2015" | "ES2020" | "ESNext" | "None") + | { + [k: string]: unknown; + } + ) & + string; + /** + * Specifies module resolution strategy: 'node' (Node) or 'classic' (TypeScript pre 1.6) . + */ + moduleResolution?: ( + | ("Classic" | "Node") + | { + [k: string]: unknown; + } + ) & + string; + /** + * Specifies the end of line sequence to be used when emitting files: 'crlf' (Windows) or 'lf' (Unix). Requires TypeScript version 1.5 or later. + */ + newLine?: ( + | ("crlf" | "lf") + | { + [k: string]: unknown; + } + ) & + string; + /** + * Do not emit output. + */ + noEmit?: boolean; + /** + * Do not generate custom helper functions like __extends in compiled output. Requires TypeScript version 1.5 or later. + */ + noEmitHelpers?: boolean; + /** + * Do not emit outputs if any type checking errors were reported. Requires TypeScript version 1.4 or later. + */ + noEmitOnError?: boolean; + /** + * Warn on expressions and declarations with an implied 'any' type. Enabling this setting is recommended. + */ + noImplicitAny?: boolean; + /** + * Raise error on 'this' expressions with an implied any type. Enabling this setting is recommended. Requires TypeScript version 2.0 or later. + */ + noImplicitThis?: boolean; + /** + * Report errors on unused locals. Requires TypeScript version 2.0 or later. + */ + noUnusedLocals?: boolean; + /** + * Report errors on unused parameters. Requires TypeScript version 2.0 or later. + */ + noUnusedParameters?: boolean; + /** + * Do not include the default library file (lib.d.ts). + */ + noLib?: boolean; + /** + * Do not add triple-slash references or module import targets to the list of compiled files. + */ + noResolve?: boolean; + /** + * Disable strict checking of generic signatures in function types. Requires TypeScript version 2.4 or later. + */ + noStrictGenericChecks?: boolean; + /** + * Use `skipLibCheck` instead. Skip type checking of default library declaration files. + */ + skipDefaultLibCheck?: boolean; + /** + * Skip type checking of declaration files. Enabling this setting is recommended. Requires TypeScript version 2.0 or later. + */ + skipLibCheck?: boolean; + /** + * Concatenate and emit output to single file. + */ + outFile?: string; + /** + * Redirect output structure to the directory. + */ + outDir?: string; + /** + * Do not erase const enum declarations in generated code. + */ + preserveConstEnums?: boolean; + /** + * Do not resolve symlinks to their real path; treat a symlinked file like a real one. + */ + preserveSymlinks?: boolean; + /** + * Keep outdated console output in watch mode instead of clearing the screen. + */ + preserveWatchOutput?: boolean; + /** + * Stylize errors and messages using color and context (experimental). + */ + pretty?: boolean; + /** + * Do not emit comments to output. + */ + removeComments?: boolean; + /** + * Specifies the root directory of input files. Use to control the output directory structure with --outDir. + */ + rootDir?: string; + /** + * Unconditionally emit imports for unresolved files. + */ + isolatedModules?: boolean; + /** + * Generates corresponding '.map' file. + */ + sourceMap?: boolean; + /** + * Specifies the location where debugger should locate TypeScript files instead of source locations. + */ + sourceRoot?: string; + /** + * Suppress excess property checks for object literals. It is recommended to use @ts-ignore comments instead of enabling this setting. + */ + suppressExcessPropertyErrors?: boolean; + /** + * Suppress noImplicitAny errors for indexing objects lacking index signatures. It is recommended to use @ts-ignore comments instead of enabling this setting. + */ + suppressImplicitAnyIndexErrors?: boolean; + /** + * Do not emit declarations for code that has an '@internal' annotation. + */ + stripInternal?: boolean; + /** + * Specify ECMAScript target version: 'ES3', 'ES5', 'ES6'/'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ESNext' + */ + target?: ( + | ("ES3" | "ES5" | "ES6" | "ES2015" | "ES2016" | "ES2017" | "ES2018" | "ES2019" | "ES2020" | "ESNext") + | { + [k: string]: unknown; + } + ) & + string; + /** + * Watch input files. + */ + watch?: boolean; + /** + * Specify the polling strategy to use when the system runs out of or doesn't support native file watchers. Requires TypeScript version 3.8 or later. + */ + fallbackPolling?: "fixedPollingInterval" | "priorityPollingInterval" | "dynamicPriorityPolling"; + /** + * Specify the strategy for watching directories under systems that lack recursive file-watching functionality. Requires TypeScript version 3.8 or later. + */ + watchDirectory?: "useFsEvents" | "fixedPollingInterval" | "dynamicPriorityPolling"; + /** + * Specify the strategy for watching individual files. Requires TypeScript version 3.8 or later. + */ + watchFile?: + | "fixedPollingInterval" + | "priorityPollingInterval" + | "dynamicPriorityPolling" + | "useFsEvents" + | "useFsEventsOnParentDirectory"; + /** + * Enables experimental support for ES7 decorators. + */ + experimentalDecorators?: boolean; + /** + * Emit design-type metadata for decorated declarations in source. + */ + emitDecoratorMetadata?: boolean; + /** + * Do not report errors on unused labels. Requires TypeScript version 1.8 or later. + */ + allowUnusedLabels?: boolean; + /** + * Report error when not all code paths in function return a value. Requires TypeScript version 1.8 or later. + */ + noImplicitReturns?: boolean; + /** + * Add `undefined` to an un-declared field in a type. Requires TypeScript version 4.1 or later. + */ + noUncheckedIndexedAccess?: boolean; + /** + * Report errors for fallthrough cases in switch statement. Requires TypeScript version 1.8 or later. + */ + noFallthroughCasesInSwitch?: boolean; + /** + * Do not report errors on unreachable code. Requires TypeScript version 1.8 or later. + */ + allowUnreachableCode?: boolean; + /** + * Disallow inconsistently-cased references to the same file. Enabling this setting is recommended. + */ + forceConsistentCasingInFileNames?: boolean; + /** + * Emit a v8 CPI profile during the compiler run, which may provide insight into slow builds. Requires TypeScript version 3.7 or later. + */ + generateCpuProfile?: string; + /** + * Base directory to resolve non-relative module names. + */ + baseUrl?: string; + /** + * Specify path mapping to be computed relative to baseUrl option. + */ + paths?: { + [k: string]: string[]; + }; + /** + * List of TypeScript language server plugins to load. Requires TypeScript version 2.3 or later. + */ + plugins?: { + /** + * Plugin name. + */ + name?: string; + [k: string]: unknown; + }[]; + /** + * Specify list of root directories to be used when resolving modules. Requires TypeScript version 2.0 or later. + */ + rootDirs?: string[]; + /** + * Specify list of directories for type definition files to be included. Requires TypeScript version 2.0 or later. + */ + typeRoots?: string[]; + /** + * Type declaration files to be included in compilation. Requires TypeScript version 2.0 or later. + */ + types?: string[]; + /** + * Enable tracing of the name resolution process. Requires TypeScript version 2.0 or later. + */ + traceResolution?: boolean; + /** + * Allow javascript files to be compiled. Requires TypeScript version 1.8 or later. + */ + allowJs?: boolean; + /** + * Do not truncate error messages. This setting is deprecated. + */ + noErrorTruncation?: boolean; + /** + * Allow default imports from modules with no default export. This does not affect code emit, just typechecking. Requires TypeScript version 1.8 or later. + */ + allowSyntheticDefaultImports?: boolean; + /** + * Do not emit 'use strict' directives in module output. + */ + noImplicitUseStrict?: boolean; + /** + * Enable to list all emitted files. Requires TypeScript version 2.0 or later. + */ + listEmittedFiles?: boolean; + /** + * Disable size limit for JavaScript project. Requires TypeScript version 2.0 or later. + */ + disableSizeLimit?: boolean; + /** + * List of library files to be included in the compilation. Possible values are: 'ES5', 'ES6', 'ES2015', 'ES7', 'ES2016', 'ES2017', 'ES2018', 'ESNext', 'DOM', 'DOM.Iterable', 'WebWorker', 'ScriptHost', 'ES2015.Core', 'ES2015.Collection', 'ES2015.Generator', 'ES2015.Iterable', 'ES2015.Promise', 'ES2015.Proxy', 'ES2015.Reflect', 'ES2015.Symbol', 'ES2015.Symbol.WellKnown', 'ES2016.Array.Include', 'ES2017.object', 'ES2017.Intl', 'ES2017.SharedMemory', 'ES2017.String', 'ES2017.TypedArrays', 'ES2018.Intl', 'ES2018.Promise', 'ES2018.RegExp', 'ESNext.AsyncIterable', 'ESNext.Array', 'ESNext.Intl', 'ESNext.Symbol'. Requires TypeScript version 2.0 or later. + */ + lib?: (( + | ( + | "ES5" + | "ES6" + | "ES2015" + | "ES2015.Collection" + | "ES2015.Core" + | "ES2015.Generator" + | "ES2015.Iterable" + | "ES2015.Promise" + | "ES2015.Proxy" + | "ES2015.Reflect" + | "ES2015.Symbol.WellKnown" + | "ES2015.Symbol" + | "ES2016" + | "ES2016.Array.Include" + | "ES2017" + | "ES2017.Intl" + | "ES2017.Object" + | "ES2017.SharedMemory" + | "ES2017.String" + | "ES2017.TypedArrays" + | "ES2018" + | "ES2018.AsyncGenerator" + | "ES2018.AsyncIterable" + | "ES2018.Intl" + | "ES2018.Promise" + | "ES2018.Regexp" + | "ES2019" + | "ES2019.Array" + | "ES2019.Object" + | "ES2019.String" + | "ES2019.Symbol" + | "ES2020" + | "ES2020.BigInt" + | "ES2020.Promise" + | "ES2020.String" + | "ES2020.Symbol.WellKnown" + | "ESNext" + | "ESNext.Array" + | "ESNext.AsyncIterable" + | "ESNext.BigInt" + | "ESNext.Intl" + | "ESNext.Promise" + | "ESNext.String" + | "ESNext.Symbol" + | "DOM" + | "DOM.Iterable" + | "ScriptHost" + | "WebWorker" + | "WebWorker.ImportScripts" + ) + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + | { + [k: string]: unknown; + } + ) & + string)[]; + /** + * Enable strict null checks. Enabling this setting is recommended. Requires TypeScript version 2.0 or later. + */ + strictNullChecks?: boolean; + /** + * The maximum dependency depth to search under node_modules and load JavaScript files. Only applicable with --allowJs. + */ + maxNodeModuleJsDepth?: number; + /** + * Import emit helpers (e.g. '__extends', '__rest', etc..) from tslib. Requires TypeScript version 2.1 or later. + */ + importHelpers?: boolean; + /** + * This flag controls how imports work. When set to `remove`, imports that only reference types are dropped. When set to `preserve`, imports are never dropped. When set to `error`, imports that can be replaced with `import type` will result in a compiler error. Requires TypeScript version 3.8 or later. + */ + importsNotUsedAsValues?: "remove" | "preserve" | "error"; + /** + * Parse in strict mode and emit 'use strict' for each source file. Requires TypeScript version 2.1 or later. + */ + alwaysStrict?: boolean; + /** + * Enable all strict type checking options. Enabling this setting is recommended. Requires TypeScript version 2.3 or later. + */ + strict?: boolean; + /** + * Enable stricter checking of of the `bind`, `call`, and `apply` methods on functions. Enabling this setting is recommended. Requires TypeScript version 3.2 or later. + */ + strictBindCallApply?: boolean; + /** + * Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. Requires TypeScript version 2.3 or later. + */ + downlevelIteration?: boolean; + /** + * Report errors in .js files. Requires TypeScript version 2.3 or later. + */ + checkJs?: boolean; + /** + * Disable bivariant parameter checking for function types. Enabling this setting is recommended. Requires TypeScript version 2.6 or later. + */ + strictFunctionTypes?: boolean; + /** + * Ensure non-undefined class properties are initialized in the constructor. Enabling this setting is recommended. Requires TypeScript version 2.7 or later. + */ + strictPropertyInitialization?: boolean; + /** + * Emit '__importStar' and '__importDefault' helpers for runtime babel ecosystem compatibility and enable '--allowSyntheticDefaultImports' for typesystem compatibility. Enabling this setting is recommended. Requires TypeScript version 2.7 or later. + */ + esModuleInterop?: boolean; + /** + * Allow accessing UMD globals from modules. Requires TypeScript version 3.5 or later. + */ + allowUmdGlobalAccess?: boolean; + /** + * Resolve 'keyof' to string valued property names only (no numbers or symbols). This setting is deprecated. Requires TypeScript version 2.9 or later. + */ + keyofStringsOnly?: boolean; + /** + * Emit ECMAScript standard class fields. Requires TypeScript version 3.7 or later. + */ + useDefineForClassFields?: boolean; + /** + * Generates a sourcemap for each corresponding '.d.ts' file. Requires TypeScript version 2.9 or later. + */ + declarationMap?: boolean; + /** + * Include modules imported with '.json' extension. Requires TypeScript version 2.9 or later. + */ + resolveJsonModule?: boolean; + /** + * Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it. Requires TypeScript version 3.8 or later. + */ + assumeChangesOnlyAffectDirectDependencies?: boolean; + /** + * Show verbose diagnostic information. + */ + extendedDiagnostics?: boolean; + /** + * Print names of files that are part of the compilation and then stop processing. + */ + listFilesOnly?: boolean; + /** + * Disable use of source files instead of declaration files from referenced projects. Requires TypeScript version 3.7 or later. + */ + disableSourceOfProjectReferenceRedirect?: boolean; + /** + * Disable solution searching for this project. Requires TypeScript version 3.8 or later. + */ + disableSolutionSearching?: boolean; + [k: string]: unknown; + }; +} diff --git a/src/raw-compiler-options.ts b/src/raw-compiler-options.ts new file mode 100644 index 0000000000..44dfcea6db --- /dev/null +++ b/src/raw-compiler-options.ts @@ -0,0 +1,160 @@ +export interface RawCompilerOptions { + charset?: string + composite?: boolean + declaration?: boolean + declarationDir?: string | null + diagnostics?: boolean + disableReferencedProjectLoad?: boolean + emitBOM?: boolean + emitDeclarationOnly?: boolean + incremental?: boolean + tsBuildInfoFile?: string + inlineSourceMap?: boolean + inlineSources?: boolean + jsx?: 'preserve' | 'react' | 'react-jsx' | 'react-jsxdev' | 'react-native' + reactNamespace?: string + jsxFactory?: string + jsxFragmentFactory?: string + jsxImportSource?: string + listFiles?: boolean + mapRoot?: string + module?: 'CommonJS' | 'AMD' | 'System' | 'UMD' | 'ES6' | 'ES2015' | 'ES2020' | 'ESNext' | 'None' | string + moduleResolution?: 'Classic' | 'Node' + newLine?: 'crlf' | 'lf' + noEmit?: boolean + noEmitHelpers?: boolean + noEmitOnError?: boolean + noImplicitAny?: boolean + noImplicitThis?: boolean + noUnusedLocals?: boolean + noUnusedParameters?: boolean + noLib?: boolean + noResolve?: boolean + noStrictGenericChecks?: boolean + skipDefaultLibCheck?: boolean + skipLibCheck?: boolean + outFile?: string + outDir?: string + preserveConstEnums?: boolean + preserveSymlinks?: boolean + preserveWatchOutput?: boolean + pretty?: boolean + removeComments?: boolean + rootDir?: string + isolatedModules?: boolean + sourceMap?: boolean + sourceRoot?: string + suppressExcessPropertyErrors?: boolean + suppressImplicitAnyIndexErrors?: boolean + target?: 'ES3' | 'ES5' | 'ES6' | 'ES2015' | 'ES2016' | 'ES2017' | 'ES2018' | 'ES2019' | 'ES2020' | 'ESNext' | string + watch?: boolean + fallbackPolling?: 'fixedPollingInterval' | 'priorityPollingInterval' | 'dynamicPriorityPolling' + watchDirectory?: 'useFsEvents' | 'fixedPollingInterval' | 'dynamicPriorityPolling' + watchFile?: + | 'fixedPollingInterval' + | 'priorityPollingInterval' + | 'dynamicPriorityPolling' + | 'useFsEvents' + | 'useFsEventsOnParentDirectory' + experimentalDecorators?: boolean + emitDecoratorMetadata?: boolean + allowUnusedLabels?: boolean + noImplicitReturns?: boolean + noUncheckedIndexedAccess?: boolean + noFallthroughCasesInSwitch?: boolean + allowUnreachableCode?: boolean + forceConsistentCasingInFileNames?: boolean + generateCpuProfile?: string + baseUrl?: string + paths?: { + [k: string]: string[] + } + plugins?: { + name?: string + [k: string]: unknown + }[] + rootDirs?: string[] + typeRoots?: string[] + types?: string[] + traceResolution?: boolean + allowJs?: boolean + noErrorTruncation?: boolean + allowSyntheticDefaultImports?: boolean + noImplicitUseStrict?: boolean + listEmittedFiles?: boolean + disableSizeLimit?: boolean + lib?: ( + | 'ES5' + | 'ES6' + | 'ES2015' + | 'ES2015.Collection' + | 'ES2015.Core' + | 'ES2015.Generator' + | 'ES2015.Iterable' + | 'ES2015.Promise' + | 'ES2015.Proxy' + | 'ES2015.Reflect' + | 'ES2015.Symbol.WellKnown' + | 'ES2015.Symbol' + | 'ES2016' + | 'ES2016.Array.Include' + | 'ES2017' + | 'ES2017.Intl' + | 'ES2017.Object' + | 'ES2017.SharedMemory' + | 'ES2017.String' + | 'ES2017.TypedArrays' + | 'ES2018' + | 'ES2018.AsyncGenerator' + | 'ES2018.AsyncIterable' + | 'ES2018.Intl' + | 'ES2018.Promise' + | 'ES2018.Regexp' + | 'ES2019' + | 'ES2019.Array' + | 'ES2019.Object' + | 'ES2019.String' + | 'ES2019.Symbol' + | 'ES2020' + | 'ES2020.BigInt' + | 'ES2020.Promise' + | 'ES2020.String' + | 'ES2020.Symbol.WellKnown' + | 'ESNext' + | 'ESNext.Array' + | 'ESNext.AsyncIterable' + | 'ESNext.BigInt' + | 'ESNext.Intl' + | 'ESNext.Promise' + | 'ESNext.String' + | 'ESNext.Symbol' + | 'DOM' + | 'DOM.Iterable' + | 'ScriptHost' + | 'WebWorker' + | 'WebWorker.ImportScripts' + )[] + strictNullChecks?: boolean + maxNodeModuleJsDepth?: number + importHelpers?: boolean + importsNotUsedAsValues?: 'remove' | 'preserve' | 'error' + alwaysStrict?: boolean + strict?: boolean + strictBindCallApply?: boolean + downlevelIteration?: boolean + checkJs?: boolean + strictFunctionTypes?: boolean + strictPropertyInitialization?: boolean + esModuleInterop?: boolean + allowUmdGlobalAccess?: boolean + keyofStringsOnly?: boolean + useDefineForClassFields?: boolean + declarationMap?: boolean + resolveJsonModule?: boolean + assumeChangesOnlyAffectDirectDependencies?: boolean + extendedDiagnostics?: boolean + listFilesOnly?: boolean + disableSourceOfProjectReferenceRedirect?: boolean + disableSolutionSearching?: boolean + [k: string]: unknown +} diff --git a/src/types.ts b/src/types.ts index 3673ac44f4..8f708dd632 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,6 +4,7 @@ import type * as _babel from 'babel__core' import type * as _ts from 'typescript' import type { ConfigSet } from './config/config-set' +import type { RawCompilerOptions } from './raw-compiler-options' declare module '@jest/types' { // eslint-disable-next-line @typescript-eslint/no-namespace @@ -60,7 +61,7 @@ export interface TsJestGlobalOptions { * * @default undefined uses the default tsconfig file */ - tsconfig?: boolean | string | _ts.CompilerOptions + tsconfig?: boolean | string | RawCompilerOptions /** * Compiles files as isolated modules (disables some features and type-checking) @@ -144,14 +145,6 @@ export interface TsJestGlobalOptions { useESM?: boolean } -export interface GlobalConfigTsJest extends Config.ConfigGlobals { - 'ts-jest': TsJestGlobalOptions -} - -export interface InitialOptionsTsJest extends Config.InitialOptions { - globals?: GlobalConfigTsJest -} - interface TsJestConfig$tsConfig$file { kind: 'file' value: string | undefined @@ -191,16 +184,26 @@ export interface TsJestConfig { stringifyContentPathRegex: string | undefined } +/** + * For transformers which extends `ts-jest` + */ export interface ProjectConfigTsJest extends Config.ProjectConfig { - globals: { - 'ts-jest': TsJestGlobalOptions - } + globals: GlobalConfigTsJest } - export interface TransformOptionsTsJest extends TransformOptions { config: ProjectConfigTsJest } +/** + * For typings in `jest.config.ts` + */ +export interface GlobalConfigTsJest extends Config.ConfigGlobals { + 'ts-jest': TsJestGlobalOptions +} +export interface InitialOptionsTsJest extends Config.InitialOptions { + globals?: GlobalConfigTsJest +} + export type ResolvedModulesMap = Map | undefined /** diff --git a/tsconfig.build.json b/tsconfig.build.json index 6263e94887..79255ad49b 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -9,8 +9,7 @@ "declaration": true, "removeComments": true, "stripInternal": true, - "outDir": "dist", - "rootDir": "src" + "outDir": "dist" }, "include": ["src"], "exclude": [