From 4a049e63a94cdef2de07b87eb1df62201496028d Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Tue, 13 Oct 2020 15:53:21 -0700 Subject: [PATCH] new: Add new TypesArtifact for generating a single TS declaration." --- .gitignore | 1 + api-extractor.json | 44 ++++++++++ package.json | 4 +- src/Packemon.ts | 6 ++ src/TypesArtifact.ts | 64 ++++++++++++++ src/commands/Distribute.tsx | 4 + src/components/ArtifactRow.tsx | 16 +++- src/components/Build.tsx | 24 ++++++ src/components/BundleBuild.tsx | 16 ++++ src/components/BundleBuilds.tsx | 32 ------- src/index.ts | 4 + src/types.ts | 1 + yarn.lock | 144 ++++++++++++++++++++++++++++++-- 13 files changed, 318 insertions(+), 42 deletions(-) create mode 100644 api-extractor.json create mode 100644 src/TypesArtifact.ts create mode 100644 src/components/Build.tsx create mode 100644 src/components/BundleBuild.tsx delete mode 100644 src/components/BundleBuilds.tsx diff --git a/.gitignore b/.gitignore index 39dc97a2e..f00876eef 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ coverage/ build/ cjs/ dist/ +dts/ esm/ lib/ mjs/ diff --git a/api-extractor.json b/api-extractor.json new file mode 100644 index 000000000..4183eddf4 --- /dev/null +++ b/api-extractor.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + // "extends": "my-package/include/api-extractor-base.json" + "projectFolder": ".", + "mainEntryPointFilePath": "/dts-build/index.d.ts", + "bundledPackages": [], + "compiler": { + "tsconfigFilePath": "/tsconfig.json" + }, + "apiReport": { + "enabled": false + }, + "docModel": { + "enabled": false + }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "/dts/index.d.ts", + "omitTrimmingComments": true + }, + "tsdocMetadata": { + "enabled": false + }, + "messages": { + "compilerMessageReporting": { + "default": { + "logLevel": "warning" + } + }, + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + }, + "ae-missing-release-tag": { + "logLevel": "none" + } + }, + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + } + } + } +} diff --git a/package.json b/package.json index ab874d271..691d4042f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "author": "Miles Johnson", "license": "MIT", "main": "./lib/index.js", - "types": "./lib/index.d.ts", + "types": "./dts/index.d.ts", "bin": "./bin/packemon.js", "sideEffects": false, "engines": { @@ -76,11 +76,13 @@ "@boost/event": "^2.2.0", "@boost/pipeline": "^2.1.3", "@boost/terminal": "^2.1.0", + "@microsoft/api-extractor": "^7.10.4", "@rollup/plugin-babel": "^5.2.1", "@rollup/plugin-commonjs": "^15.1.0", "@rollup/plugin-node-resolve": "^9.0.0", "babel-plugin-transform-dev": "^2.0.1", "builtin-modules": "^3.1.0", + "execa": "^4.0.3", "filesize": "^6.1.0", "fs-extra": "^9.0.1", "ink": "^3.0.7", diff --git a/src/Packemon.ts b/src/Packemon.ts index 4e621487b..c4aa967e6 100644 --- a/src/Packemon.ts +++ b/src/Packemon.ts @@ -16,6 +16,7 @@ import Package from './Package'; import Project from './Project'; import Artifact from './Artifact'; import BundleArtifact from './BundleArtifact'; +import TypesArtifact from './TypesArtifact'; import { ArtifactFlags, BrowserFormat, @@ -81,6 +82,7 @@ export default class Packemon extends Contract { addExports: bool(), checkLicenses: bool(), concurrency: number(1).gte(1), + generateDeclaration: bool(), skipPrivate: bool(), timeout: number().gte(0), }; @@ -189,6 +191,10 @@ export default class Packemon extends Contract { pkg.addArtifact(artifact); }); + if (this.options.generateDeclaration) { + pkg.addArtifact(new TypesArtifact(pkg)); + } + this.onPackageUpdate.emit([pkg]); }); } diff --git a/src/TypesArtifact.ts b/src/TypesArtifact.ts new file mode 100644 index 000000000..31e73f05f --- /dev/null +++ b/src/TypesArtifact.ts @@ -0,0 +1,64 @@ +import fs from 'fs-extra'; +import execa from 'execa'; +import { Extractor, ExtractorConfig } from '@microsoft/api-extractor'; +import Artifact from './Artifact'; + +export default class TypesArtifact extends Artifact { + async build(): Promise { + this.result = { + stats: {}, + time: 0, + }; + + const pkgPath = this.package.path; + const start = Date.now(); + + // Compile the current project to a DTS folder + await execa( + 'tsc', + [ + '--declaration', + '--declarationMap', + '--declarationDir', + 'dts-build', + '--emitDeclarationOnly', + ], + { + cwd: pkgPath.path(), + preferLocal: true, + }, + ); + + // Combine all DTS files into a single file + const result = Extractor.invoke( + ExtractorConfig.loadFileAndPrepare(pkgPath.append('api-extractor.json').path()), + { + localBuild: process.env.NODE_ENV !== 'production', + showVerboseMessages: false, + }, + ); + + if (!result.succeeded) { + console.error( + `Generated types completed with ${result.errorCount} errors and ${result.warningCount} warnings!`, + ); + } + + // Remove old build + await fs.remove(pkgPath.append('dts-build').path()); + + this.result.time = Date.now() - start; + } + + pack(): void { + this.package.contents.types = './dts/index.d.ts'; + } + + getLabel(): string { + return 'types'; + } + + getBuilds(): string[] { + return ['dts']; + } +} diff --git a/src/commands/Distribute.tsx b/src/commands/Distribute.tsx index 770432d2e..096462afd 100644 --- a/src/commands/Distribute.tsx +++ b/src/commands/Distribute.tsx @@ -21,6 +21,9 @@ export default class DistributeCommand extends Command { @Arg.Number('Number of builds to run in parallel') concurrency: number = os.cpus().length; + @Arg.Flag('Generate a single TypeScript declaration for each package') + generateDeclaration: boolean = false; + @Arg.Flag('Skip `private` packages from being built') skipPrivate: boolean = false; @@ -37,6 +40,7 @@ export default class DistributeCommand extends Command { addExports: this.addExports, checkLicenses: this.checkLicenses, concurrency: this.concurrency, + generateDeclaration: this.generateDeclaration, skipPrivate: this.skipPrivate, timeout: this.timeout, }); diff --git a/src/components/ArtifactRow.tsx b/src/components/ArtifactRow.tsx index 4238130e5..ecd3af146 100644 --- a/src/components/ArtifactRow.tsx +++ b/src/components/ArtifactRow.tsx @@ -6,7 +6,8 @@ import { Style } from '@boost/cli'; import Artifact from '../Artifact'; import { STATE_LABELS } from '../constants'; import BundleArtifact from '../BundleArtifact'; -import BundleBuilds from './BundleBuilds'; +import BundleBuild from './BundleBuild'; +import Build from './Build'; export interface ArtifactRowProps { artifact: Artifact; @@ -19,7 +20,18 @@ export default function ArtifactRow({ artifact }: ArtifactRowProps) { - {artifact instanceof BundleArtifact && } + {artifact.getBuilds().map((build) => { + const props = { + build, + state: artifact.state, + }; + + if (artifact instanceof BundleArtifact) { + return ; + } + + return ; + })} {artifact.isComplete() ? ( diff --git a/src/components/Build.tsx b/src/components/Build.tsx new file mode 100644 index 000000000..64325052b --- /dev/null +++ b/src/components/Build.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Box } from 'ink'; +import { Style } from '@boost/cli'; +import { figures } from '@boost/terminal'; +import { STATE_COLORS } from '../constants'; +import { ArtifactState } from '../types'; + +export interface BuildProps { + build: string; + children?: React.ReactNode; + state?: ArtifactState; +} + +export default function Build({ build, children, state = 'pending' }: BuildProps) { + return ( + + + + {children} + + ); +} diff --git a/src/components/BundleBuild.tsx b/src/components/BundleBuild.tsx new file mode 100644 index 000000000..2f35db450 --- /dev/null +++ b/src/components/BundleBuild.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import fileSize from 'filesize'; +import { Style } from '@boost/cli'; +import Build, { BuildProps } from './Build'; + +export interface BundleBuildProps extends BuildProps { + stats?: { size: number }; +} + +export default function BundleBuild({ stats, ...props }: BundleBuildProps) { + return ( + + {stats?.size && } + + ); +} diff --git a/src/components/BundleBuilds.tsx b/src/components/BundleBuilds.tsx deleted file mode 100644 index eebab4615..000000000 --- a/src/components/BundleBuilds.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import { Box } from 'ink'; -import size from 'filesize'; -import { Style } from '@boost/cli'; -import { figures } from '@boost/terminal'; -import BundleArtifact from '../BundleArtifact'; -import { STATE_COLORS } from '../constants'; - -export interface BundleBuildsProps { - artifact: BundleArtifact; -} - -export default function BundleBuilds({ artifact }: BundleBuildsProps) { - return ( - <> - {artifact.getBuilds().map((build) => { - const stats = artifact.result?.stats[build]; - - return ( - - - - {stats && } - - ); - })} - - ); -} diff --git a/src/index.ts b/src/index.ts index 3123a2266..7531d458e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,9 @@ import Packemon from './Packemon'; import Package from './Package'; import Project from './Project'; +import Artifact from './Artifact'; import BundleArtifact from './BundleArtifact'; +import TypesArtifact from './TypesArtifact'; import { run } from './run'; import { getBabelInputConfig, getBabelOutputConfig } from './babel/config'; @@ -14,7 +16,9 @@ export * from './constants'; export * from './types'; export { + Artifact, BundleArtifact, + TypesArtifact, getBabelInputConfig, getBabelOutputConfig, Package, diff --git a/src/types.ts b/src/types.ts index 8de3cfe2c..3946fded1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -49,6 +49,7 @@ export interface PackemonOptions { addExports: boolean; checkLicenses: boolean; concurrency: number; + generateDeclaration: boolean; skipPrivate: boolean; timeout: number; } diff --git a/yarn.lock b/yarn.lock index f3bf7eda0..f9ab76d00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1552,6 +1552,36 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@microsoft/api-extractor-model@7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.10.3.tgz#f687f324e940bd71e3e73b5b262a54594b0ea61c" + integrity sha512-etP4NbZpj+zPCuO3YYigIYXkXq5zYhfE3vo/hrCj1OOd/159HDbSHnEQrNWRVy5TR79RAzHvkYAwtLYKeYP8Ag== + dependencies: + "@microsoft/tsdoc" "0.12.19" + "@rushstack/node-core-library" "3.34.3" + +"@microsoft/api-extractor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.10.4.tgz#9055fab0a702d2d74eba05ff369c50012cf41176" + integrity sha512-vod9Y8IHhBtB3hcKiOe4OLi/hNeWtgRh/mxGrye5SeHaJpu5urAAA9CxLxBT8fDe+pyr1ipzlaiM/eMm2vXKgw== + dependencies: + "@microsoft/api-extractor-model" "7.10.3" + "@microsoft/tsdoc" "0.12.19" + "@rushstack/node-core-library" "3.34.3" + "@rushstack/rig-package" "0.2.4" + "@rushstack/ts-command-line" "4.7.3" + colors "~1.2.1" + lodash "~4.17.15" + resolve "~1.17.0" + semver "~7.3.0" + source-map "~0.6.1" + typescript "~3.9.7" + +"@microsoft/tsdoc@0.12.19": + version "0.12.19" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz#2173ccb92469aaf62031fa9499d21b16d07f9b57" + integrity sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A== + "@milesj/build-tool-config@^2.13.0": version "2.13.0" resolved "https://registry.yarnpkg.com/@milesj/build-tool-config/-/build-tool-config-2.13.0.tgz#fbdf8907bf9f4da8e736905b0db494500671d434" @@ -1679,6 +1709,40 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rushstack/node-core-library@3.34.3": + version "3.34.3" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.34.3.tgz#a59a1e452dcc79bd4e5f0840b4e9603551668f85" + integrity sha512-WNXHEk5/uoZsbrKzGpYUzDDymJvZarRkByab4uS1fbEcTSDFSVB9e0rREzCkU9yDAQlRutbFwiTXLu3LVR5F6w== + dependencies: + "@types/node" "10.17.13" + 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 "~3.18.3" + +"@rushstack/rig-package@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.2.4.tgz#259feb6637bedbfdc130d3a188ce85370e048743" + integrity sha512-/UXb6N0m0l+5kU4mLmRxyw3we+/w1fesgvfg96xllty5LyQxKDvkscmjlvCU/Yx55WO1tVxN4/7YlNEB2DcHyA== + dependencies: + "@types/node" "10.17.13" + resolve "~1.17.0" + strip-json-comments "~3.1.1" + +"@rushstack/ts-command-line@4.7.3": + version "4.7.3" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.7.3.tgz#fa72c637d70aa29c201f8f016f7db626f2d23a2c" + integrity sha512-8FNrUSbMgKLgRVcsg1STsIC2xAdyes7qJtVwg36hSnBAMZgCCIM+Z36nnxyrnYTS/6qwiXv7fwVaUxXH+SyiAQ== + dependencies: + "@types/argparse" "1.0.38" + argparse "~1.0.9" + colors "~1.2.1" + string-argv "~0.3.1" + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -1693,6 +1757,11 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.9" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" @@ -1822,6 +1891,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== +"@types/node@10.17.13": + version "10.17.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" + integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -2063,7 +2137,7 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -argparse@^1.0.7: +argparse@^1.0.7, argparse@~1.0.9: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -2663,6 +2737,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colors@~1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" + integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2670,6 +2749,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@^2.7.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -3673,7 +3757,7 @@ front-matter@^2.3.0: dependencies: js-yaml "^3.10.0" -fs-extra@^7.0.1: +fs-extra@^7.0.1, fs-extra@~7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -4028,6 +4112,11 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-lazy@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -4837,6 +4926,11 @@ jest@^26.5.0: import-local "^3.0.2" jest-cli "^26.5.2" +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5076,11 +5170,16 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.get@^4.4.2: +lodash.get@^4.0.0, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.memoize@4.1.2, lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -5096,7 +5195,7 @@ lodash.zip@^4.2.0: resolved "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= -lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@~4.17.15: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -6223,7 +6322,7 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.x, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2: +resolve@1.x, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -6355,7 +6454,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.2, semver@^7.2.1, semver@^7.3.2: +semver@7.3.2, semver@^7.2.1, semver@^7.3.2, semver@~7.3.0: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -6653,6 +6752,11 @@ stealthy-require@^1.1.1: resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +string-argv@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + string-length@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" @@ -6787,7 +6891,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -6892,6 +6996,11 @@ through@2: resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +timsort@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + title-case@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" @@ -7067,6 +7176,11 @@ typescript@^4.0.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== +typescript@~3.9.7: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -7189,6 +7303,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" + integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== + verror@1.10.0: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -7409,3 +7528,14 @@ yoga-layout-prebuilt@^1.9.6: integrity sha512-Wursw6uqLXLMjBAO4SEShuzj8+EJXhCF71/rJ7YndHTkRAYSU0GY3OghRqfAk9HPUAAFMuqp3U1Wl+01vmGRQQ== dependencies: "@types/yoga-layout" "1.9.2" + +z-schema@~3.18.3: + version "3.18.4" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2" + integrity sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== + dependencies: + lodash.get "^4.0.0" + lodash.isequal "^4.0.0" + validator "^8.0.0" + optionalDependencies: + commander "^2.7.1"