From e2e5f955a61bf79bf013898fcd19e8ce7607439f Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Wed, 9 Feb 2022 17:01:34 +0100 Subject: [PATCH] feat: bundle type definitions into a single file per module --- CHANGELOG.md | 1 + package.json | 5 +- packages/jest-util/src/index.ts | 8 +- scripts/buildTs.js | 15 +- scripts/bundleTs.js | 201 ++++++++++++++++++++++++++ yarn.lock | 248 ++++++++++++++++++++++++++++++-- 6 files changed, 456 insertions(+), 22 deletions(-) create mode 100644 scripts/bundleTs.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e68a5b8bd72..d6ac03665cef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - `[*]` [**BREAKING**] Drop support for Node v10 and v15 and target first LTS `16.13.0` ([#12220](https://github.com/facebook/jest/pull/12220)) - `[*]` [**BREAKING**] Drop support for `typescript@3.8`, minimum version is now `4.2` ([#11142](https://github.com/facebook/jest/pull/11142)) +- `[*]` Bundle all `.d.ts` files into a single `index.d.ts` per module ([#12345](https://github.com/facebook/jest/pull/12345)) - `[expect]` [**BREAKING**] Remove support for importing `build/utils` ([#12323](https://github.com/facebook/jest/pull/12323)) - `[@jest/core]` Use `index.ts` instead of `jest.ts` as main export ([#12329](https://github.com/facebook/jest/pull/12329)) - `[jest]` Use `index.ts` instead of `jest.ts` as main export ([#12329](https://github.com/facebook/jest/pull/12329)) diff --git a/package.json b/package.json index e38781a2e746..6430a8f14e2c 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@crowdin/cli": "^3.5.2", "@jest/globals": "workspace:*", "@jest/test-utils": "workspace:*", + "@microsoft/api-extractor": "^7.19.4", "@tsconfig/node12": "^1.0.9", "@tsd/typescript": "~4.5.5", "@types/babel__core": "^7.0.0", @@ -64,6 +65,7 @@ "mock-fs": "^4.4.1", "netlify-plugin-cache": "^1.0.3", "node-notifier": "^10.0.0", + "pkg-dir": "^5.0.0", "prettier": "^2.1.1", "progress": "^2.0.0", "promise": "^8.0.2", @@ -84,9 +86,10 @@ }, "scripts": { "build-clean": "rimraf './packages/*/build' './packages/*/dist' './packages/*/tsconfig.tsbuildinfo'", - "build": "yarn build:js && yarn build:ts", + "build": "yarn build:js && yarn build:ts && yarn bundle:ts", "build:js": "node ./scripts/build.js", "build:ts": "node ./scripts/buildTs.js", + "bundle:ts": "node ./scripts/bundleTs.js", "check-copyright-headers": "node ./scripts/checkCopyrightHeaders.js", "clean-all": "yarn clean-e2e && yarn build-clean && rimraf './packages/*/node_modules' && rimraf './node_modules'", "clean-e2e": "node ./scripts/cleanE2e.js", diff --git a/packages/jest-util/src/index.ts b/packages/jest-util/src/index.ts index bbfcbbe85ca0..da313207feb8 100644 --- a/packages/jest-util/src/index.ts +++ b/packages/jest-util/src/index.ts @@ -5,6 +5,10 @@ * LICENSE file in the root directory of this source tree. */ +// need to do this for api-extractor: https://github.com/microsoft/rushstack/issues/2780 +import * as preRunMessage from './preRunMessage'; +import * as specialChars from './specialChars'; + export {default as clearLine} from './clearLine'; export {default as createDirectory} from './createDirectory'; export {default as ErrorWithStack} from './ErrorWithStack'; @@ -15,11 +19,11 @@ export {default as isPromise} from './isPromise'; export {default as setGlobal} from './setGlobal'; export {default as deepCyclicCopy} from './deepCyclicCopy'; export {default as convertDescriptorToString} from './convertDescriptorToString'; -export * as specialChars from './specialChars'; +export {specialChars}; export {default as replacePathSepForGlob} from './replacePathSepForGlob'; export {default as testPathPatternToRegExp} from './testPathPatternToRegExp'; export {default as globsToMatcher} from './globsToMatcher'; -export * as preRunMessage from './preRunMessage'; +export {preRunMessage}; export {default as pluralize} from './pluralize'; export {default as formatTime} from './formatTime'; export {default as tryRealpath} from './tryRealpath'; diff --git a/scripts/buildTs.js b/scripts/buildTs.js index 035623289b76..5faf8bd38bd0 100644 --- a/scripts/buildTs.js +++ b/scripts/buildTs.js @@ -11,7 +11,6 @@ const assert = require('assert'); const fs = require('fs'); const os = require('os'); const path = require('path'); -const util = require('util'); const chalk = require('chalk'); const execa = require('execa'); const globby = require('globby'); @@ -19,8 +18,6 @@ const stripJsonComments = require('strip-json-comments'); const throat = require('throat'); const {getPackages} = require('./buildUtils'); -const readFilePromise = util.promisify(fs.readFile); - (async () => { const packages = getPackages(); @@ -124,6 +121,9 @@ const readFilePromise = util.promisify(fs.readFile); // we want to limit the number of processes we spawn const cpus = Math.max(1, os.cpus().length - 1); + const typesReferenceDirective = '/// `; + try { await Promise.all( packagesWithTs.map( @@ -134,12 +134,12 @@ const readFilePromise = util.promisify(fs.readFile); const files = await Promise.all( globbed.map(file => - Promise.all([file, readFilePromise(file, 'utf8')]), + Promise.all([file, fs.promises.readFile(file, 'utf8')]), ), ); const filesWithTypeReferences = files - .filter(([, content]) => content.includes('/// content.includes(typesReferenceDirective)) .filter(hit => hit.length > 0); const filesWithReferences = filesWithTypeReferences @@ -147,8 +147,9 @@ const readFilePromise = util.promisify(fs.readFile); name, content .split('\n') - .filter(line => line !== '/// ') - .filter(line => line.includes('/// line.trim()) + .filter(line => line.includes(typesReferenceDirective)) + .filter(line => line !== typesNodeReferenceDirective) .join('\n'), ]) .filter(([, content]) => content.length > 0) diff --git a/scripts/bundleTs.js b/scripts/bundleTs.js new file mode 100644 index 000000000000..bdf20f05cc56 --- /dev/null +++ b/scripts/bundleTs.js @@ -0,0 +1,201 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const { + CompilerState, + Extractor, + ExtractorConfig, +} = require('@microsoft/api-extractor'); +const chalk = require('chalk'); +const {sync: pkgDir} = require('pkg-dir'); +const prettier = require('prettier'); +const rimraf = require('rimraf'); +const {getPackages} = require('./buildUtils'); + +const prettierConfig = prettier.resolveConfig.sync( + __filename.replace(/\.js$/, '.d.ts'), +); + +const typescriptCompilerFolder = pkgDir(require.resolve('typescript')); + +const copyrightSnippet = ` +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +`.trim(); + +(async () => { + const packages = getPackages(); + + const packagesWithTs = packages.filter(p => + fs.existsSync(path.resolve(p.packageDir, 'tsconfig.json')), + ); + + const typesNodeReferenceDirective = '/// '; + + console.log(chalk.inverse(' Extracting TypeScript definition files ')); + + const sharedExtractorConfig = { + $schema: + 'https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json', + + apiReport: { + enabled: false, + }, + + /** + * A list of NPM package names whose exports should be treated as part of this package. + */ + bundledPackages: [], + + compiler: { + skipLibCheck: true, + }, + + docModel: { + enabled: false, + }, + + dtsRollup: { + enabled: true, + untrimmedFilePath: '/dist/index.d.ts', + }, + + messages: { + compilerMessageReporting: { + default: { + logLevel: 'warning', + }, + }, + + extractorMessageReporting: { + 'ae-forgotten-export': { + logLevel: 'none', + }, + 'ae-missing-release-tag': { + logLevel: 'none', + }, + default: { + logLevel: 'warning', + }, + }, + + tsdocMessageReporting: { + default: { + logLevel: 'none', + }, + }, + }, + + tsdocMetadata: { + enabled: false, + }, + }; + + await fs.promises.writeFile( + path.resolve(__dirname, '../api-extractor.json'), + JSON.stringify(sharedExtractorConfig, null, 2), + ); + + let compilerState; + + await Promise.all( + packagesWithTs.map(async ({packageDir, pkg}) => { + const configFile = path.resolve(packageDir, 'api-extractor.json'); + + await fs.promises.writeFile( + configFile, + JSON.stringify( + { + extends: '../../api-extractor.json', + mainEntryPointFilePath: path.resolve(packageDir, pkg.types), + projectFolder: packageDir, + }, + null, + 2, + ), + ); + const extractorConfig = ExtractorConfig.loadFileAndPrepare(configFile); + + if (!compilerState) { + compilerState = CompilerState.create(extractorConfig, { + additionalEntryPoints: packagesWithTs.map(({pkg, packageDir}) => + path.resolve(packageDir, pkg.types), + ), + typescriptCompilerFolder, + }); + } + + const extractorResult = Extractor.invoke(extractorConfig, { + compilerState, + localBuild: true, + showVerboseMessages: true, + typescriptCompilerFolder, + }); + + if (!extractorResult.succeeded || extractorResult.warningCount > 0) { + console.error( + chalk.inverse.red(' Unable to extract TypeScript definition files '), + ); + throw new Error( + `API Extractor completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`, + ); + } + + const filepath = extractorResult.extractorConfig.untrimmedFilePath; + + let definitionFile = await fs.promises.readFile(filepath, 'utf8'); + + rimraf.sync(path.resolve(packageDir, 'build/**/*.d.ts')); + rimraf.sync(path.resolve(packageDir, 'dist/')); + // this is invalid now, so remove it to not confuse `tsc` + rimraf.sync(path.resolve(packageDir, 'tsconfig.tsbuildinfo')); + + definitionFile = definitionFile.replace(/\r\n/g, '\n'); + + const hasNodeTypesReference = definitionFile.includes( + typesNodeReferenceDirective, + ); + + if (hasNodeTypesReference) { + definitionFile = [ + typesNodeReferenceDirective, + ...definitionFile.split(typesNodeReferenceDirective), + ].join('\n'); + } + + definitionFile = [ + copyrightSnippet, + ...definitionFile.split(copyrightSnippet), + ].join('\n'); + + const formattedContent = prettier.format(definitionFile, { + ...prettierConfig, + filepath, + }); + + await fs.promises.writeFile( + filepath.replace('/dist/', '/build/'), + formattedContent, + ); + }), + ); + + console.log( + chalk.inverse.green(' Successfully extracted TypeScript definition files '), + ); +})().catch(error => { + console.error('Got error', error.stack); + process.exitCode = 1; +}); diff --git a/yarn.lock b/yarn.lock index ae8000d76583..5cfa83389fe0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2608,6 +2608,7 @@ __metadata: "@crowdin/cli": ^3.5.2 "@jest/globals": "workspace:*" "@jest/test-utils": "workspace:*" + "@microsoft/api-extractor": ^7.19.4 "@tsconfig/node12": ^1.0.9 "@tsd/typescript": ~4.5.5 "@types/babel__core": ^7.0.0 @@ -2660,6 +2661,7 @@ __metadata: mock-fs: ^4.4.1 netlify-plugin-cache: ^1.0.3 node-notifier: ^10.0.0 + pkg-dir: ^5.0.0 prettier: ^2.1.1 progress: ^2.0.0 promise: ^8.0.2 @@ -3715,6 +3717,58 @@ __metadata: languageName: node linkType: hard +"@microsoft/api-extractor-model@npm:7.15.3": + version: 7.15.3 + resolution: "@microsoft/api-extractor-model@npm:7.15.3" + dependencies: + "@microsoft/tsdoc": 0.13.2 + "@microsoft/tsdoc-config": ~0.15.2 + "@rushstack/node-core-library": 3.45.0 + checksum: dfa706b1b2acac93c68afe0c7e119e45a95ab40e75b0d70fdb687ce263e22fd1a491a4f4ee1151d0ef059dfb35daef909b27f3608c67f542666623af6e953127 + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:^7.19.4": + version: 7.19.4 + resolution: "@microsoft/api-extractor@npm:7.19.4" + dependencies: + "@microsoft/api-extractor-model": 7.15.3 + "@microsoft/tsdoc": 0.13.2 + "@microsoft/tsdoc-config": ~0.15.2 + "@rushstack/node-core-library": 3.45.0 + "@rushstack/rig-package": 0.3.7 + "@rushstack/ts-command-line": 4.10.6 + colors: ~1.2.1 + lodash: ~4.17.15 + resolve: ~1.17.0 + semver: ~7.3.0 + source-map: ~0.6.1 + typescript: ~4.5.2 + bin: + api-extractor: bin/api-extractor + checksum: 15d1749e02053a7d70b43b87067b31055995bbe80acc888016612b8d61b6788e9f2619774982f7271c9c5271b512d1340fea609e4b001ab9e2347411d3c63fa2 + languageName: node + linkType: hard + +"@microsoft/tsdoc-config@npm:~0.15.2": + version: 0.15.2 + resolution: "@microsoft/tsdoc-config@npm:0.15.2" + dependencies: + "@microsoft/tsdoc": 0.13.2 + ajv: ~6.12.6 + jju: ~1.4.0 + resolve: ~1.19.0 + checksum: 85eb7808d4e4541199437f39e6aed235aaece0a6d0fd05c0b923067d494d20baca483fc6871880d09630f6d4e62b8bb99af0fde503eb2b2ded1b7ae5f74dfaf3 + languageName: node + linkType: hard + +"@microsoft/tsdoc@npm:0.13.2": + version: 0.13.2 + resolution: "@microsoft/tsdoc@npm:0.13.2" + checksum: 70948c5647495ef99752ff500e0f612c1fcf3476ea663ace19937e4d2f86fd78f0ad92ea5876d67e06b421f347d571b3d9e49c444935dc267768d5afd15581f8 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4208,6 +4262,45 @@ __metadata: languageName: node linkType: hard +"@rushstack/node-core-library@npm:3.45.0": + version: 3.45.0 + resolution: "@rushstack/node-core-library@npm:3.45.0" + dependencies: + "@types/node": 12.20.24 + colors: ~1.2.1 + fs-extra: ~7.0.1 + import-lazy: ~4.0.0 + jju: ~1.4.0 + resolve: ~1.17.0 + semver: ~7.3.0 + timsort: ~0.3.0 + z-schema: ~5.0.2 + checksum: 1dc9dd7a042b33d891d4174369f8a63e70c76a2a502ef0a2d49993639d9722ff34eb149da7f06cd16ad069aa0d6045df8df9be27ab38fdad0fbc0349787d08b3 + languageName: node + linkType: hard + +"@rushstack/rig-package@npm:0.3.7": + version: 0.3.7 + resolution: "@rushstack/rig-package@npm:0.3.7" + dependencies: + resolve: ~1.17.0 + strip-json-comments: ~3.1.1 + checksum: 3dceb4dbed159a9c54f97d91a38a4f0ec3219d9e33c3f3cad903a56bc20385849749b460168687334611d3af7bf210da05d794af97c665dfbf5b95aba56dd3cc + languageName: node + linkType: hard + +"@rushstack/ts-command-line@npm:4.10.6": + version: 4.10.6 + resolution: "@rushstack/ts-command-line@npm:4.10.6" + dependencies: + "@types/argparse": 1.0.38 + argparse: ~1.0.9 + colors: ~1.2.1 + string-argv: ~0.3.1 + checksum: a618104fa5076fa1d67163638d6741784dc298fc4768a126c9d0cc17801baca903ed712b42cd3f530ca25402d219bdfa1c880ed0e82d3b0a419c1cbd02589d9b + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.3": version: 4.1.3 resolution: "@sideway/address@npm:4.1.3" @@ -4504,6 +4597,13 @@ __metadata: languageName: node linkType: hard +"@types/argparse@npm:1.0.38": + version: 1.0.38 + resolution: "@types/argparse@npm:1.0.38" + checksum: 26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb + languageName: node + linkType: hard + "@types/aria-query@npm:^4.2.0": version: 4.2.2 resolution: "@types/aria-query@npm:4.2.2" @@ -4842,7 +4942,7 @@ __metadata: languageName: node linkType: hard -"@types/jsdom@*": +"@types/jsdom@npm:*": version: 16.2.14 resolution: "@types/jsdom@npm:16.2.14" dependencies: @@ -4958,6 +5058,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:12.20.24": + version: 12.20.24 + resolution: "@types/node@npm:12.20.24" + checksum: e7a13460e2f5b0b5a32c0f3af7daf1a05201552a66d542d3cc3b1ea8b52d4730250f9eb1961d755e31cfe5d03c78340911a6242657a0a9a17d6f7e341fc9f366 + languageName: node + linkType: hard + "@types/node@npm:^14.0.27": version: 14.18.10 resolution: "@types/node@npm:14.18.10" @@ -5773,7 +5880,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -6035,7 +6142,7 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": +"argparse@npm:^1.0.7, argparse@npm:~1.0.9": version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: @@ -7579,6 +7686,13 @@ __metadata: languageName: node linkType: hard +"colors@npm:~1.2.1": + version: 1.2.5 + resolution: "colors@npm:1.2.5" + checksum: b6e23de735f68b72d5cdf6fd854ca43d1b66d82dcf54bda0b788083b910164a040f2c4edf23c670d36a7a2d8f1b7d6e62e3292703e4642691e6ccaa1c62d8f74 + languageName: node + linkType: hard + "columnify@npm:^1.5.4": version: 1.5.4 resolution: "columnify@npm:1.5.4" @@ -7619,7 +7733,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.19.0, commander@npm:^2.20.0": +"commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.7.1": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e @@ -10566,6 +10680,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:~7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: ^4.1.2 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + languageName: node + linkType: hard + "fs-minipass@npm:^1.2.7": version: 1.2.7 resolution: "fs-minipass@npm:1.2.7" @@ -11753,6 +11878,13 @@ __metadata: languageName: node linkType: hard +"import-lazy@npm:~4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 + languageName: node + linkType: hard + "import-local@npm:^3.0.2": version: 3.0.3 resolution: "import-local@npm:3.0.3" @@ -12034,7 +12166,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": version: 2.8.1 resolution: "is-core-module@npm:2.8.1" dependencies: @@ -13352,6 +13484,13 @@ __metadata: languageName: node linkType: hard +"jju@npm:~1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 3790481bd2b7827dd6336e6e3dc2dcc6d425679ba7ebde7b679f61dceb4457ea0cda330972494de608571f4973c6dfb5f70fab6f3c5037dbab19ac449a60424f + languageName: node + linkType: hard + "joi@npm:^17.2.1, joi@npm:^17.4.0, joi@npm:^17.4.2": version: 17.5.0 resolution: "joi@npm:17.5.0" @@ -14014,6 +14153,13 @@ __metadata: languageName: node linkType: hard +"lodash.get@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.get@npm:4.4.2" + checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 + languageName: node + linkType: hard + "lodash.isequal@npm:^4.5.0": version: 4.5.0 resolution: "lodash.isequal@npm:4.5.0" @@ -14131,7 +14277,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0": +"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -16494,7 +16640,7 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.7": +"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a @@ -16630,6 +16776,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^5.0.0": + version: 5.0.0 + resolution: "pkg-dir@npm:5.0.0" + dependencies: + find-up: ^5.0.0 + checksum: b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 + languageName: node + linkType: hard + "pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" @@ -18725,6 +18880,25 @@ __metadata: languageName: node linkType: hard +"resolve@npm:~1.17.0": + version: 1.17.0 + resolution: "resolve@npm:1.17.0" + dependencies: + path-parse: ^1.0.6 + checksum: 9ceaf83b3429f2d7ff5d0281b8d8f18a1f05b6ca86efea7633e76b8f76547f33800799dfdd24434942dec4fbd9e651ed3aef577d9a6b5ec87ad89c1060e24759 + languageName: node + linkType: hard + +"resolve@npm:~1.19.0": + version: 1.19.0 + resolution: "resolve@npm:1.19.0" + dependencies: + is-core-module: ^2.1.0 + path-parse: ^1.0.6 + checksum: a05b356e47b85ad3613d9e2a39a824f3c27f4fcad9c9ff6c7cc71a2e314c5904a90ab37481ad0069d03cab9eaaac6eb68aca1bc3355fdb05f1045cd50e2aacea + languageName: node + linkType: hard + "resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.15.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin": version: 1.22.0 resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b" @@ -18738,6 +18912,25 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@~1.17.0#~builtin": + version: 1.17.0 + resolution: "resolve@patch:resolve@npm%3A1.17.0#~builtin::version=1.17.0&hash=07638b" + dependencies: + path-parse: ^1.0.6 + checksum: 6fd799f282ddf078c4bc20ce863e3af01fa8cb218f0658d9162c57161a2dbafe092b13015b9a4c58d0e1e801cf7aa7a4f13115fea9db98c3f9a0c43e429bad6f + languageName: node + linkType: hard + +"resolve@patch:resolve@~1.19.0#~builtin": + version: 1.19.0 + resolution: "resolve@patch:resolve@npm%3A1.19.0#~builtin::version=1.19.0&hash=07638b" + dependencies: + is-core-module: ^2.1.0 + path-parse: ^1.0.6 + checksum: 2443b94d347e6946c87c85faf13071f605e609e0b54784829b0ed2b917d050bfc1cbaf4ecc6453f224cfa7d0c5dcd97cbb273454cd210bee68e4af15c1a5abc9 + languageName: node + linkType: hard + "responselike@npm:^1.0.2": version: 1.0.2 resolution: "responselike@npm:1.0.2" @@ -19138,7 +19331,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": +"semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:~7.3.0": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -19901,6 +20094,13 @@ __metadata: languageName: node linkType: hard +"string-argv@npm:~0.3.1": + version: 0.3.1 + resolution: "string-argv@npm:0.3.1" + checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -20096,7 +20296,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -20508,7 +20708,7 @@ __metadata: languageName: node linkType: hard -"timsort@npm:^0.3.0": +"timsort@npm:^0.3.0, timsort@npm:~0.3.0": version: 0.3.0 resolution: "timsort@npm:0.3.0" checksum: 1a66cb897dacabd7dd7c91b7e2301498ca9e224de2edb9e42d19f5b17c4b6dc62a8d4cbc64f28be82aaf1541cb5a78ab49aa818f42a2989ebe049a64af731e2a @@ -20893,7 +21093,7 @@ __metadata: languageName: node linkType: hard -"typescript@*, typescript@npm:^4.0.2, typescript@npm:^4.0.3": +"typescript@*, typescript@npm:^4.0.2, typescript@npm:^4.0.3, typescript@npm:~4.5.2": version: 4.5.5 resolution: "typescript@npm:4.5.5" bin: @@ -20903,7 +21103,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@*#~builtin, typescript@patch:typescript@^4.0.2#~builtin, typescript@patch:typescript@^4.0.3#~builtin": +"typescript@patch:typescript@*#~builtin, typescript@patch:typescript@^4.0.2#~builtin, typescript@patch:typescript@^4.0.3#~builtin, typescript@patch:typescript@~4.5.2#~builtin": version: 4.5.5 resolution: "typescript@patch:typescript@npm%3A4.5.5#~builtin::version=4.5.5&hash=493e53" bin: @@ -21520,6 +21720,13 @@ __metadata: languageName: node linkType: hard +"validator@npm:^13.7.0": + version: 13.7.0 + resolution: "validator@npm:13.7.0" + checksum: 2b83283de1222ca549a7ef57f46e8d49c6669213348db78b7045bce36a3b5843ff1e9f709ebf74574e06223461ee1f264f8cc9a26a0060a79a27de079d8286ef + languageName: node + linkType: hard + "value-equal@npm:^1.0.1": version: 1.0.1 resolution: "value-equal@npm:1.0.1" @@ -22572,6 +22779,23 @@ __metadata: languageName: node linkType: hard +"z-schema@npm:~5.0.2": + version: 5.0.2 + resolution: "z-schema@npm:5.0.2" + dependencies: + commander: ^2.7.1 + lodash.get: ^4.4.2 + lodash.isequal: ^4.5.0 + validator: ^13.7.0 + dependenciesMeta: + commander: + optional: true + bin: + z-schema: bin/z-schema + checksum: 084b2f16043ac0a892914ee29cc0b4fafd9338133eec0345cd6ced25e814f647fa67be1090ad5f606759c2c1f2f8c28127960ba187f437f1caf6fb8cd45d7336 + languageName: node + linkType: hard + "zone.js@npm:~0.11.3": version: 0.11.4 resolution: "zone.js@npm:0.11.4"