diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index bba6e9dca75e3..81d992c092039 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -63,7 +63,6 @@ scripts/babel @microsoft/fluentui-react-build scripts/beachball @microsoft/fluentui-react-build scripts/cypress @microsoft/fluentui-react-build scripts/dangerjs @microsoft/fluentui-react-build -scripts/dependency-graph-generator @microsoft/fluentui-react-build scripts/executors @microsoft/fluentui-react-build scripts/fluentui-publish @microsoft/fluentui-react-build scripts/generators @microsoft/fluentui-react-build diff --git a/package.json b/package.json index 598c9d05c9753..888d526591544 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "e2e": "lage e2e --verbose --concurrency=1", "format": "node scripts/executors/format.js", "generate-version-files": "node -r ./scripts/ts-node/register ./scripts/generators/generate-version-files", - "graph": "node ./scripts/dependency-graph-generator/index.js", "lint": "lage lint --verbose", "lint:log": "FORCE_COLOR=0 yarn lint > lint.log 2>&1", "lint:log:lerna": "FORCE_COLOR=0 lerna run lint --stream --no-bail > lint.log 2>&1", @@ -271,7 +270,6 @@ "lage": "1.8.8", "lerna": "5.5.2", "lerna-alias": "3.0.3-0", - "lerna-dependency-graph": "1.0.2", "license-webpack-plugin": "2.3.10", "lint-staged": "10.2.10", "loader-utils": "2.0.4", diff --git a/scripts/dependency-graph-generator/.eslintrc.json b/scripts/dependency-graph-generator/.eslintrc.json deleted file mode 100644 index 4f5307c1c0b5b..0000000000000 --- a/scripts/dependency-graph-generator/.eslintrc.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": ["plugin:@fluentui/eslint-plugin/node", "plugin:@fluentui/eslint-plugin/imports"], - "rules": { - "@fluentui/max-len": "off", - "import/no-extraneous-dependencies": [ - "error", - { - "packageDir": [".", "../../"] - } - ] - }, - "overrides": [ - { - "files": "index.d.ts", - "rules": { - "import/no-self-import": "off" - } - } - ], - "root": true -} diff --git a/scripts/dependency-graph-generator/.gitignore b/scripts/dependency-graph-generator/.gitignore deleted file mode 100644 index b38f8050073b1..0000000000000 --- a/scripts/dependency-graph-generator/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.dot -*.png diff --git a/scripts/dependency-graph-generator/index.js b/scripts/dependency-graph-generator/index.js deleted file mode 100644 index 2959c9e24eff0..0000000000000 --- a/scripts/dependency-graph-generator/index.js +++ /dev/null @@ -1,185 +0,0 @@ -const graphviz = require('graphviz'); -const parser = /** @type {typeof import('dotparser')['default']}*/ (/** @type {unknown} */ (require('dotparser'))); -const { readFileSync } = require('fs'); -const { spawnSync } = require('child_process'); -const path = require('path'); -const yargs = require('yargs'); - -/** @typedef {import('yargs').Arguments<{root:string;'include-dev'?:string;'graphviz-path'?:string}>} CliArgs */ - -const { findGitRoot, getDependencies } = require('@fluentui/scripts-monorepo'); - -const dotFilePath = path.resolve(__dirname, 'repo-graph.dot'); -/** - * @type {string[]} - */ -let ignoreDevDependencies = []; - -/** - * Pick a package in the repository and generate its dependency graph - * - * For this utility to work you will actually need to install graphviz on your machine - * http://www.graphviz.org - * @param {CliArgs} argv - */ -async function main(argv) { - if (!argv.root) { - throw new Error('A root package name should be provided'); - } - - const rootPackage = `@fluentui/${argv.root}`; - - // if dev dependencies should be added - const includeDevDependencies = argv['include-dev']; - if (!includeDevDependencies) { - ignoreDevDependencies = await getDependencies(rootPackage, { dev: true }); - } - - _generateGraphforRepo(dotFilePath); - const graph = _parseDotFile(dotFilePath); - const subTree = _getSubTree(graph, rootPackage); - - if (process.platform === 'win32') { - throw new Error('--graphvis-path argument is required for windows users'); - } - - subTree.setGraphVizPath(argv['graphviz-path'] || '/usr/bin'); - const pngOuputFile = path.resolve(__dirname, `${argv.root}.png`); - - subTree.output('png', pngOuputFile); -} - -/** - * Generates a dependency graph of the entire repo as a dotfile - * For this function to work you will actually need to install graphviz on your machine - * http://www.graphviz.org - * - * @param {string} outputPath the output path of the dot file - */ -function _generateGraphforRepo(outputPath) { - const lernaDependencyGraphArgs = [`--outputPath ${outputPath}`]; - // The package uses a shebang with windows line endings, call node on the entrypoint directly to avoid issues - const lernaDependencyGraphEntry = path.resolve(findGitRoot(), require.resolve('lerna-dependency-graph/lib/index.js')); - - const result = spawnSync(`node ${lernaDependencyGraphEntry}`, lernaDependencyGraphArgs, { - cwd: findGitRoot(), - shell: true, - stdio: 'inherit', - }); - - if (result.status) { - throw new Error( - (result.error && result.error.stack) || `failed to run lerna-dependency-graph with status ${result.status}`, - ); - } -} - -/** - * Returns an graphviz instance of a parsed dotfile - * Assumes one graph only in the dotfile - * - * @param {string} pathToDotFile - */ -function _parseDotFile(pathToDotFile) { - const content = readFileSync(pathToDotFile); - const graph = graphviz.digraph('G'); - const parsed = parser(content.toString()); - - const items = parsed[0].children; - items.forEach(item => { - if (item.type === 'node_stmt') { - graph.addNode(String(item.node_id.id)); - } else { - // @ts-expect-error - edge_list doesn't exist on type definition - is this a bug ? - graph.addEdge(item.edge_list[0].id, item.edge_list[1].id, { dir: 'forward' }); - } - }); - - return graph; -} - -/** - * - * @param {import("graphviz").Graph} graph The original graph - * @param {string} rootPackage The id of the root package/node in the original graph - */ -function _getSubTree(graph, rootPackage) { - const nodesToProcess = [rootPackage]; - const subTree = graphviz.graph('G'); - - // Dedupe bidirectional edges - const resEdges = new Set(); - - let i = 0; - while (i < nodesToProcess.length) { - const currentNode = nodesToProcess[i]; - subTree.addNode(currentNode); - const { edges, children } = _getEdgesAndChildren(graph, currentNode); - - children.forEach(child => nodesToProcess.push(child)); - - edges.forEach(edge => resEdges.add(`${edge.nodeOne.id},${edge.nodeTwo.id}`)); - - i++; - } - - let value; - const edgeIterator = resEdges.values(); - while ((value = edgeIterator.next().value)) { - const edge = value.split(','); - subTree.addEdge(edge[0], edge[1], { dir: 'forward' }); - } - return subTree; -} - -/** - * Function that returns all edges and children for a node - * @param {import("graphviz").Graph} graph - * @param {string} node id of the node - */ -function _getEdgesAndChildren(graph, node) { - /** @type any[] */ - const edges = []; - /** @type any[] */ - const children = []; - // @ts-expect-error - edges prop doesn't exist on typings - wrong typings ? - graph.edges.forEach(edge => { - if (ignoreDevDependencies.includes(edge.nodeOne.id) || ignoreDevDependencies.includes(edge.nodeTwo.id)) { - return; - } - - if (edge.nodeOne.id === node) { - edges.push(edge); - children.push(edge.nodeTwo.id); - } - }); - - return { edges, children }; -} - -yargs - .scriptName('dependency-graph-generator') - .usage('$0 [args]') - .command( - '$0', - 'Generates dependency graphs for packages in the repo', - _yargs => { - _yargs - .positional('root', { - type: 'string', - describe: 'The name of the root package in the dependency tree, without the `@fluentui/` prefix', - demandOption: true, - }) - .positional('include-dev', { - type: 'boolean', - description: 'Adds ignored dev dependencies to the tree', - }) - .positional('graphviz-path', { - type: 'string', - description: 'The path to graphviz which needs to be installed, required for windows users', - }); - }, - async argv => main(/** @type {CliArgs}*/ (argv)), - ) - .demand('root') - .help().argv; diff --git a/scripts/dependency-graph-generator/jest.config.js b/scripts/dependency-graph-generator/jest.config.js deleted file mode 100644 index c3f8e7efa5342..0000000000000 --- a/scripts/dependency-graph-generator/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -// @ts-check - -/** - * @type {import('@jest/types').Config.InitialOptions} - */ -module.exports = { - displayName: 'scripts-dependency-graph-generator', - preset: '../../jest.preset.js', - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, - coverageDirectory: './coverage', - testEnvironment: 'node', -}; diff --git a/scripts/dependency-graph-generator/package.json b/scripts/dependency-graph-generator/package.json deleted file mode 100644 index d864af69bee4c..0000000000000 --- a/scripts/dependency-graph-generator/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@fluentui/scripts-dependency-graph-generator", - "version": "0.0.1", - "private": true, - "main": "index.js", - "scripts": { - "format": "prettier -w --ignore-path ../../.prettierignore .", - "format:check": "yarn format -c", - "lint": "eslint --ext .ts,.js .", - "test": "jest --passWithNoTests", - "type-check": "tsc -b tsconfig.json" - }, - "dependencies": { - "@fluentui/scripts-monorepo": "*" - } -} diff --git a/scripts/dependency-graph-generator/tsconfig.json b/scripts/dependency-graph-generator/tsconfig.json deleted file mode 100644 index b289e657bc0e5..0000000000000 --- a/scripts/dependency-graph-generator/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "@tsconfig/node14/tsconfig.json", - "compilerOptions": { - "target": "ES2019", - "pretty": true, - "noEmit": true, - "allowJs": true, - "checkJs": true, - "sourceMap": true, - "noUnusedLocals": true - }, - "include": [], - "files": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/scripts/dependency-graph-generator/tsconfig.lib.json b/scripts/dependency-graph-generator/tsconfig.lib.json deleted file mode 100644 index bc31fef6f9184..0000000000000 --- a/scripts/dependency-graph-generator/tsconfig.lib.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "noEmit": false, - "lib": ["ES2019"], - "outDir": "../../dist/out-tsc", - "types": ["node"] - }, - "exclude": ["**/*.spec.ts", "**/*.test.ts"], - "include": ["./**/*.ts", "./**/*.js"] -} diff --git a/scripts/dependency-graph-generator/tsconfig.spec.json b/scripts/dependency-graph-generator/tsconfig.spec.json deleted file mode 100644 index 4d20fc98b71dd..0000000000000 --- a/scripts/dependency-graph-generator/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "module": "CommonJS", - "outDir": "dist", - "types": ["jest", "node"] - }, - "include": ["**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] -} diff --git a/workspace.json b/workspace.json index 9499367308530..67495f14ad895 100644 --- a/workspace.json +++ b/workspace.json @@ -855,12 +855,6 @@ "projectType": "library", "tags": ["tools"] }, - "@fluentui/scripts-dependency-graph-generator": { - "root": "scripts/dependency-graph-generator", - "sourceRoot": "scripts/dependency-graph-generator", - "projectType": "library", - "tags": ["tools"] - }, "@fluentui/scripts-executors": { "root": "scripts/executors", "sourceRoot": "scripts/executors", diff --git a/yarn.lock b/yarn.lock index 1d5c80ecdf7ff..95a36743ab653 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2632,15 +2632,6 @@ npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@3.16.0": - version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" - integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== - dependencies: - load-json-file "^5.3.0" - npm-package-arg "^6.1.0" - write-pkg "^3.1.0" - "@lerna/package@5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.5.2.tgz#5f692289d1164a4d3456cba0c45ec6ea5fc0f4a7" @@ -2685,24 +2676,6 @@ resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/project@^3.18.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" - integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== - dependencies: - "@lerna/package" "3.16.0" - "@lerna/validation-error" "3.13.0" - cosmiconfig "^5.1.0" - dedent "^0.7.0" - dot-prop "^4.2.0" - glob-parent "^5.0.0" - globby "^9.2.0" - load-json-file "^5.3.0" - npmlog "^4.1.2" - p-map "^2.1.0" - resolve-from "^4.0.0" - write-json-file "^3.2.0" - "@lerna/prompt@5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.5.2.tgz#d21e1ef3d18ad5cf2418c640927bbb64f54e72dd" @@ -2850,13 +2823,6 @@ resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.5.2.tgz#d28b4c4431e2988e0c308d8c9d98c503416dae21" integrity sha512-QcnMFwcP7xlT9DH4oGVuDYuSOfpAghG4wj7D8vN1GhJFd9ueDCzTFJpFRd6INacIbESBNMjq5WuTeNdxcDo8Fg== -"@lerna/validation-error@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" - integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== - dependencies: - npmlog "^4.1.2" - "@lerna/validation-error@5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.5.2.tgz#6ef92fdfab30404fc7d3668499c03c5740158d81" @@ -11187,7 +11153,7 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^4.1.0, dot-prop@^4.2.0: +dot-prop@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== @@ -14446,7 +14412,7 @@ homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: +hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== @@ -17486,15 +17452,6 @@ lerna-alias@3.0.3-0, lerna-alias@^3.0.3-0: dependencies: get-lerna-packages "^0.1.1" -lerna-dependency-graph@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lerna-dependency-graph/-/lerna-dependency-graph-1.0.2.tgz#553c095907304392ff7fc71a20e9cdabcba2c364" - integrity sha512-g+YTZWgeLkkEcvCuek8IU7Cgb/Kw9/Z662KXdyZUF3Bq4xB8UnIhapF56dD3WQbfyWDJ9iP8BoINX2oPy3JuXA== - dependencies: - "@lerna/project" "^3.18.0" - graphviz "0.0.9" - yargs "^15.1.0" - lerna@5.5.2: version "5.5.2" resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.5.2.tgz#3b96ea81bb71a0e57c110b64c6dc2cc58d7acca9" @@ -17698,17 +17655,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -load-json-file@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" - integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== - dependencies: - graceful-fs "^4.1.15" - parse-json "^4.0.0" - pify "^4.0.1" - strip-bom "^3.0.0" - type-fest "^0.3.0" - load-json-file@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" @@ -19403,16 +19349,6 @@ npm-package-arg@8.1.1, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: semver "^7.0.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== - dependencies: - hosted-git-info "^2.6.0" - osenv "^0.1.5" - semver "^5.5.0" - validate-npm-package-name "^3.0.0" - npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.0.tgz#a60e9f1e7c03e4e3e4e994ea87fff8b90b522987" @@ -19951,7 +19887,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -20088,7 +20024,7 @@ p-map-series@^2.1.0: resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -p-map@^2.0.0, p-map@^2.1.0: +p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -24954,11 +24890,6 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - type-fest@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" @@ -26413,18 +26344,6 @@ write-file-webpack-plugin@^4.1.0: moment "^2.22.1" write-file-atomic "^2.3.0" -write-json-file@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" - integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - pify "^3.0.0" - sort-keys "^2.0.0" - write-file-atomic "^2.0.0" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -26449,14 +26368,6 @@ write-json-file@^4.3.0: sort-keys "^4.0.0" write-file-atomic "^3.0.0" -write-pkg@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" - integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== - dependencies: - sort-keys "^2.0.0" - write-json-file "^2.2.0" - write-pkg@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" @@ -26663,7 +26574,7 @@ yargs@13.3.2, yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: +yargs@^15.3.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==