diff --git a/.github/workflows/pr-depcheck.yml b/.github/workflows/pr-depcheck.yml index ed628239ee..cd6d39c3a7 100644 --- a/.github/workflows/pr-depcheck.yml +++ b/.github/workflows/pr-depcheck.yml @@ -31,4 +31,4 @@ jobs: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: "Run Depcheck" run: | - npx lerna exec --scope '${{ matrix.package }}' -- npx -y depcheck --ignores="@types/*,jsii,jsii-pacmak,jsii-srcmak,jsii-docgen,yoga-layout-prebuilt,eslint,jest,tsc-files,typescript,esbuild,esbuild-jest,graphology-types" + npx lerna exec --scope '${{ matrix.package }}' -- npx -y depcheck --ignores="@types/*,jsii,jsii-pacmak,jsii-docgen,yoga-layout-prebuilt,eslint,jest,tsc-files,typescript,esbuild,esbuild-jest,graphology-types" diff --git a/.github/workflows/yarn-upgrade.yml b/.github/workflows/yarn-upgrade.yml index 4026e19b20..cd80faf076 100644 --- a/.github/workflows/yarn-upgrade.yml +++ b/.github/workflows/yarn-upgrade.yml @@ -158,7 +158,7 @@ jobs: # Upgrade all the packages lerna exec --scope='{${{ join(matrix.pr.packages, ',') }}}' ncu -- --upgrade --filter=@types/node,@types/fs-extra --target=minor lerna exec --scope='{${{ join(matrix.pr.packages, ',') }}}' ncu -- --upgrade --filter=typescript --target=patch - lerna exec --scope='{${{ join(matrix.pr.packages, ',') }}}' ncu -- --upgrade --reject='@types/node,@types/fs-extra,constructs,typescript,graphology-types,jsii,jsii-srcmak,jsii-pacmak,jsii-rosetta,jsii-docgen,codemaker,${{ steps.list-packages.outputs.list }}' --target=minor + lerna exec --scope='{${{ join(matrix.pr.packages, ',') }}}' ncu -- --upgrade --reject='@types/node,@types/fs-extra,constructs,typescript,graphology-types,jsii,jsii-pacmak,jsii-rosetta,jsii-docgen,codemaker,${{ steps.list-packages.outputs.list }}' --target=minor # This will ensure the current lockfile is up-to-date with the dependency specifications (necessary for "yarn upgrade" to run) - name: Run "yarn install" run: yarn install --prefer-offline @@ -222,7 +222,7 @@ jobs: - name: Run "ncu -u" run: |- # Upgrade all the packages - lerna exec ncu -- --upgrade --filter='jsii,jsii-srcmak,jsii-pacmak,jsii-rosetta,jsii-docgen,codemaker,constructs' --target=minor + lerna exec ncu -- --upgrade --filter='jsii,jsii-pacmak,jsii-rosetta,jsii-docgen,codemaker,constructs' --target=minor # This will ensure the current lockfile is up-to-date with the dependency specifications (necessary for "yarn upgrade" to run) - name: Run "yarn install" run: yarn install --prefer-offline diff --git a/packages/@cdktf/cli-core/package.json b/packages/@cdktf/cli-core/package.json index d2414ccda3..ea632d30f4 100644 --- a/packages/@cdktf/cli-core/package.json +++ b/packages/@cdktf/cli-core/package.json @@ -67,7 +67,6 @@ "ink-use-stdout-dimensions": "1.0.5", "jsii": "5.3.29", "jsii-pacmak": "1.95.0", - "jsii-srcmak": "0.1.1039", "lodash.isequal": "4.5.0", "log4js": "6.9.1", "minimatch": "5.1.6", diff --git a/packages/@cdktf/provider-generator/lib/get/constructs-maker.ts b/packages/@cdktf/provider-generator/lib/get/constructs-maker.ts index f64d294ec4..477b43ccc4 100644 --- a/packages/@cdktf/provider-generator/lib/get/constructs-maker.ts +++ b/packages/@cdktf/provider-generator/lib/get/constructs-maker.ts @@ -3,8 +3,7 @@ import * as fs from "fs-extra"; import * as path from "path"; import { CodeMaker } from "codemaker"; -import { mkdtemp } from "@cdktf/commons"; -import * as srcmak from "jsii-srcmak"; +import { exec, mkdtemp } from "@cdktf/commons"; import { TerraformDependencyConstraint, logger, @@ -22,9 +21,59 @@ import { ModuleGenerator } from "./generator/module-generator"; import { glob } from "glob"; import { readSchema } from "@cdktf/provider-schema"; +const pacmakModule = require.resolve("jsii-pacmak/bin/jsii-pacmak"); +const jsiiModule = require.resolve("jsii/bin/jsii"); + +export interface GenerateJSIIOptions { + entrypoint: string; + deps: string[]; + moduleKey: string; + exports?: Record; + jsii?: JsiiOutputOptions; + python?: PythonOutputOptions; + java?: JavaOutputOptions; + csharp?: CSharpOutputOptions; + golang?: GoLangOutputOptions; +} + +export interface JsiiOutputOptions { + path: string; +} + +export interface PythonOutputOptions { + outdir: string; + moduleName: string; +} + +export interface JavaOutputOptions { + outdir: string; + package: string; +} + +export interface CSharpOutputOptions { + outdir: string; + namespace: string; +} + +export interface GoLangOutputOptions { + outdir: string; + moduleName: string; + packageName: string; +} + +/** + * See https://nodejs.org/api/packages.html#conditional-exports for more information + */ +export interface ExportDefinition { + node?: string; + import?: string; + require?: string; + default?: string; +} + export async function generateJsiiLanguage( code: CodeMaker, - opts: srcmak.Options, + opts: GenerateJSIIOptions, outputPath: string, disallowedFileGlobs: string[] = [] ) { @@ -43,7 +92,139 @@ export async function generateJsiiLanguage( filesToDelete.map((file) => fs.remove(path.join(staging, file))) ); - await srcmak.srcmak(staging, opts); + // Compile with JSII + const jsiiArgs = ["--silence-warnings", "reserved-word"]; + const jsiiEntrypoint = opts.entrypoint; + const basepath = path.join( + path.dirname(jsiiEntrypoint), + path.basename(jsiiEntrypoint, ".ts") + ); + + const moduleKey = opts.moduleKey.replace(/\./g, "").replace(/\//g, ""); + const moduleDirs = opts.deps; + const targets: Record = {}; + const deps: Record = {}; + for (const dir of moduleDirs) { + // read module metadata + const metadata = await fs.readJson(path.join(dir, "package.json")); + const moduleName: string = metadata.name; + const moduleVersion: string = metadata.version; + + const targetdir = path.join( + path.join(staging, "node_modules"), + moduleName + ); + await fs.mkdirp(path.dirname(targetdir)); + await fs.copy(dir, targetdir); + + // add to "deps" and "peer deps" + if (!moduleName.startsWith("@types/")) { + deps[moduleName] = moduleVersion; + } + } + const pkg = { + name: moduleKey, + version: "0.0.0", + author: "generated@generated.com", + main: `${basepath}.js`, + types: `${basepath}.d.ts`, + license: "UNLICENSED", + repository: { url: "http://generated", type: "git" }, + jsii: { + outdir: "dist", + targets: targets, + }, + dependencies: deps, + peerDependencies: deps, + }; + + if (opts.exports) { + (pkg as Record).exports = opts.exports; + } + if (opts.python) { + targets.python = { + distName: "generated", + module: opts.python.moduleName, + }; + } + + if (opts.java) { + targets.java = { + package: opts.java.package, + maven: { + groupId: "generated", + artifactId: "generated", + }, + }; + } + + if (opts.csharp) { + targets.dotnet = { + namespace: opts.csharp.namespace, + packageId: opts.csharp.namespace, + }; + } + + if (opts.golang) { + targets.go = { + moduleName: opts.golang.moduleName, + packageName: opts.golang.packageName, + }; + } + + await fs.writeFile( + path.join(staging, "package.json"), + JSON.stringify(pkg, undefined, 2) + ); + + const endJsiiTimer = logTimespan("jsii"); + await exec(jsiiModule, jsiiArgs, { + cwd: staging, + }); + endJsiiTimer(); + + // extract .jsii if requested + if (opts.jsii) { + await fs.copy(path.join(staging, ".jsii"), opts.jsii.path); + } + + // run pacmak to generate code + const endJsiiPacmakTimer = logTimespan("jsii-pacmak"); + await exec(pacmakModule, ["--code-only"], { cwd: staging }); + endJsiiPacmakTimer(); + + if (opts.python) { + const reldir = opts.python.moduleName.replace(/\./g, "/"); // jsii replaces "." with "/" + const source = path.resolve( + path.join(staging, "dist/python/src", reldir) + ); + const target = path.join(opts.python.outdir, reldir); + await fs.move(source, target, { overwrite: true }); + } + + if (opts.java) { + const source = path.resolve(path.join(staging, "dist/java/src/")); + const target = path.join(opts.java.outdir, "src/"); + await fs.mkdirp(target); // make sure target directory exists + await fs.copy(source, target, { recursive: true, overwrite: false }); + } + + if (opts.csharp) { + const reldir = opts.csharp.namespace; + const source = path.resolve(path.join(staging, "dist/dotnet/", reldir)); + const target = path.join(opts.csharp.outdir, reldir); + await fs.move(source, target, { overwrite: true }); + } + + if (opts.golang) { + const reldir = opts.golang.packageName; + const source = path.resolve(path.join(staging, "dist/go/", reldir)); + const target = path.join(opts.golang.outdir, reldir); + await fs.move(source, target, { overwrite: true }); + // remove go.mod as this would make it a submodule + await fs.remove(path.join(target, "go.mod")); + } + ["versions.json", "constraints.json"].forEach((file) => { try { fs.copySync( @@ -381,7 +562,7 @@ export class ConstructsMaker { private async generateJsiiLanguage(target: ConstructsMakerTarget) { // these are the module dependencies we compile against const deps = ["@types/node", "constructs", "cdktf"]; - const opts: srcmak.Options = { + const opts: GenerateJSIIOptions = { entrypoint: target.fileName, deps: deps.map((dep) => path.dirname(require.resolve(`${dep}/package.json`)) diff --git a/packages/@cdktf/provider-generator/lib/index.ts b/packages/@cdktf/provider-generator/lib/index.ts index 11296a25a3..599d7d8ed4 100644 --- a/packages/@cdktf/provider-generator/lib/index.ts +++ b/packages/@cdktf/provider-generator/lib/index.ts @@ -10,9 +10,10 @@ export { export { sanitizeClassOrNamespaceName } from "./get/generator/resource-parser"; import { CodeMaker } from "codemaker"; -import * as srcmak from "jsii-srcmak"; - -import { generateJsiiLanguage } from "./get/constructs-maker"; +import { + GenerateJSIIOptions, + generateJsiiLanguage, +} from "./get/constructs-maker"; export { escapeAttributeName } from "./get/generator/models"; import { TerraformProviderGenerator } from "./get/generator/provider-generator"; import { ProviderSchema } from "@cdktf/commons"; @@ -23,7 +24,7 @@ export { TerraformProviderGenerator, CodeMaker }; export async function generateProviderBindingsFromSchema( targetPath: string, schemaJSON: ProviderSchema, - options?: srcmak.Options + options?: GenerateJSIIOptions ): Promise { const code = new CodeMaker(); const generator = new TerraformProviderGenerator(code, schemaJSON); diff --git a/packages/@cdktf/provider-generator/package.json b/packages/@cdktf/provider-generator/package.json index 395b7d17cd..c59405dfcd 100644 --- a/packages/@cdktf/provider-generator/package.json +++ b/packages/@cdktf/provider-generator/package.json @@ -39,8 +39,7 @@ "@types/node": "18.19.31", "codemaker": "1.95.0", "fs-extra": "8.1.0", - "glob": "10.3.12", - "jsii-srcmak": "0.1.1039" + "glob": "10.3.12" }, "devDependencies": { "@types/deepmerge": "2.2.0", @@ -52,4 +51,4 @@ "ts-jest": "29.1.2", "typescript": "5.2.2" } -} \ No newline at end of file +} diff --git a/packages/cdktf-cli/package.json b/packages/cdktf-cli/package.json index 62100ef4a7..5971b8c2f4 100644 --- a/packages/cdktf-cli/package.json +++ b/packages/cdktf-cli/package.json @@ -155,7 +155,6 @@ "ink-testing-library": "2.1.0", "ink-use-stdout-dimensions": "1.0.5", "jest": "29.7.0", - "jsii-srcmak": "0.1.1039", "lodash.isequal": "4.5.0", "log4js": "6.9.1", "nock": "13.5.4", @@ -173,4 +172,4 @@ "utility-types": "3.11.0", "uuid": "8.3.2" } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index b14e7babe2..75991a94b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3352,7 +3352,7 @@ camelcase@6.3.0, camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -3545,15 +3545,6 @@ cli-width@^4.0.0, cli-width@^4.1.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -4189,7 +4180,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.2.0: +decamelize@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -5603,7 +5594,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -7816,7 +7807,7 @@ jsii-docgen@10.3.23: semver "^7.6.0" yargs "^16.2.0" -jsii-pacmak@1.95.0, jsii-pacmak@^1.94.0: +jsii-pacmak@1.95.0: version "1.95.0" resolved "https://registry.yarnpkg.com/jsii-pacmak/-/jsii-pacmak-1.95.0.tgz#dba9f8589b415dc0ff02430202d3447d02fb19e9" integrity sha512-h/eo3p3jG4/Wtb9WdavvcgXzyN5QXZck3k0xvIWp5SKxFLorQ+TWhY7BHG0e+VXl+mxcni6BuQ5wFLavq65RQQ== @@ -7884,17 +7875,6 @@ jsii-rosetta@^1.95.0: workerpool "^6.5.1" yargs "^16.2.0" -jsii-srcmak@0.1.1039: - version "0.1.1039" - resolved "https://registry.yarnpkg.com/jsii-srcmak/-/jsii-srcmak-0.1.1039.tgz#c85141bb770a248f1dc0f8f8b0b8259aa0b1e2be" - integrity sha512-3lBjyxBy5UpPGK8bXFmVRzaoK6caDQ5DO40Qbyv3LOWtrsuUQmuVI2/5wRwNtfg6sFzOFD3+kE3LZuNXo7QE/Q== - dependencies: - fs-extra "^9.1.0" - jsii "~5.3.18" - jsii-pacmak "^1.94.0" - ncp "^2.0.0" - yargs "^15.4.1" - jsii@1.95.0: version "1.95.0" resolved "https://registry.yarnpkg.com/jsii/-/jsii-1.95.0.tgz#d79194863a9f6800a695edfdb3e4c0d1f1beb840" @@ -7914,7 +7894,7 @@ jsii@1.95.0: typescript "~3.9.10" yargs "^16.2.0" -jsii@5.3.29, jsii@~5.3.0, jsii@~5.3.18: +jsii@5.3.29, jsii@~5.3.0: version "5.3.29" resolved "https://registry.yarnpkg.com/jsii/-/jsii-5.3.29.tgz#1af1777b48f90f1188f375b5d9677fd75e8b0781" integrity sha512-vEEOtjD8s/C8ORHvN87Bt9jHcY1diJoC1sS+TVnCkeb4V9q5fOEVr4gl/FsU5ea8dSWZHdd7VqCtr0jYAwKleg== @@ -8914,11 +8894,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -ncp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== - negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -10331,11 +10306,6 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -12149,11 +12119,6 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" @@ -12373,11 +12338,6 @@ xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -12418,14 +12378,6 @@ yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -12457,23 +12409,6 @@ yargs@17.7.2, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"