From 6ff57ad3a012c4d91a27e7b6f06a5ab6db34936f Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Tue, 17 Oct 2023 10:20:59 -0600 Subject: [PATCH 01/39] feat!: migrate to ESM BREAKING CHANGES: ESM and node 18 minimum --- .commitlintrc.json | 3 + .editorconfig | 11 - .eslintrc | 21 - .eslintrc.json | 3 + .git2gus/config.json | 7 +- .github/CODEOWNERS | 1 - .github/dependabot.yml | 1 - .github/workflows/automerge.yml | 9 +- .github/workflows/create-github-release.yml | 28 + .github/workflows/failureNotifications.yml | 3 +- .github/workflows/manualRelease.yml | 36 - .github/workflows/onPushToMain.yml | 20 - .github/workflows/onRelease.yml | 11 +- .github/workflows/test.yml | 34 +- .github/workflows/update-npm-version.yml | 38 - .gitignore | 3 + .husky/commit-msg | 2 +- .husky/pre-commit | 4 + .lintstagedrc.json | 5 + .mocharc.json | 15 +- .prettierrc.json | 1 + README.md | 39 +- bin/dev | 18 - bin/dev.cmd | 2 +- bin/dev.js | 8 + bin/run | 5 - bin/run.js | 9 + commitlint.config.js | 1 - package.json | 67 +- src/commands/plugins/index.ts | 61 +- src/commands/plugins/inspect.ts | 161 +- src/commands/plugins/install.ts | 143 +- src/commands/plugins/link.ts | 22 +- src/commands/plugins/uninstall.ts | 48 +- src/commands/plugins/update.ts | 6 +- src/hooks/update.ts | 7 +- src/index.ts | 2 +- src/plugins.ts | 425 +- src/util.ts | 78 +- src/yarn.ts | 92 +- test/commands/plugins/index.test.ts | 186 +- test/commands/plugins/uninstall.test.ts | 8 +- test/helpers/init.js | 2 - test/integration/sf.integration.ts | 17 +- test/test.ts | 22 +- test/tsconfig.json | 8 +- tsconfig.json | 17 +- yarn.lock | 4993 ++++++++++--------- 48 files changed, 3349 insertions(+), 3354 deletions(-) create mode 100644 .commitlintrc.json delete mode 100644 .editorconfig delete mode 100644 .eslintrc create mode 100644 .eslintrc.json delete mode 100644 .github/CODEOWNERS create mode 100644 .github/workflows/create-github-release.yml delete mode 100644 .github/workflows/manualRelease.yml delete mode 100644 .github/workflows/onPushToMain.yml delete mode 100644 .github/workflows/update-npm-version.yml create mode 100755 .husky/pre-commit create mode 100644 .lintstagedrc.json create mode 100644 .prettierrc.json delete mode 100755 bin/dev mode change 100644 => 100755 bin/dev.cmd create mode 100755 bin/dev.js delete mode 100755 bin/run create mode 100755 bin/run.js delete mode 100644 commitlint.config.js delete mode 100644 test/helpers/init.js diff --git a/.commitlintrc.json b/.commitlintrc.json new file mode 100644 index 00000000..c30e5a97 --- /dev/null +++ b/.commitlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["@commitlint/config-conventional"] +} diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index beffa308..00000000 --- a/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 52198025..00000000 --- a/.eslintrc +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": [ - "oclif", - "oclif-typescript" - ], - "rules": { - "@typescript-eslint/no-empty-function": "off", - "node/no-extraneous-import": "off", - "unicorn/prefer-module": "off", - "unicorn/prefer-ternary": "off", - "unicorn/prefer-array-some": "off", - "unicorn/consistent-function-scoping": "off", - "unicorn/consistent-destructuring": "off", - "unicorn/prefer-node-protocol": "off", - "unicorn/prefer-spread": "off", - "unicorn/import-style": "off", - "unicorn/no-array-for-each": "off", - "unicorn/no-lonely-if": "off", - "unicorn/no-array-reduce": "off" - } -} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..1dfcfc41 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["oclif", "oclif-typescript", "prettier"] +} diff --git a/.git2gus/config.json b/.git2gus/config.json index 62c66207..5314c7e8 100644 --- a/.git2gus/config.json +++ b/.git2gus/config.json @@ -1,7 +1,10 @@ { "productTag": "a1aB0000000ce2IIAQ", - "defaultBuild": "offcore.tooling.55", - "issueTypeLabels": { "enhancement": "USER STORY", "bug": "BUG P3" }, + "defaultBuild": "offcore.tooling.59", + "issueTypeLabels": { + "enhancement": "USER STORY", + "bug": "BUG P3" + }, "hideWorkItemUrl": true, "statusWhenClosed": "CLOSED" } diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 9f17ba0e..00000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @heroku/cli diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7cc4b82e..0ef035df 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -18,6 +18,5 @@ updates: prefix-development: chore(dev-deps) ignore: - dependency-name: '@salesforce/dev-scripts' - - dependency-name: 'npm' # Updated with update-npm-version.yml - dependency-name: '*' update-types: ['version-update:semver-major'] diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 796eafae..46b964f7 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -2,9 +2,12 @@ name: automerge on: workflow_dispatch: schedule: - - cron: '17 2,5,8,11 * * *' + - cron: '42 2,5,8,11 * * *' jobs: automerge: - uses: oclif/github-workflows/.github/workflows/automerge.yml@main - secrets: inherit + uses: salesforcecli/github-workflows/.github/workflows/automerge.yml@main + secrets: + SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + with: + mergeMethod: squash diff --git a/.github/workflows/create-github-release.yml b/.github/workflows/create-github-release.yml new file mode 100644 index 00000000..136463a3 --- /dev/null +++ b/.github/workflows/create-github-release.yml @@ -0,0 +1,28 @@ +name: create-github-release + +on: + push: + branches: + - main + # point at specific branches, or a naming convention via wildcard + - prerelease/** + tags-ignore: + - '*' + workflow_dispatch: + inputs: + prerelease: + type: string + description: 'Name to use for the prerelease: beta, dev, etc. NOTE: If this is already set in the package.json, it does not need to be passed in here.' + +jobs: + release: + # this job will throw if prerelease is true but it doesn't have a prerelease-looking package.json version + uses: salesforcecli/github-workflows/.github/workflows/create-github-release.yml@main + secrets: + SVC_CLI_BOT_GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} + with: + prerelease: ${{ inputs.prerelease }} + # If this is a push event, we want to skip the release if there are no semantic commits + # However, if this is a manual release (workflow_dispatch), then we want to disable skip-on-empty + # This helps recover from forgetting to add semantic commits ('fix:', 'feat:', etc.) + skip-on-empty: ${{ github.event_name == 'push' }} diff --git a/.github/workflows/failureNotifications.yml b/.github/workflows/failureNotifications.yml index 16269c90..d3e86d7b 100644 --- a/.github/workflows/failureNotifications.yml +++ b/.github/workflows/failureNotifications.yml @@ -3,9 +3,8 @@ name: failureNotifications on: workflow_run: workflows: - - version, tag and github release + - create-github-release - publish - - update-npm-version types: - completed diff --git a/.github/workflows/manualRelease.yml b/.github/workflows/manualRelease.yml deleted file mode 100644 index 8ceb52c3..00000000 --- a/.github/workflows/manualRelease.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: manual release - -on: - workflow_dispatch: - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - - name: Conventional Changelog Action - id: changelog - uses: TriPSs/conventional-changelog-action@d360fad3a42feca6462f72c97c165d60a02d4bf2 - # overriding some of the basic behaviors to just get the changelog - with: - git-user-name: svc-cli-bot - git-user-email: svc_cli_bot@salesforce.com - github-token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - output-file: false - # always do the release, even if there are no semantic commits - skip-on-empty: false - tag-prefix: '' - - uses: notiz-dev/github-action-json-property@2192e246737701f108a4571462b76c75e7376216 - id: packageVersion - with: - path: 'package.json' - prop_path: 'version' - - name: Create Github Release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - with: - tag_name: ${{ steps.packageVersion.outputs.prop }} - release_name: ${{ steps.packageVersion.outputs.prop }} diff --git a/.github/workflows/onPushToMain.yml b/.github/workflows/onPushToMain.yml deleted file mode 100644 index 14665581..00000000 --- a/.github/workflows/onPushToMain.yml +++ /dev/null @@ -1,20 +0,0 @@ -# test -name: version, tag and github release - -on: - push: - branches: - - main - - prerelease/* - -jobs: - release: - uses: oclif/github-workflows/.github/workflows/githubRelease.yml@main - secrets: inherit - - # most repos won't use this - # depends on previous job to avoid git collisions, not for any functionality reason - # docs: - # uses: salesforcecli/github-workflows/.github/workflows/publishTypedoc.yml@main - # secrets: inherit - # needs: release diff --git a/.github/workflows/onRelease.yml b/.github/workflows/onRelease.yml index a32bb2c1..02bebdfa 100644 --- a/.github/workflows/onRelease.yml +++ b/.github/workflows/onRelease.yml @@ -2,7 +2,7 @@ name: publish on: release: - types: [released] + types: [published] # support manual release in case something goes wrong and needs to be repeated or tested workflow_dispatch: inputs: @@ -11,6 +11,7 @@ on: type: string required: true jobs: + # parses the package.json version and detects prerelease tag (ex: beta from 4.4.4-beta.0) getDistTag: outputs: tag: ${{ steps.distTag.outputs.tag }} @@ -19,12 +20,14 @@ jobs: - uses: actions/checkout@v3 with: ref: ${{ github.event.release.tag_name || inputs.tag }} - - uses: oclif/github-workflows/.github/actions/getPreReleaseTag@main + - uses: salesforcecli/github-workflows/.github/actions/getPreReleaseTag@main id: distTag + npm: - uses: oclif/github-workflows/.github/workflows/npmPublish.yml@main + uses: salesforcecli/github-workflows/.github/workflows/npmPublish.yml@main needs: [getDistTag] with: tag: ${{ needs.getDistTag.outputs.tag || 'latest' }} githubTag: ${{ github.event.release.tag_name || inputs.tag }} - secrets: inherit + secrets: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4f9f6591..58755e81 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,29 +5,11 @@ on: workflow_dispatch: jobs: - integration-tests: - strategy: - matrix: - os: [ubuntu-latest, windows-latest] - runs-on: ${{matrix.os}} - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: lts/* - - name: Install sf - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_wait_seconds: 60 - command: npm install -g @salesforce/cli@$nightly --omit=dev - timeout_minutes: 60 - - name: Build project - run: | - yarn - yarn build - - name: Run tests - run: yarn test:integration - - unit-tests: - uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main + yarn-lockfile-check: + uses: salesforcecli/github-workflows/.github/workflows/lockFileCheck.yml@main + linux-unit-tests: + needs: yarn-lockfile-check + uses: salesforcecli/github-workflows/.github/workflows/unitTestsLinux.yml@main + windows-unit-tests: + needs: linux-unit-tests + uses: salesforcecli/github-workflows/.github/workflows/unitTestsWindows.yml@main diff --git a/.github/workflows/update-npm-version.yml b/.github/workflows/update-npm-version.yml deleted file mode 100644 index bffa132a..00000000 --- a/.github/workflows/update-npm-version.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: update-npm-version - -# https://github.com/forcedotcom/cli/issues/2327 -# Customer needs an npm version that has been bundled with node lts -# We will install the version that is included with the runner's node - -on: - workflow_dispatch: - schedule: - # Tuesday 7a central (12 UTC) - - cron: "0 12 * * 2" - -jobs: - update-npm: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - token: ${{ secrets.SVC_CLI_BOT_GITHUB_TOKEN }} - - uses: actions/setup-node@v3 - with: - node-version: lts/* - - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main - - run: | - echo "package.json npm version: $(jq -r '.dependencies.npm' package.json)" - echo "GHA Node LTS npm version: $(npm -v)" - yarn add npm@$(npm -v) - - uses: salesforcecli/github-workflows/.github/actions/gitConfig@main - # Push changes if 'git status' is not empty - - run: | - if [[ -n $(git status --short) ]]; then - yarn test - git add -A - git commit -m "fix: update npm version" - git push - else - echo "Already up to date" - fi diff --git a/.gitignore b/.gitignore index e0ce7be0..0eda4040 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,6 @@ /lib /node_modules /tmp + +oclif.lock +oclif.manifest.json \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg index ce7e3a8c..13badd1f 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname $0)/_/husky.sh" -yarn run commitlint --edit $1 +yarn commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..4abc587a --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn lint-staged --concurrent false diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 00000000..c3147078 --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,5 @@ +{ + "*.json": ["prettier --write"], + "*.md": ["prettier --write"], + "+(src|test)/**/*.+(ts|js)": ["eslint --fix", "prettier --write"] +} diff --git a/.mocharc.json b/.mocharc.json index 585dd3b1..1d4f4b8f 100644 --- a/.mocharc.json +++ b/.mocharc.json @@ -1,13 +1,8 @@ { - "require": [ - "test/helpers/init.js", - "ts-node/register", - "source-map-support/register" - ], - "watch-extensions": [ - "ts" - ], + "require": ["ts-node/register"], + "watch-extensions": ["ts"], "recursive": true, "reporter": "spec", - "timeout": 200000 -} \ No newline at end of file + "timeout": 200000, + "node-option": ["loader=ts-node/esm"] +} diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..63143357 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1 @@ +"@oclif/prettier-config" diff --git a/README.md b/README.md index 4ffefaf9..f1fe6ae0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,19 @@ -@oclif/plugin-plugins -===================== +# @oclif/plugin-plugins plugins plugin for oclif [![Version](https://img.shields.io/npm/v/@oclif/plugin-plugins.svg)](https://npmjs.org/package/@oclif/plugin-plugins) -[![CircleCI](https://circleci.com/gh/oclif/plugin-plugins/tree/main.svg?style=shield)](https://circleci.com/gh/oclif/plugin-plugins/tree/main) -[![Appveyor CI](https://ci.appveyor.com/api/projects/status/github/oclif/plugin-plugins?branch=main&svg=true)](https://ci.appveyor.com/project/oclif/plugin-plugins/branch/main) [![Known Vulnerabilities](https://snyk.io/test/github/oclif/plugin-plugins/badge.svg)](https://snyk.io/test/github/oclif/plugin-plugins) [![Downloads/week](https://img.shields.io/npm/dw/@oclif/plugin-plugins.svg)](https://npmjs.org/package/@oclif/plugin-plugins) [![License](https://img.shields.io/npm/l/@oclif/plugin-plugins.svg)](https://github.com/oclif/plugin-plugins/blob/main/package.json) -* [What is this?](#what-is-this) -* [Usage](#usage) -* [Friendly names](#friendly-names) -* [Aliases](#aliases) -* [Commands](#commands) + +- [What is this?](#what-is-this) +- [Usage](#usage) +- [Friendly names](#friendly-names) +- [Aliases](#aliases) +- [Commands](#commands) # What is this? @@ -79,13 +77,21 @@ For removing plugins that are no longer needed (either because they're sunset or `old-name-plugin` will be autoremoved on the next update and will not be able to be installed with `mycli plugins:install old-name-plugin`. # Commands + -* [`mycli plugins`](#mycli-plugins) -* [`mycli plugins:inspect PLUGIN...`](#mycli-pluginsinspect-plugin) -* [`mycli plugins:install PLUGIN...`](#mycli-pluginsinstall-plugin) -* [`mycli plugins:link PLUGIN`](#mycli-pluginslink-plugin) -* [`mycli plugins:uninstall PLUGIN...`](#mycli-pluginsuninstall-plugin) -* [`mycli plugins:update`](#mycli-pluginsupdate) + +- [@oclif/plugin-plugins](#oclifplugin-plugins) +- [What is this?](#what-is-this) +- [Usage](#usage) +- [Friendly names](#friendly-names) +- [Aliases](#aliases) +- [Commands](#commands) + - [`mycli plugins`](#mycli-plugins) + - [`mycli plugins:inspect PLUGIN...`](#mycli-pluginsinspect-plugin) + - [`mycli plugins:install PLUGIN...`](#mycli-pluginsinstall-plugin) + - [`mycli plugins:link PLUGIN`](#mycli-pluginslink-plugin) + - [`mycli plugins:uninstall PLUGIN...`](#mycli-pluginsuninstall-plugin) + - [`mycli plugins:update`](#mycli-pluginsupdate) ## `mycli plugins` @@ -162,7 +168,7 @@ ALIASES $ mycli plugins:add EXAMPLES - $ mycli plugins:install myplugin + $ mycli plugins:install myplugin $ mycli plugins:install https://github.com/someuser/someplugin @@ -242,4 +248,5 @@ DESCRIPTION ``` _See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/update.ts)_ + diff --git a/bin/dev b/bin/dev deleted file mode 100755 index 5a42fcac..00000000 --- a/bin/dev +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env node - -const oclif = require('@oclif/core') - -const path = require('path') -const project = path.join(__dirname, '..', 'tsconfig.json') - -// In dev mode -> use ts-node and dev plugins -process.env.NODE_ENV = 'development' - -require('ts-node').register({project}) - -// In dev mode, always show stack traces -// Waiting for https://github.com/oclif/core/pull/147 -// oclif.settings.debug = true; - -// Start the CLI -oclif.run().then(oclif.flush).catch(oclif.Errors.handle) diff --git a/bin/dev.cmd b/bin/dev.cmd old mode 100644 new mode 100755 index 077b57ae..cec553be --- a/bin/dev.cmd +++ b/bin/dev.cmd @@ -1,3 +1,3 @@ @echo off -node "%~dp0\dev" %* \ No newline at end of file +node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %* diff --git a/bin/dev.js b/bin/dev.js new file mode 100755 index 00000000..6c607734 --- /dev/null +++ b/bin/dev.js @@ -0,0 +1,8 @@ +#!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning +// eslint-disable-next-line node/shebang +async function main() { + const {execute} = await import('@oclif/core') + await execute({development: true, dir: import.meta.url}) +} + +await main() diff --git a/bin/run b/bin/run deleted file mode 100755 index a7635de8..00000000 --- a/bin/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env node - -const oclif = require('@oclif/core') - -oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle')) diff --git a/bin/run.js b/bin/run.js new file mode 100755 index 00000000..39d13f51 --- /dev/null +++ b/bin/run.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +// eslint-disable-next-line node/shebang +async function main() { + const {execute} = await import('@oclif/core') + await execute({dir: import.meta.url}) +} + +await main() diff --git a/commitlint.config.js b/commitlint.config.js deleted file mode 100644 index 28fe5c5b..00000000 --- a/commitlint.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {extends: ['@commitlint/config-conventional']} diff --git a/package.json b/package.json index 4d0e377b..5b69a87d 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { - "@oclif/core": "^2.15.0", - "chalk": "^4.1.2", + "@oclif/core": "^3.3.2", + "chalk": "^5.3.0", "debug": "^4.3.4", "http-call": "^5.2.2", "load-json-file": "^5.3.0", @@ -14,50 +14,55 @@ "npm-run-path": "^4.0.1", "semver": "^7.5.4", "shelljs": "^0.8.5", - "tslib": "^2.6.2", "validate-npm-package-name": "^5.0.0", "yarn": "^1.22.18" }, "devDependencies": { - "@commitlint/config-conventional": "^12.1.4", - "@oclif/plugin-help": "^5.2.20", - "@oclif/test": "^2.5.6", + "@commitlint/config-conventional": "^17.8.0", + "@oclif/plugin-help": "^6", + "@oclif/prettier-config": "^0.2.1", + "@oclif/test": "^3.0.2", "@types/chai": "^4.3.6", + "@types/debug": "^4.1.9", "@types/glob": "^8.1.0", - "@types/mocha": "^8.2.3", - "@types/node": "^14.18.60", + "@types/mocha": "^10.0.2", + "@types/node": "^18", "@types/semver": "^7.5.3", "@types/shelljs": "^0.8.13", "@types/supports-color": "^7.2.0", "@types/validate-npm-package-name": "^4.0.0", "chai": "^4.3.10", - "commitlint": "^12.1.4", - "eslint": "^7.31.0", - "eslint-config-oclif": "^4", - "eslint-config-oclif-typescript": "^1.0.3", - "fancy-test": "^2.0.35", + "commitlint": "^17.8.0", + "eslint": "^8.51.0", + "eslint-config-oclif": "^5.0.0", + "eslint-config-oclif-typescript": "^3.0.6", + "eslint-config-prettier": "^9.0.0", + "fancy-test": "^3.0.1", "globby": "^11.1.0", - "husky": "6", - "mocha": "^9.2.2", + "husky": "^8.0.3", + "lint-staged": "^15.0.1", + "mocha": "^10.2.0", "nock": "^13.3.3", - "oclif": "^3.9.1", + "oclif": "^4.0.2", + "prettier": "^3.0.3", "shx": "^0.3.4", - "ts-node": "^10.7.0", - "typescript": "4.9.5" + "ts-node": "^10.9.1", + "typescript": "^5.2.2" }, "engines": { - "node": ">=16" + "node": ">=18.0.0" }, + "exports": "./lib/index.js", "files": [ "oclif.manifest.json", - "/lib" + "/lib", + "/oclif.lock" ], "homepage": "https://github.com/oclif/plugin-plugins", "keywords": [ "oclif-plugin" ], "license": "MIT", - "main": "lib/index.js", "oclif": { "commands": "./lib/commands", "hooks": { @@ -69,22 +74,26 @@ "aliases": { "aliasme": "oclif-debug" }, - "bin": "mycli" + "bin": "mycli", + "flexibleTaxonomy": true, + "topicSeparator": " " }, "repository": "oclif/plugin-plugins", "scripts": { "build": "shx rm -rf lib && tsc", + "clean": "shx rm -f oclif.manifest.json oclif.lock", "commitlint": "commitlint", - "clean": "shx rm -f oclif.manifest.json", - "lint": "eslint . --ext .ts --config .eslintrc", + "lint": "eslint . --ext .ts", + "postpublish": "yarn run clean", + "posttest": "yarn lint", + "prepare": "husky install", + "prepublishOnly": "yarn run build && oclif lock && oclif manifest . && oclif readme", "pretest": "yarn build && tsc -p test --noEmit", + "preversion": "yarn run clean", "test": "mocha \"test/**/*.test.ts\"", "test:integration": "mocha \"test/**/*.integration.ts\"", - "posttest": "yarn lint", - "prepublishOnly": "yarn run build && oclif manifest . && oclif readme", - "postpublish": "yarn run clean", - "preversion": "yarn run clean", "version": "oclif readme && git add README.md" }, + "type": "module", "types": "lib/index.d.ts" -} \ No newline at end of file +} diff --git a/src/commands/plugins/index.ts b/src/commands/plugins/index.ts index eec9b587..bc718720 100644 --- a/src/commands/plugins/index.ts +++ b/src/commands/plugins/index.ts @@ -1,43 +1,45 @@ -import * as chalk from 'chalk' import {Command, Flags, Interfaces, Plugin, ux} from '@oclif/core' +import chalk from 'chalk' -import Plugins from '../../plugins' -import {sortBy} from '../../util' +import Plugins from '../../plugins.js' +import {sortBy} from '../../util.js' -type JitPlugin = {name: string; version: string; type: string} +type JitPlugin = {name: string; type: string; version: string} type PluginsJson = Array export default class PluginsIndex extends Command { + static description = 'List installed plugins.' static enableJsonFlag = true + + static examples = ['$ <%- config.bin %> plugins'] + static flags = { core: Flags.boolean({description: 'Show core plugins.'}), } - static description = 'List installed plugins.' - - static examples = ['$ <%- config.bin %> plugins'] - plugins = new Plugins(this.config) async run(): Promise { const {flags} = await this.parse(PluginsIndex) let plugins = this.config.getPluginsList() - sortBy(plugins, p => this.plugins.friendlyName(p.name)) + sortBy(plugins, (p) => this.plugins.friendlyName(p.name)) if (!flags.core) { - plugins = plugins.filter(p => p.type !== 'core' && p.type !== 'dev') + plugins = plugins.filter((p) => p.type !== 'core' && p.type !== 'dev') } if (plugins.length === 0) this.log('No plugins installed.') const results = this.config.getPluginsList() - const userAndLinkedPlugins = new Set(results.filter(p => p.type === 'user' || p.type === 'link').map(p => p.name)) + const userAndLinkedPlugins = new Set( + results.filter((p) => p.type === 'user' || p.type === 'link').map((p) => p.name), + ) const jitPluginsConfig = this.config.pjson.oclif.jitPlugins ?? {} const jitPlugins: JitPlugin[] = Object.entries(jitPluginsConfig) - .map(([name, version]) => ({name, version, type: 'jit'})) - .filter(p => !userAndLinkedPlugins.has(p.name)) + .map(([name, version]) => ({name, type: 'jit', version})) + .filter((p) => !userAndLinkedPlugins.has(p.name)) - sortBy(jitPlugins, p => p.name) + sortBy(jitPlugins, (p) => p.name) if (!this.jsonEnabled()) { this.display(plugins as Plugin[]) @@ -47,6 +49,16 @@ export default class PluginsIndex extends Command { return [...results, ...jitPlugins] } + private createTree(plugin: Plugin) { + const tree = ux.tree() + for (const p of plugin.children) { + const name = this.formatPlugin(p) + tree.insert(name, this.createTree(p)) + } + + return tree + } + private display(plugins: Plugin[]) { for (const plugin of plugins.filter((p: Plugin) => !p.parent)) { this.log(this.formatPlugin(plugin)) @@ -65,24 +77,11 @@ export default class PluginsIndex extends Command { } } - private createTree(plugin: Plugin) { - const tree = ux.tree() - for (const p of plugin.children) { - const name = this.formatPlugin(p) - tree.insert(name, this.createTree(p)) - } - - return tree - } - - private formatPlugin(plugin: any): string { + private formatPlugin(plugin: Plugin): string { let output = `${this.plugins.friendlyName(plugin.name)} ${chalk.dim(plugin.version)}` - if (plugin.type !== 'user') - output += chalk.dim(` (${plugin.type})`) - if (plugin.type === 'link') - output += ` ${plugin.root}` - else if (plugin.tag && plugin.tag !== 'latest') - output += chalk.dim(` (${String(plugin.tag)})`) + if (plugin.type !== 'user') output += chalk.dim(` (${plugin.type})`) + if (plugin.type === 'link') output += ` ${plugin.root}` + else if (plugin.tag && plugin.tag !== 'latest') output += chalk.dim(` (${String(plugin.tag)})`) return output } } diff --git a/src/commands/plugins/inspect.ts b/src/commands/plugins/inspect.ts index eeba9d0b..4a206cf1 100644 --- a/src/commands/plugins/inspect.ts +++ b/src/commands/plugins/inspect.ts @@ -1,97 +1,85 @@ -import * as path from 'path' import {Args, Command, Flags, Plugin, ux} from '@oclif/core' -import * as chalk from 'chalk' -import {readFile} from 'fs/promises' -import Plugins from '../../plugins' -import {sortBy} from '../../util' +import chalk from 'chalk' +import {readFile} from 'node:fs/promises' +import * as path from 'node:path' + +import Plugins from '../../plugins.js' +import {sortBy} from '../../util.js' function trimUntil(fsPath: string, part: string): string { const parts = fsPath.split(path.sep) - const indices = parts.reduce((a, e, i) => (e === part) ? a.concat([i]) : a, [] as number[]) + // eslint-disable-next-line unicorn/no-array-reduce + const indices = parts.reduce((a, e, i) => (e === part ? [...a, i] : a), [] as number[]) const partIndex = Math.max(...indices) if (partIndex === -1) return fsPath return parts.slice(0, partIndex + 1).join(path.sep) } -type Dependencies = Record +type Dependencies = Record type PluginWithDeps = Plugin & {deps: Dependencies} export default class PluginsInspect extends Command { - static description = 'Displays installation properties of a plugin.'; - - static usage = 'plugins:inspect PLUGIN...'; - - static examples = [ - '$ <%= config.bin %> plugins:inspect <%- config.pjson.oclif.examplePlugin || "myplugin" %> ', - ]; - - static strict = false; - - static enableJsonFlag = true; - static args = { plugin: Args.string({ + default: '.', description: 'Plugin to inspect.', required: true, - default: '.', }), } + static description = 'Displays installation properties of a plugin.' + + static enableJsonFlag = true + + static examples = ['$ <%= config.bin %> plugins:inspect <%- config.pjson.oclif.examplePlugin || "myplugin" %> '] + static flags = { help: Flags.help({char: 'h'}), verbose: Flags.boolean({char: 'v'}), - }; + } + + static strict = false - plugins = new Plugins(this.config); + static usage = 'plugins:inspect PLUGIN...' + + plugins = new Plugins(this.config) // In this case we want these operations to happen // sequentially so the `no-await-in-loop` rule is ignored - /* eslint-disable no-await-in-loop */ - async run(): Promise { - const {flags, argv} = await this.parse(PluginsInspect) - if (flags.verbose) this.plugins.verbose = true - const aliases = this.config.pjson.oclif.aliases || {} - const plugins: PluginWithDeps[] = [] - for (let name of argv as string[]) { - if (name === '.') { - const pkgJson = JSON.parse(await readFile('package.json', 'utf-8')) - name = pkgJson.name - } - - if (aliases[name] === null) this.error(`${name} is blocked`) - name = aliases[name] || name - const pluginName = await this.parsePluginName(name) + async findDep(plugin: Plugin, dependency: string): Promise<{pkgPath: null | string; version: null | string}> { + const dependencyPath = path.join(...dependency.split('/')) + let start = path.join(plugin.root, 'node_modules') + const paths = [start] + while ((start.match(/node_modules/g) || []).length > 1) { + start = trimUntil(path.dirname(start), 'node_modules') + paths.push(start) + } + // TODO: use promise.any to check the paths in parallel + // requires node >= 16 + for (const p of paths) { + const fullPath = path.join(p, dependencyPath) + const pkgJsonPath = path.join(fullPath, 'package.json') try { - plugins.push(await this.inspect(pluginName, flags.verbose)) - } catch (error) { - this.log(chalk.bold.red('failed')) - throw error + // eslint-disable-next-line no-await-in-loop + const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) + return {pkgPath: fullPath, version: pkgJson.version as string} + } catch { + // try the next path } } - return plugins - } - /* eslint-enable no-await-in-loop */ - - async parsePluginName(input: string): Promise { - if (input.includes('@') && input.includes('/')) { - input = input.slice(1) - const [name] = input.split('@') - return '@' + name - } - - const [splitName] = input.split('@') - const name = await this.plugins.maybeUnfriendlyName(splitName) - return name + return {pkgPath: null, version: null} } findPlugin(pluginName: string): Plugin { - const pluginConfig = this.config.getPluginsList().find(plg => plg.name === pluginName) + const pluginConfig = this.config.getPluginsList().find((plg) => plg.name === pluginName) if (pluginConfig) return pluginConfig as Plugin if (this.config.pjson.oclif.jitPlugins?.[pluginName]) { - this.warn(`Plugin ${pluginName} is a JIT plugin. It will be installed the first time you run one of it's commands.`) + this.warn( + `Plugin ${pluginName} is a JIT plugin. It will be installed the first time you run one of it's commands.`, + ) } throw new Error(`${pluginName} not installed`) @@ -108,17 +96,17 @@ export default class PluginsInspect extends Command { tree.nodes[pluginHeader].insert(`location ${plugin.root}`) tree.nodes[pluginHeader].insert('commands') - const commands = sortBy(plugin.commandIDs, c => c) - commands.forEach(cmd => tree.nodes[pluginHeader].nodes.commands.insert(cmd)) + const commands = sortBy(plugin.commandIDs, (c) => c) + for (const cmd of commands) tree.nodes[pluginHeader].nodes.commands.insert(cmd) - const dependencies = Object.assign({}, plugin.pjson.dependencies) + const dependencies = {...plugin.pjson.dependencies} tree.nodes[pluginHeader].insert('dependencies') - const deps = sortBy(Object.keys(dependencies), d => d) + const deps = sortBy(Object.keys(dependencies), (d) => d) const depsJson: Dependencies = {} for (const dep of deps) { // eslint-disable-next-line no-await-in-loop - const {version, pkgPath} = await this.findDep(plugin, dep) + const {pkgPath, version} = await this.findDep(plugin, dep) if (!version) continue const from = dependencies[dep] ?? null @@ -134,29 +122,42 @@ export default class PluginsInspect extends Command { return {...plugin, deps: depsJson} as PluginWithDeps } - async findDep(plugin: Plugin, dependency: string): Promise<{ version: string | null; pkgPath: string | null}> { - const dependencyPath = path.join(...dependency.split('/')) - let start = path.join(plugin.root, 'node_modules') - const paths = [start] - while ((start.match(/node_modules/g) || []).length > 1) { - start = trimUntil(path.dirname(start), 'node_modules') - paths.push(start) + async parsePluginName(input: string): Promise { + if (input.includes('@') && input.includes('/')) { + input = input.slice(1) + const [name] = input.split('@') + return '@' + name } - // TODO: use promise.any to check the paths in parallel - // requires node >= 16 - for (const p of paths) { - const fullPath = path.join(p, dependencyPath) - const pkgJsonPath = path.join(fullPath, 'package.json') + const [splitName] = input.split('@') + const name = await this.plugins.maybeUnfriendlyName(splitName) + return name + } + + /* eslint-disable no-await-in-loop */ + async run(): Promise { + const {argv, flags} = await this.parse(PluginsInspect) + if (flags.verbose) this.plugins.verbose = true + const aliases = this.config.pjson.oclif.aliases || {} + const plugins: PluginWithDeps[] = [] + for (let name of argv as string[]) { + if (name === '.') { + const pkgJson = JSON.parse(await readFile('package.json', 'utf8')) + name = pkgJson.name + } + + if (aliases[name] === null) this.error(`${name} is blocked`) + name = aliases[name] || name + const pluginName = await this.parsePluginName(name) + try { - // eslint-disable-next-line no-await-in-loop - const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf-8')) - return {version: pkgJson.version as string, pkgPath: fullPath} - } catch { - // try the next path + plugins.push(await this.inspect(pluginName, flags.verbose)) + } catch (error) { + this.log(chalk.bold.red('failed')) + throw error } } - return {version: null, pkgPath: null} + return plugins } } diff --git a/src/commands/plugins/install.ts b/src/commands/plugins/install.ts index d62d3346..cb753b75 100644 --- a/src/commands/plugins/install.ts +++ b/src/commands/plugins/install.ts @@ -1,45 +1,42 @@ -import {Command, Flags, ux, Args, Errors, Interfaces} from '@oclif/core' -import * as validate from 'validate-npm-package-name' -import * as chalk from 'chalk' +import {Args, Command, Errors, Flags, Interfaces, ux} from '@oclif/core' +import chalk from 'chalk' +import validate from 'validate-npm-package-name' -import Plugins from '../../plugins' +import Plugins from '../../plugins.js' export default class PluginsInstall extends Command { + static aliases = ['plugins:add'] + + static args = { + plugin: Args.string({description: 'Plugin to install.', required: true}), + } + static description = `Installs a plugin into the CLI. Can be installed from npm or a git url. Installation of a user-installed plugin will override a core plugin. e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in the CLI without the need to patch and update the whole CLI. -`; - - static usage = 'plugins:install PLUGIN...'; +` static examples = [ '$ <%= config.bin %> plugins:install <%- config.pjson.oclif.examplePlugin || "myplugin" %> ', '$ <%= config.bin %> plugins:install https://github.com/someuser/someplugin', '$ <%= config.bin %> plugins:install someuser/someplugin', - ]; - - static strict = false; - - static args = { - plugin: Args.string({description: 'Plugin to install.', required: true}), - }; + ] static flags = { - help: Flags.help({char: 'h'}), - verbose: Flags.boolean({char: 'v'}), force: Flags.boolean({ char: 'f', description: 'Run yarn install with force flag.', }), + help: Flags.help({char: 'h'}), jit: Flags.boolean({ hidden: true, - parse: async (input, ctx) => { + async parse(input, ctx) { if (input === false || input === undefined) return input - const requestedPlugins = ctx.argv.filter(a => !a.startsWith('-')) + const requestedPlugins = ctx.argv.filter((a) => !a.startsWith('-')) if (requestedPlugins.length === 0) return input const jitPluginsConfig = ctx.config.pjson.oclif.jitPlugins ?? {} @@ -47,12 +44,14 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins const plugins = new Plugins(ctx.config) - const nonJitPlugins = await Promise.all(requestedPlugins.map(async plugin => { - const name = await plugins.maybeUnfriendlyName(plugin) - return {name, jit: Boolean(jitPluginsConfig[name])} - })) + const nonJitPlugins = await Promise.all( + requestedPlugins.map(async (plugin) => { + const name = await plugins.maybeUnfriendlyName(plugin) + return {jit: Boolean(jitPluginsConfig[name]), name} + }), + ) - const nonJitPluginsNames = nonJitPlugins.filter(p => !p.jit).map(p => p.name) + const nonJitPluginsNames = nonJitPlugins.filter((p) => !p.jit).map((p) => p.name) if (nonJitPluginsNames.length > 0) { throw new Errors.CLIError(`The following plugins are not JIT plugins: ${nonJitPluginsNames.join(', ')}`) } @@ -60,56 +59,22 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins return input }, }), - }; + verbose: Flags.boolean({char: 'v'}), + } + + static strict = false - static aliases = ['plugins:add']; + static usage = 'plugins:install PLUGIN...' - plugins = new Plugins(this.config); - flags!: Interfaces.InferredFlags; + flags!: Interfaces.InferredFlags + plugins = new Plugins(this.config) // In this case we want these operations to happen // sequentially so the `no-await-in-loop` rule is ignored - /* eslint-disable no-await-in-loop */ - async run(): Promise { - const {flags, argv} = await this.parse(PluginsInstall) - this.flags = flags - if (flags.verbose) this.plugins.verbose = true - const aliases = this.config.pjson.oclif.aliases || {} - for (let name of argv as string[]) { - if (aliases[name] === null) this.error(`${name} is blocked`) - name = aliases[name] || name - const p = await this.parsePlugin(name) - let plugin - await this.config.runHook('plugins:preinstall', { - plugin: p, - }) - try { - if (p.type === 'npm') { - ux.action.start( - `Installing plugin ${chalk.cyan(this.plugins.friendlyName(p.name) + '@' + p.tag)}`, - ) - plugin = await this.plugins.install(p.name, { - tag: p.tag, - force: flags.force, - }) - } else { - ux.action.start(`Installing plugin ${chalk.cyan(p.url)}`) - plugin = await this.plugins.install(p.url, {force: flags.force}) - } - } catch (error) { - ux.action.stop(chalk.bold.red('failed')) - throw error - } - - ux.action.stop(`installed v${plugin.version}`) - } - } - /* eslint-enable no-await-in-loop */ - - async parsePlugin(input: string): Promise<{name: string; tag: string; type: 'npm'} | {url: string; type: 'repo'}> { + async parsePlugin(input: string): Promise<{name: string; tag: string; type: 'npm'} | {type: 'repo'; url: string}> { // git ssh url if (input.startsWith('git+ssh://') || input.endsWith('.git')) { - return {url: input, type: 'repo'} + return {type: 'repo', url: input} } const getNameAndTag = async (input: string): Promise<{name: string; tag: string}> => { @@ -121,7 +86,10 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins if (this.flags.jit) { const jitVersion = this.config.pjson.oclif?.jitPlugins?.[name] if (jitVersion) { - if (regexAtSymbolNotAtBeginning.test(input)) this.warn(`--jit flag is present along side a tag. Ignoring tag ${tag} and using the version specified in package.json (${jitVersion}).`) + if (regexAtSymbolNotAtBeginning.test(input)) + this.warn( + `--jit flag is present along side a tag. Ignoring tag ${tag} and using the version specified in package.json (${jitVersion}).`, + ) return {name, tag: jitVersion} } @@ -140,9 +108,9 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins if (input.includes('/')) { // github url, e.g. https://github.com/oclif/plugin-version - if (input.includes(':')) return {url: input, type: 'repo'} + if (input.includes(':')) return {type: 'repo', url: input} // github org/repo, e.g. oclif/plugin-version - return {url: `https://github.com/${input}`, type: 'repo'} + return {type: 'repo', url: `https://github.com/${input}`} } // unscoped npm package, e.g. my-oclif-plugin @@ -150,9 +118,44 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins const {name, tag} = await getNameAndTag(input) return {name, tag, type: 'npm'} } + /* eslint-enable no-await-in-loop */ + + /* eslint-disable no-await-in-loop */ + async run(): Promise { + const {argv, flags} = await this.parse(PluginsInstall) + this.flags = flags + if (flags.verbose) this.plugins.verbose = true + const aliases = this.config.pjson.oclif.aliases || {} + for (let name of argv as string[]) { + if (aliases[name] === null) this.error(`${name} is blocked`) + name = aliases[name] || name + const p = await this.parsePlugin(name) + let plugin + await this.config.runHook('plugins:preinstall', { + plugin: p, + }) + try { + if (p.type === 'npm') { + ux.action.start(`Installing plugin ${chalk.cyan(this.plugins.friendlyName(p.name) + '@' + p.tag)}`) + plugin = await this.plugins.install(p.name, { + force: flags.force, + tag: p.tag, + }) + } else { + ux.action.start(`Installing plugin ${chalk.cyan(p.url)}`) + plugin = await this.plugins.install(p.url, {force: flags.force}) + } + } catch (error) { + ux.action.stop(chalk.bold.red('failed')) + throw error + } + + ux.action.stop(`installed v${plugin.version}`) + } + } } -function validateNpmPkgName(name:string): void { +function validateNpmPkgName(name: string): void { if (!validate(name).validForNewPackages) { throw new Errors.CLIError('Invalid npm package name.') } diff --git a/src/commands/plugins/link.ts b/src/commands/plugins/link.ts index 79b391e4..48ff34e5 100644 --- a/src/commands/plugins/link.ts +++ b/src/commands/plugins/link.ts @@ -1,37 +1,37 @@ import {Args, Command, Flags, ux} from '@oclif/core' -import * as chalk from 'chalk' +import chalk from 'chalk' -import Plugins from '../../plugins' +import Plugins from '../../plugins.js' export default class PluginsLink extends Command { + static args = { + path: Args.string({default: '.', description: 'path to plugin', name: 'path', required: true}), + } + static description = `Links a plugin into the CLI for development. Installation of a linked plugin will override a user-installed or core plugin. e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work. ` - static usage = 'plugins:link PLUGIN' - static examples = ['$ <%= config.bin %> plugins:link <%- config.pjson.oclif.examplePlugin || "myplugin" %> '] - static args = { - path: Args.string({name: 'path', description: 'path to plugin', required: true, default: '.'}), - } - static flags = { help: Flags.help({char: 'h'}), - verbose: Flags.boolean({char: 'v'}), install: Flags.boolean({ - default: true, allowNo: true, + default: true, description: 'Install dependencies after linking the plugin.', }), + verbose: Flags.boolean({char: 'v'}), } + static usage = 'plugins:link PLUGIN' + plugins = new Plugins(this.config) async run(): Promise { - const {flags, args} = await this.parse(PluginsLink) + const {args, flags} = await this.parse(PluginsLink) this.plugins.verbose = flags.verbose ux.action.start(`Linking plugin ${chalk.cyan(args.path)}`) await this.plugins.link(args.path, {install: flags.install}) diff --git a/src/commands/plugins/uninstall.ts b/src/commands/plugins/uninstall.ts index 749d8593..6d3ce52a 100644 --- a/src/commands/plugins/uninstall.ts +++ b/src/commands/plugins/uninstall.ts @@ -1,38 +1,38 @@ -import {Command, Flags, Plugin, Interfaces, ux, Args} from '@oclif/core' -import * as chalk from 'chalk' +/* eslint-disable no-await-in-loop */ +import {Args, Command, Flags, Interfaces, Plugin, ux} from '@oclif/core' +import chalk from 'chalk' -import Plugins from '../../plugins' +import Plugins from '../../plugins.js' export default class PluginsUninstall extends Command { - static description = 'Removes a plugin from the CLI.' - - static usage = 'plugins:uninstall PLUGIN...' - - static help = ` - Example: - $ <%- config.bin %> plugins:uninstall <%- config.pjson.oclif.examplePlugin || "myplugin" %> - ` - - static variableArgs = true + static aliases = ['plugins:unlink', 'plugins:remove'] static args = { plugin: Args.string({description: 'plugin to uninstall'}), } + static description = 'Removes a plugin from the CLI.' + static flags = { help: Flags.help({char: 'h'}), verbose: Flags.boolean({char: 'v'}), } - static aliases = ['plugins:unlink', 'plugins:remove'] + static help = ` + Example: + $ <%- config.bin %> plugins:uninstall <%- config.pjson.oclif.examplePlugin || "myplugin" %> + ` + + static static = false + + static usage = 'plugins:uninstall PLUGIN...' plugins = new Plugins(this.config) // In this case we want these operations to happen // sequentially so the `no-await-in-loop` rule is ignored - /* eslint-disable no-await-in-loop */ async run(): Promise { - const {flags, argv} = await this.parse(PluginsUninstall) + const {argv, flags} = await this.parse(PluginsUninstall) this.plugins = new Plugins(this.config) if (flags.verbose) this.plugins.verbose = true if (argv.length === 0) argv.push('.') @@ -41,16 +41,17 @@ export default class PluginsUninstall extends Command { ux.action.start(`Uninstalling ${friendly}`) const unfriendly = await this.plugins.hasPlugin(this.removeTags(plugin)) if (!unfriendly) { - const p = this.config.getPluginsList().find(p => p.name === plugin) as Plugin | undefined - if (p) { - if (p && p.parent) return this.error(`${friendly} is installed via plugin ${p.parent!.name}, uninstall ${p.parent!.name} instead`) - } + const p = this.config.getPluginsList().find((p) => p.name === plugin) as Plugin | undefined + if (p && p && p.parent) + return this.error( + `${friendly} is installed via plugin ${p.parent!.name}, uninstall ${p.parent!.name} instead`, + ) return this.error(`${friendly} is not installed`) } try { - const {name} = unfriendly as Interfaces.PJSON.User | Interfaces.PJSON.PluginTypes.Link + const {name} = unfriendly as Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.User await this.plugins.uninstall(name) } catch (error) { ux.action.stop(chalk.bold.red('failed')) @@ -60,14 +61,13 @@ export default class PluginsUninstall extends Command { ux.action.stop() } } - /* eslint-enable no-await-in-loop */ private removeTags(plugin: string) { if (plugin.includes('@')) { const chunked = plugin.split('@') - const last = chunked[chunked.length - 1] + const last = chunked.at(-1) - if (!last.includes('/') && chunked.length > 1) { + if (!last?.includes('/') && chunked.length > 1) { chunked.pop() } diff --git a/src/commands/plugins/update.ts b/src/commands/plugins/update.ts index e4588e4b..f54b56aa 100644 --- a/src/commands/plugins/update.ts +++ b/src/commands/plugins/update.ts @@ -1,12 +1,8 @@ import {Command, Flags} from '@oclif/core' -import Plugins from '../../plugins' +import Plugins from '../../plugins.js' export default class PluginsUpdate extends Command { - static topic = 'plugins' - - static command = 'update' - static description = 'Update installed plugins.' static flags = { diff --git a/src/hooks/update.ts b/src/hooks/update.ts index bc3b5e73..d832cdd6 100644 --- a/src/hooks/update.ts +++ b/src/hooks/update.ts @@ -1,12 +1,13 @@ import {Hook} from '@oclif/core' -import Plugins from '../plugins' +import Plugins from '../plugins.js' export const update: Hook<'update'> = async function () { const plugins = new Plugins(this.config) try { await plugins.update() - } catch (error: any) { - this.error(error.message) + } catch (error: unknown) { + const {message} = error as {message: string} + this.error(message) } } diff --git a/src/index.ts b/src/index.ts index b0e0c8a8..711b0393 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1 @@ -export {default} from './plugins' +export {default} from './plugins.js' diff --git a/src/plugins.ts b/src/plugins.ts index 4cea3c25..bfad553e 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -1,18 +1,19 @@ -/* eslint-disable no-await-in-loop */ -import {Errors, Config, Interfaces, ux} from '@oclif/core' -import * as shelljs from 'shelljs' -import * as fs from 'fs' +import {Config, Errors, Interfaces, ux} from '@oclif/core' +import makeDebug from 'debug' import loadJSON from 'load-json-file' -import * as path from 'path' -import {validRange, gt, valid} from 'semver' +import * as fs from 'node:fs' +import * as path from 'node:path' +import {gt, valid, validRange} from 'semver' +import * as shelljs from 'shelljs' -import {uniq, uniqWith, findNode, findNpm} from './util' -import Yarn from './yarn' +import {findNode, findNpm, uniq, uniqWith} from './util.js' +import Yarn from './yarn.js' const initPJSON: Interfaces.PJSON.User = { - private: true, - oclif: {schema: 1, plugins: []}, dependencies: {}, + oclif: {plugins: [], schema: 1}, + private: true, + version: '', } async function fileExists(filePath: string): Promise { @@ -25,43 +26,44 @@ async function fileExists(filePath: string): Promise { } export default class Plugins { - verbose = false; + verbose = false - readonly yarn: Yarn; + readonly yarn: Yarn - private readonly debug: any; + private readonly debug: ReturnType constructor(public config: Interfaces.Config) { this.yarn = new Yarn({config}) - this.debug = require('debug')('@oclif/plugins') + this.debug = makeDebug('@oclif/plugins') } - async pjson(): Promise { - try { - const pjson = await loadJSON(this.pjsonPath) - return { - ...initPJSON, - dependencies: {}, - ...pjson, - } - } catch (error: any) { - this.debug(error) - if (error.code !== 'ENOENT') process.emitWarning(error) - return initPJSON - } + async add(...plugins: Interfaces.PJSON.PluginTypes[]): Promise { + const pjson = await this.pjson() + pjson.oclif.plugins = uniq([...(pjson.oclif.plugins || []), ...plugins]) as typeof pjson.oclif.plugins + + await this.savePJSON(pjson) } - async list(): Promise< - (Interfaces.PJSON.PluginTypes.User | Interfaces.PJSON.PluginTypes.Link)[] - > { - const pjson = await this.pjson() - return this.normalizePlugins(pjson.oclif.plugins) + friendlyName(name: string): string { + const {scope} = this.config.pjson.oclif + if (!scope) return name + const match = name.match(`@${scope}/plugin-(.+)`) + if (!match) return name + return match[1] } - async install( - name: string, - {tag = 'latest', force = false} = {}, - ): Promise { + async hasPlugin(name: string): Promise { + const list = await this.list() + const friendly = list.find((p) => this.friendlyName(p.name) === this.friendlyName(name)) + const unfriendly = list.find((p) => this.unfriendlyName(p.name) === this.unfriendlyName(name)) + const link = list.find((p) => p.type === 'link' && path.resolve(p.root) === path.resolve(name)) + return (friendly ?? unfriendly ?? link ?? false) as + | Interfaces.PJSON.PluginTypes.Link + | Interfaces.PJSON.User + | boolean + } + + async install(name: string, {force = false, tag = 'latest'} = {}): Promise { try { this.debug(`installing plugin ${name}`) const yarnOpts = {cwd: this.config.dataDir, verbose: this.verbose} @@ -72,20 +74,19 @@ export default class Plugins { // url const url = name await this.yarn.exec([...add, url], yarnOpts) - name = Object.entries((await this.pjson()).dependencies || {}).find( - ([, u]: any) => u === url, - )![0] + const {dependencies} = await this.pjson() + name = Object.entries(dependencies ?? {}).find(([, u]) => u === url)![0] plugin = await Config.load({ devPlugins: false, - userPlugins: false, - root: path.join(this.config.dataDir, 'node_modules', name), name, + root: path.join(this.config.dataDir, 'node_modules', name), + userPlugins: false, }) await this.refresh({all: true, prod: true}, plugin.root) this.isValidPlugin(plugin) - await this.add({name, url, type: 'user'}) + await this.add({name, type: 'user', url}) } else { // npm const range = validRange(tag) @@ -99,9 +100,9 @@ export default class Plugins { this.debug(`loading plugin ${name}...`) plugin = await Config.load({ devPlugins: false, - userPlugins: false, - root: path.join(this.config.dataDir, 'node_modules', name), name, + root: path.join(this.config.dataDir, 'node_modules', name), + userPlugins: false, }) this.debug(`finished loading plugin ${name} at root ${plugin.root}`) @@ -112,12 +113,12 @@ export default class Plugins { } return plugin - } catch (error: any) { + } catch (error: unknown) { this.debug('error installing plugin:', error) - await this.uninstall(name).catch(error => this.debug(error)) + await this.uninstall(name).catch((error) => this.debug(error)) if (String(error).includes('EACCES')) { - throw new Errors.CLIError(error, { + throw new Errors.CLIError(error as Error, { suggestions: [ `Plugin failed to install because of a permissions error.\nDoes your current user own the directory ${this.config.dataDir}?`, ], @@ -128,6 +129,48 @@ export default class Plugins { } } + async link(p: string, {install}: {install: boolean}): Promise { + const c = await Config.load(path.resolve(p)) + ux.action.start(`${this.config.name}: linking plugin ${c.name}`) + this.isValidPlugin(c) + + // refresh will cause yarn.lock to install dependencies, including devDeps + if (install) await this.refresh({all: false, prod: false}, c.root) + await this.add({name: c.name, root: c.root, type: 'link'}) + } + + async list(): Promise<(Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User)[]> { + const pjson = await this.pjson() + return this.normalizePlugins(pjson.oclif.plugins) + } + + async maybeUnfriendlyName(name: string): Promise { + const unfriendly = this.unfriendlyName(name) + this.debug(`checking registry for expanded package name ${unfriendly}`) + if (unfriendly && (await this.npmHasPackage(unfriendly))) { + return unfriendly + } + + this.debug(`expanded package name ${unfriendly} not found, using given package name ${name}`) + return name + } + + async pjson(): Promise { + try { + const pjson = await loadJSON(this.pjsonPath) + return { + ...initPJSON, + dependencies: {}, + ...pjson, + } + } catch (error: unknown) { + this.debug(error) + const err = error as Error & {code?: string} + if (err.code !== 'ENOENT') process.emitWarning(err) + return initPJSON + } + } + /** * If a yarn.lock or oclif.lock exists at the root, refresh dependencies by * rerunning yarn. If options.prod is true, only install production dependencies. @@ -144,10 +187,7 @@ export default class Plugins { * @param roots string[] * @returns Promise */ - async refresh( - options: { prod: boolean; all: boolean }, - ...roots: string[] - ): Promise { + async refresh(options: {all: boolean; prod: boolean}, ...roots: string[]): Promise { const doRefresh = async (root: string) => { await this.yarn.exec(options.prod ? ['--prod'] : [], { cwd: root, @@ -157,116 +197,116 @@ export default class Plugins { const pluginRoots = [...roots] if (options.all) { - const userPluginsRoots = this.config.getPluginsList() - .filter(p => p.type === 'user') - .map(p => p.root) + const userPluginsRoots = this.config + .getPluginsList() + .filter((p) => p.type === 'user') + .map((p) => p.root) pluginRoots.push(...userPluginsRoots) } const deduped = [...new Set(pluginRoots)] - await Promise.all(deduped.map(async r => { - if (await fileExists(path.join(r, 'yarn.lock'))) { - this.debug(`yarn.lock exists at ${r}. Installing prod dependencies`) - await doRefresh(r) - } else if (await fileExists(path.join(r, 'oclif.lock'))) { - this.debug(`oclif.lock exists at ${r}. Installing prod dependencies`) - await fs.promises.rename(path.join(r, 'oclif.lock'), path.join(r, 'yarn.lock')) - await doRefresh(r) - } else { - this.debug(`no yarn.lock or oclif.lock exists at ${r}. Skipping dependency refresh`) - } - })) - } - - async link(p: string, {install}: {install: boolean}): Promise { - const c = await Config.load(path.resolve(p)) - ux.action.start(`${this.config.name}: linking plugin ${c.name}`) - this.isValidPlugin(c) - - // refresh will cause yarn.lock to install dependencies, including devDeps - if (install) await this.refresh({prod: false, all: false}, c.root) - await this.add({type: 'link', name: c.name, root: c.root}) - } - - async add(...plugins: Interfaces.PJSON.PluginTypes[]): Promise { - const pjson = await this.pjson() - pjson.oclif.plugins = uniq([...(pjson.oclif.plugins || []), ...plugins]) as any - await this.savePJSON(pjson) + await Promise.all( + deduped.map(async (r) => { + if (await fileExists(path.join(r, 'yarn.lock'))) { + this.debug(`yarn.lock exists at ${r}. Installing prod dependencies`) + await doRefresh(r) + } else if (await fileExists(path.join(r, 'oclif.lock'))) { + this.debug(`oclif.lock exists at ${r}. Installing prod dependencies`) + await fs.promises.rename(path.join(r, 'oclif.lock'), path.join(r, 'yarn.lock')) + await doRefresh(r) + } else { + this.debug(`no yarn.lock or oclif.lock exists at ${r}. Skipping dependency refresh`) + } + }), + ) } async remove(name: string): Promise { const pjson = await this.pjson() if (pjson.dependencies) delete pjson.dependencies[name] - pjson.oclif.plugins = this.normalizePlugins(pjson.oclif.plugins).filter( - p => p.name !== name, - ) - await this.savePJSON(pjson) + await this.savePJSON({ + ...pjson, + oclif: { + ...pjson.oclif, + plugins: this.normalizePlugins(pjson.oclif.plugins).filter( + (p) => p.name !== name, + ) as typeof pjson.oclif.plugins, + }, + }) + } + + unfriendlyName(name: string): string | undefined { + if (name.includes('@')) return + const {scope} = this.config.pjson.oclif + if (!scope) return + return `@${scope}/plugin-${name}` } async uninstall(name: string): Promise { try { const pjson = await this.pjson() - if ( - (pjson.oclif.plugins || []).find( - p => typeof p === 'object' && p.type === 'user' && p.name === name, - ) - ) { + // @ts-expect-error because typescript doesn't think plugins could ever be an object + if ((pjson.oclif.plugins ?? []).some((p) => typeof p === 'object' && p.type === 'user' && p.name === name)) { await this.yarn.exec(['remove', name], { cwd: this.config.dataDir, verbose: this.verbose, }) } - } catch (error: any) { - ux.warn(error) + } catch (error: unknown) { + ux.warn(error as Error) } finally { await this.remove(name) } } async update(): Promise { - let plugins = (await this.list()).filter( - (p): p is Interfaces.PJSON.PluginTypes.User => p.type === 'user', - ) + // eslint-disable-next-line unicorn/no-await-expression-member + let plugins = (await this.list()).filter((p): p is Interfaces.PJSON.PluginTypes.User => p.type === 'user') if (plugins.length === 0) return ux.action.start(`${this.config.name}: Updating plugins`) // migrate deprecated plugins const aliases = this.config.pjson.oclif.aliases || {} for (const [name, to] of Object.entries(aliases)) { - const plugin = plugins.find(p => p.name === name) + const plugin = plugins.find((p) => p.name === name) if (!plugin) continue + // eslint-disable-next-line no-await-in-loop if (to) await this.install(to) + // eslint-disable-next-line no-await-in-loop await this.uninstall(name) - plugins = plugins.filter(p => p.name !== name) + plugins = plugins.filter((p) => p.name !== name) } - if (plugins.find(p => Boolean(p.url))) { + if (plugins.some((p) => Boolean(p.url))) { await this.yarn.exec(['upgrade'], { cwd: this.config.dataDir, verbose: this.verbose, }) } - const npmPlugins = plugins.filter(p => !p.url) + const npmPlugins = plugins.filter((p) => !p.url) const jitPlugins = this.config.pjson.oclif.jitPlugins ?? {} const modifiedPlugins: Interfaces.PJSON.PluginTypes[] = [] if (npmPlugins.length > 0) { await this.yarn.exec( - ['add', ...npmPlugins.map(p => { - // a not valid tag indicates that it's a dist-tag like 'latest' - if (!valid(p.tag)) return `${p.name}@${p.tag}` - - if (p.tag && valid(p.tag) && jitPlugins[p.name] && gt(p.tag, jitPlugins[p.name])) { - // The user has installed a version of the JIT plugin that is newer than the one - // specified by the root plugin's JIT configuration. In this case, we want to - // keep the version installed by the user. - return `${p.name}@${p.tag}` - } - - const tag = jitPlugins[p.name] ?? p.tag - modifiedPlugins.push({...p, tag}) - return `${p.name}@${tag}` - })], + [ + 'add', + ...npmPlugins.map((p) => { + // a not valid tag indicates that it's a dist-tag like 'latest' + if (!valid(p.tag)) return `${p.name}@${p.tag}` + + if (p.tag && valid(p.tag) && jitPlugins[p.name] && gt(p.tag, jitPlugins[p.name])) { + // The user has installed a version of the JIT plugin that is newer than the one + // specified by the root plugin's JIT configuration. In this case, we want to + // keep the version installed by the user. + return `${p.name}@${p.tag}` + } + + const tag = jitPlugins[p.name] ?? p.tag + modifiedPlugins.push({...p, tag}) + return `${p.name}@${tag}` + }), + ], {cwd: this.config.dataDir, verbose: this.verbose}, ) } @@ -275,68 +315,17 @@ export default class Plugins { await this.add(...modifiedPlugins) ux.action.stop() } - /* eslint-enable no-await-in-loop */ - - async hasPlugin( - name: string, - ): Promise< - Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.User | boolean - > { - const list = await this.list() - const friendly = list.find( - p => this.friendlyName(p.name) === this.friendlyName(name), - ) - const unfriendly = list.find( - p => this.unfriendlyName(p.name) === this.unfriendlyName(name), - ) - const link = list.find( - p => p.type === 'link' && path.resolve(p.root) === path.resolve(name), - ) - return (friendly ?? unfriendly ?? link ?? false) as - | Interfaces.PJSON.PluginTypes.Link - | Interfaces.PJSON.User - | boolean - } async yarnNodeVersion(): Promise { try { - const f = await loadJSON<{ nodeVersion: string }>( - path.join(this.config.dataDir, 'node_modules', '.yarn-integrity'), - ) + const f = await loadJSON<{nodeVersion: string}>(path.join(this.config.dataDir, 'node_modules', '.yarn-integrity')) return f.nodeVersion - } catch (error: any) { - if (error.code !== 'ENOENT') ux.warn(error) + } catch (error: unknown) { + const err = error as Error & {code?: string} + if (err.code !== 'ENOENT') ux.warn(err) } } - unfriendlyName(name: string): string | undefined { - if (name.includes('@')) return - const scope = this.config.pjson.oclif.scope - if (!scope) return - return `@${scope}/plugin-${name}` - } - - async maybeUnfriendlyName(name: string): Promise { - const unfriendly = this.unfriendlyName(name) - this.debug(`checking registry for expanded package name ${unfriendly}`) - if (unfriendly && (await this.npmHasPackage(unfriendly))) { - return unfriendly - } - - this.debug( - `expanded package name ${unfriendly} not found, using given package name ${name}`, - ) - return name - } - - friendlyName(name: string): string { - const scope = this.config.pjson.oclif.scope - if (!scope) return name - const match = name.match(`@${scope}/plugin-(.+)`) - if (!match) return name - return match[1] - } - private async createPJSON() { if (!fs.existsSync(this.pjsonPath)) { this.debug(`creating ${this.pjsonPath} with pjson: ${JSON.stringify(initPJSON, null, 2)}`) @@ -344,8 +333,43 @@ export default class Plugins { } } - private get pjsonPath() { - return path.join(this.config.dataDir, 'package.json') + private isValidPlugin(p: Config): boolean { + if (p.valid) return true + + if ( + !this.config.plugins.get('@oclif/plugin-legacy') || + // @ts-expect-error because _base is private + p._base.includes('@oclif/plugin-legacy') + ) { + return true + } + + throw new Errors.CLIError('plugin is invalid', { + suggestions: [ + 'Plugin failed to install because it does not appear to be a valid CLI plugin.\nIf you are sure it is, contact the CLI developer noting this error.', + ], + }) + } + + private normalizePlugins( + input: Interfaces.PJSON.User['oclif']['plugins'], + ): (Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User)[] { + const plugins = (input ?? []).map((p) => { + if (typeof p === 'string') { + return { + name: p, + tag: 'latest', + type: 'user', + } as Interfaces.PJSON.PluginTypes.User + } + + return p + }) + return uniqWith( + plugins, + // @ts-expect-error because typescript doesn't think it's possible for a plugin to have the `link` type here + (a, b) => a.name === b.name || (a.type === 'link' && b.type === 'link' && a.root === b.root), + ) } private async npmHasPackage(name: string): Promise { @@ -359,9 +383,9 @@ export default class Plugins { try { const npmShowResult = shelljs.exec(command, { - silent: true, async: false, encoding: 'utf8', + silent: true, }) if (npmShowResult.code !== 0) { this.debug(npmShowResult.stderr) @@ -375,51 +399,20 @@ export default class Plugins { } } - private async savePJSON(pjson: Interfaces.PJSON.User) { - pjson.oclif.plugins = this.normalizePlugins(pjson.oclif.plugins) - this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(pjson, null, 2)) - await fs.promises.mkdir(path.dirname(this.pjsonPath), {recursive: true}) - await fs.promises.writeFile(this.pjsonPath, JSON.stringify(pjson, null, 2)) - } - - private normalizePlugins( - input: Interfaces.PJSON.User['oclif']['plugins'], - ): (Interfaces.PJSON.PluginTypes.User | Interfaces.PJSON.PluginTypes.Link)[] { - let plugins = (input || []).map(p => { - if (typeof p === 'string') { - return { - name: p, - type: 'user', - tag: 'latest', - } as Interfaces.PJSON.PluginTypes.User - } - - return p - }) - plugins = uniqWith( - plugins, - (a, b) => - a.name === b.name || - (a.type === 'link' && b.type === 'link' && a.root === b.root), - ) - return plugins + private get pjsonPath() { + return path.join(this.config.dataDir, 'package.json') } - private isValidPlugin(p: Config): boolean { - if (p.valid) return true - - if (!this.config.getPluginsList().find(p => p.name === '@oclif/plugin-legacy') || - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore check if this plugin was loaded by `plugin-legacy` - p._base.includes('@oclif/plugin-legacy') - ) { - return true + private async savePJSON(pjson: Interfaces.PJSON.User) { + const updated = { + ...pjson, + oclif: { + ...pjson.oclif, + plugins: this.normalizePlugins(pjson.oclif.plugins), + }, } - - throw new Errors.CLIError('plugin is invalid', { - suggestions: [ - 'Plugin failed to install because it does not appear to be a valid CLI plugin.\nIf you are sure it is, contact the CLI developer noting this error.', - ], - }) + this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(updated, null, 2)) + await fs.promises.mkdir(path.dirname(this.pjsonPath), {recursive: true}) + await fs.promises.writeFile(this.pjsonPath, JSON.stringify(updated, null, 2)) } } diff --git a/src/util.ts b/src/util.ts index 2776054d..305f5c46 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,31 +1,30 @@ -import * as shelljs from 'shelljs' -import {type} from 'os' -import * as fs from 'fs' -import * as fsPromises from 'fs/promises' +import * as fs from 'node:fs' +import * as fsPromises from 'node:fs/promises' +import {createRequire} from 'node:module' +import {type} from 'node:os' import * as path from 'node:path' +import * as shelljs from 'shelljs' -export function sortBy(arr: T[], fn: (i: T) => sortBy.Types | sortBy.Types[]): T[] { - function compare(a: sortBy.Types | sortBy.Types[], b: sortBy.Types | sortBy.Types[]): number { - a = a === undefined ? 0 : a - b = b === undefined ? 0 : b +type Types = boolean | number | string | undefined - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length === 0 && b.length === 0) return 0 - const diff = compare(a[0], b[0]) - if (diff !== 0) return diff - return compare(a.slice(1), b.slice(1)) - } +function compare(a: Types | Types[], b: Types | Types[]): number { + a = a === undefined ? 0 : a + b = b === undefined ? 0 : b - if (a < b) return -1 - if (a > b) return 1 - return 0 + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length === 0 && b.length === 0) return 0 + const diff = compare(a[0], b[0]) + if (diff !== 0) return diff + return compare(a.slice(1), b.slice(1)) } - return arr.sort((a, b) => compare(fn(a), fn(b))) + if (a < b) return -1 + if (a > b) return 1 + return 0 } -export namespace sortBy { - export type Types = string | number | undefined | boolean +export function sortBy(arr: T[], fn: (i: T) => Types | Types[]): T[] { + return arr.sort((a, b) => compare(fn(a), fn(b))) } export function uniq(arr: T[]): T[] { @@ -33,9 +32,23 @@ export function uniq(arr: T[]): T[] { } export function uniqWith(arr: T[], fn: (a: T, b: T) => boolean): T[] { - return arr.filter((a, i) => { - return !arr.find((b, j) => j > i && fn(a, b)) - }) + return arr.filter((a, i) => !arr.some((b, j) => j > i && fn(a, b))) +} + +const isExecutable = (filepath: string): boolean => { + if (type() === 'Windows_NT') return filepath.endsWith('node.exe') + + try { + if (filepath.endsWith('node')) { + // This checks if the filepath is executable on Mac or Linux, if it is not it errors. + fs.accessSync(filepath, fs.constants.X_OK) + return true + } + } catch { + return false + } + + return false } /** @@ -46,23 +59,7 @@ export function uniqWith(arr: T[], fn: (a: T, b: T) => boolean): T[] { * @returns The path to the node executable. */ export function findNode(root: string): string { - const isExecutable = (filepath: string): boolean => { - if (type() === 'Windows_NT') return filepath.endsWith('node.exe') - - try { - if (filepath.endsWith('node')) { - // This checks if the filepath is executable on Mac or Linux, if it is not it errors. - fs.accessSync(filepath, fs.constants.X_OK) - return true - } - } catch { - return false - } - - return false - } - - const cliBinDirs = [path.join(root, 'bin'), path.join(root, 'client', 'bin')].filter(p => fs.existsSync(p)) + const cliBinDirs = [path.join(root, 'bin'), path.join(root, 'client', 'bin')].filter((p) => fs.existsSync(p)) if (cliBinDirs.length > 0) { // Find the node executable @@ -91,6 +88,7 @@ export function findNode(root: string): string { * @returns The path to the `npm/bin/npm-cli.js` file. */ export async function findNpm(): Promise { + const require = createRequire(import.meta.url) const npmPjsonPath = require.resolve('npm/package.json') const npmPjson = JSON.parse(await fsPromises.readFile(npmPjsonPath, {encoding: 'utf8'})) const npmPath = npmPjsonPath.slice(0, Math.max(0, npmPjsonPath.lastIndexOf(path.sep))) diff --git a/src/yarn.ts b/src/yarn.ts index 2e691f5c..692d0158 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -1,14 +1,18 @@ import {Interfaces, ux} from '@oclif/core' -import {fork} from 'child_process' +import makeDebug from 'debug' +import {fork} from 'node:child_process' +import {createRequire} from 'node:module' +import * as path from 'node:path' import NpmRunPath from 'npm-run-path' -import * as path from 'path' -const debug = require('debug')('cli:yarn') +const debug = makeDebug('cli:yarn') + +const require = createRequire(import.meta.url) export default class Yarn { config: Interfaces.Config - constructor({config}: { config: Interfaces.Config }) { + constructor({config}: {config: Interfaces.Config}) { this.config = config } @@ -16,50 +20,19 @@ export default class Yarn { return require.resolve('yarn/bin/yarn.js') } - fork(modulePath: string, args: string[] = [], options: any = {}): Promise { - return new Promise((resolve, reject) => { - const forked = fork(modulePath, args, options) - forked.stderr?.on('data', (d: any) => process.stderr.write(d)) - forked.stdout?.setEncoding('utf8') - forked.stdout?.on('data', (d: any) => { - if (options.verbose) process.stdout.write(d) - else ux.action.status = d.replace(/\n$/, '').split('\n').pop() - }) - - forked.on('error', reject) - forked.on('exit', (code: number) => { - if (code === 0) { - resolve() - } else { - reject(new Error(`${modulePath} ${args.join(' ')} exited with code ${code}`)) - } - }) - - // Fix windows bug with node-gyp hanging for input forever - // if (this.config.windows) { - // forked.stdin.write('\n') - // } - }) - } - - // eslint-disable-next-line default-param-last async exec(args: string[] = [], opts: {cwd: string; verbose: boolean}): Promise { - const cwd = opts.cwd + const {cwd, verbose} = opts if (args[0] !== 'run') { // https://classic.yarnpkg.com/lang/en/docs/cli/#toc-concurrency-and-mutex // Default port is: 31997 const port = this.config.scopedEnvVar('NETWORK_MUTEX_PORT') const optionalPort = port ? `:${port}` : '' - const mutex = this.config.scopedEnvVar('USE_NETWORK_MUTEX') ? `network${optionalPort}` : `file:${path.join(cwd, 'yarn.lock')}` + const mutex = this.config.scopedEnvVar('USE_NETWORK_MUTEX') + ? `network${optionalPort}` + : `file:${path.join(cwd, 'yarn.lock')}` const cacheDir = path.join(this.config.cacheDir, 'yarn') - args = [ - ...args, - '--non-interactive', - `--mutex=${mutex}`, - `--preferred-cache-folder=${cacheDir}`, - '--check-files', - ] - if (opts.verbose) { + args = [...args, '--non-interactive', `--mutex=${mutex}`, `--preferred-cache-folder=${cacheDir}`, '--check-files'] + if (verbose) { args.push('--verbose') } @@ -72,14 +45,14 @@ export default class Yarn { const options = { ...opts, cwd, - stdio: [0, null, null, 'ipc'], env: npmRunPath.env({cwd, env: process.env}), - // Remove --loader ts-node/esm from execArgv so that the subprocess doesn't fail if it can't find ts-node. // The ts-node/esm loader isn't need to execute yarn commands anyways. execArgv: process.execArgv.join(' ').replace('--loader ts-node/esm', '').split(' ').filter(Boolean), + // Remove --loader ts-node/esm from execArgv so that the subprocess doesn't fail if it can't find ts-node. + stdio: [0, null, null, 'ipc'], } - if (opts.verbose) { + if (verbose) { process.stderr.write(`${cwd}: ${this.bin} ${args.join(' ')}`) } @@ -87,11 +60,12 @@ export default class Yarn { try { await this.fork(this.bin, args, options) debug('yarn done') - } catch (error: any) { + } catch (error: unknown) { + const {message} = error as Error & {message: string} debug('yarn error', error) // to-do: https://github.com/yarnpkg/yarn/issues/2191 const networkConcurrency = '--network-concurrency=1' - if (error.message.includes('EAI_AGAIN') && !args.includes(networkConcurrency)) { + if (message.includes('EAI_AGAIN') && !args.includes(networkConcurrency)) { debug('EAI_AGAIN') return this.exec([...args, networkConcurrency], opts) } @@ -99,4 +73,30 @@ export default class Yarn { throw error } } + + fork(modulePath: string, args: string[] = [], options: Record = {}): Promise { + return new Promise((resolve, reject) => { + const forked = fork(modulePath, args, options) + forked.stderr?.on('data', (d) => process.stderr.write(d)) + forked.stdout?.setEncoding('utf8') + forked.stdout?.on('data', (d) => { + if (options.verbose) process.stdout.write(d) + else ux.action.status = d.replace(/\n$/, '').split('\n').pop() + }) + + forked.on('error', reject) + forked.on('exit', (code: number) => { + if (code === 0) { + resolve() + } else { + reject(new Error(`${modulePath} ${args.join(' ')} exited with code ${code}`)) + } + }) + + // Fix windows bug with node-gyp hanging for input forever + // if (this.config.windows) { + // forked.stdin.write('\n') + // } + }) + } } diff --git a/test/commands/plugins/index.test.ts b/test/commands/plugins/index.test.ts index 7f019e96..b32b5319 100644 --- a/test/commands/plugins/index.test.ts +++ b/test/commands/plugins/index.test.ts @@ -1,117 +1,127 @@ -import {expect, test} from '../../test' import {platform} from 'node:os' +import {expect, test} from '../../test.js' + describe('command', () => { test - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .command(['plugins:install', '@oclif/example-plugin-ts'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.contain('@oclif/example-plugin-ts ')) - .stdout() - .command(['hello'], {reset: true}) - .do(output => expect(output.stdout).to.contain('hello world')) - .command(['plugins:uninstall', '@heroku-cli/plugin-@oclif/example-plugin-ts']) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls @oclif/example-plugin-ts') + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .command(['plugins:install', '@oclif/example-plugin-ts'], {reset: true}) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('@oclif/example-plugin-ts ')) + .stdout() + .command(['hello'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('hello world')) + .command(['plugins:uninstall', '@heroku-cli/plugin-@oclif/example-plugin-ts']) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('installs and uninstalls @oclif/example-plugin-ts') test - .stdout() - .command(['plugins', '--json'], {reset: true}) - .do(output => - expect((output.returned as [{name: string}]).find(o => o.name === '@oclif/example-plugin-ts')).to.be.undefined, - ) - .command(['plugins:install', '@oclif/example-plugin-ts'], {reset: true}) - .stdout() - .command(['plugins', '--json'], {reset: true}) - .do(output => expect((output.returned as [{name: string}]).find(o => o.name === '@oclif/example-plugin-ts')).to.have.property('type', 'user')) - .stdout() - .command(['hello'], {reset: true}) - .do(output => expect(output.stdout).to.contain('hello world')) - .command(['plugins:uninstall', '@heroku-cli/plugin-@oclif/example-plugin-ts']) - .stdout() - .command(['plugins', '--json'], {reset: true}) - .do(output => - expect((output.returned as [{name: string}]).find(o => o.name === '@oclif/example-plugin-ts')).to.be.undefined, - ) - .it('installs and uninstalls @oclif/example-plugin-ts (--json)') + .stdout() + .command(['plugins', '--json'], {reset: true}) + .do( + (output) => + expect((output.returned as [{name: string}]).find((o) => o.name === '@oclif/example-plugin-ts')).to.be + .undefined, + ) + .command(['plugins:install', '@oclif/example-plugin-ts'], {reset: true}) + .stdout() + .command(['plugins', '--json'], {reset: true}) + .do((output) => + expect((output.returned as [{name: string}]).find((o) => o.name === '@oclif/example-plugin-ts')).to.have.property( + 'type', + 'user', + ), + ) + .stdout() + .command(['hello'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('hello world')) + .command(['plugins:uninstall', '@heroku-cli/plugin-@oclif/example-plugin-ts']) + .stdout() + .command(['plugins', '--json'], {reset: true}) + .do( + (output) => + expect((output.returned as [{name: string}]).find((o) => o.name === '@oclif/example-plugin-ts')).to.be + .undefined, + ) + .it('installs and uninstalls @oclif/example-plugin-ts (--json)') test - .command(['plugins:install', '@oclif/example-plugin-ts@latest'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.contain('@oclif/example-plugin-ts')) - .command(['plugins:uninstall', '@oclif/example-plugin-ts@latest'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls @oclif/example-plugin-ts with tags') + .command(['plugins:install', '@oclif/example-plugin-ts@latest'], {reset: true}) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('@oclif/example-plugin-ts')) + .command(['plugins:uninstall', '@oclif/example-plugin-ts@latest'], {reset: true}) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('installs and uninstalls @oclif/example-plugin-ts with tags') if (platform() !== 'win32') { test - .command(['plugins:install', 'aliasme'], {reset: true}) + .command(['plugins:install', 'aliasme'], {reset: true}) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('oclif-debug')) + .stdout() + .command(['debug'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('debug')) + .command(['plugins:uninstall', 'oclif-debug']) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('installs via an alias') + } + + test + .command(['plugins:install', 'jdxcode/oclif-debug'], {reset: true}) .stdout() .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.contain('oclif-debug')) + .do((output) => expect(output.stdout).to.contain('oclif-debug')) .stdout() .command(['debug'], {reset: true}) - .do(output => expect(output.stdout).to.contain('debug')) + .do((output) => expect(output.stdout).to.contain('debug')) .command(['plugins:uninstall', 'oclif-debug']) .stdout() .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs via an alias') - } - - test - .command(['plugins:install', 'jdxcode/oclif-debug'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.contain('oclif-debug')) - .stdout() - .command(['debug'], {reset: true}) - .do(output => expect(output.stdout).to.contain('debug')) - .command(['plugins:uninstall', 'oclif-debug']) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls jdxcode/oclif-debug') + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('installs and uninstalls jdxcode/oclif-debug') if (platform() !== 'win32') { test - .command(['plugins:install', 'stubbed'], {reset: true}) - .catch(/1/) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('does not install if unsure if scoped package does not exist') + .command(['plugins:install', 'stubbed'], {reset: true}) + .catch(/1/) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('does not install if unsure if scoped package does not exist') } test - .command(['plugins:install', '@salesforce/plugin-custom-metadata'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.contain('custom-metadata')) - .command(['plugins:uninstall', '@salesforce/plugin-custom-metadata']) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls plugin with oclif.lock') + .command(['plugins:install', '@salesforce/plugin-custom-metadata'], {reset: true}) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('custom-metadata')) + .command(['plugins:uninstall', '@salesforce/plugin-custom-metadata']) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('installs and uninstalls plugin with oclif.lock') test - .command(['plugins:install', '@salesforce/plugin-custom-metadata@2.2.0'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.contain('custom-metadata')) - .command(['plugins:uninstall', '@salesforce/plugin-custom-metadata']) - .stdout() - .command(['plugins'], {reset: true}) - .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls specific plugin version with oclif.lock') + .command(['plugins:install', '@salesforce/plugin-custom-metadata@2.2.0'], {reset: true}) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.contain('custom-metadata')) + .command(['plugins:uninstall', '@salesforce/plugin-custom-metadata']) + .stdout() + .command(['plugins'], {reset: true}) + .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) + .it('installs and uninstalls specific plugin version with oclif.lock') // test // .command(['plugins:install', 'heroku-debug@beta'], {reset: true}) diff --git a/test/commands/plugins/uninstall.test.ts b/test/commands/plugins/uninstall.test.ts index 0ae8ea8a..0c882c7c 100644 --- a/test/commands/plugins/uninstall.test.ts +++ b/test/commands/plugins/uninstall.test.ts @@ -1,8 +1,8 @@ -import {test} from '../../test' +import {test} from '../../test.js' describe('command', () => { test - .command(['plugins:uninstall', 'foobar'], {reset: true}) - .catch(/foobar is not installed/) - .it('uninstall non-existent plugin') + .command(['plugins:uninstall', 'foobar'], {reset: true}) + .catch(/foobar is not installed/) + .it('uninstall non-existent plugin') }) diff --git a/test/helpers/init.js b/test/helpers/init.js deleted file mode 100644 index f8e35e6c..00000000 --- a/test/helpers/init.js +++ /dev/null @@ -1,2 +0,0 @@ -const path = require('path') -process.env.TS_NODE_PROJECT = path.resolve('test/tsconfig.json') diff --git a/test/integration/sf.integration.ts b/test/integration/sf.integration.ts index 71488276..a2499a16 100644 --- a/test/integration/sf.integration.ts +++ b/test/integration/sf.integration.ts @@ -1,17 +1,16 @@ +import {expect} from 'chai' +import chalk from 'chalk' import {exec as cpExec} from 'node:child_process' import {mkdir} from 'node:fs/promises' import {join, resolve} from 'node:path' -import {expect} from 'chai' -import {dim} from 'chalk' - -async function exec(command: string): Promise<{stdout: string, stderr: string, code: number}> { +async function exec(command: string): Promise<{code: number; stderr: string; stdout: string}> { return new Promise((resolve, reject) => { cpExec(command, (error, stdout, stderr) => { if (error) { reject(error) } else { - resolve({stdout, stderr, code: 0}) + resolve({code: 0, stderr, stdout}) } }) }) @@ -20,7 +19,7 @@ async function exec(command: string): Promise<{stdout: string, stderr: string, c async function ensureSfExists(): Promise { try { const {stdout} = await exec('sf --version') - console.log('sf version:', dim(stdout.trim())) + console.log('sf version:', chalk.dim(stdout.trim())) return true } catch { return false @@ -39,9 +38,9 @@ describe('sf Integration', () => { mkdir(process.env.SF_CACHE_DIR, {recursive: true}) mkdir(process.env.SF_CONFIG_DIR, {recursive: true}) - console.log('process.env.SF_DATA_DIR:', dim(process.env.SF_DATA_DIR)) - console.log('process.env.SF_CACHE_DIR:', dim(process.env.SF_CACHE_DIR)) - console.log('process.env.SF_CONFIG_DIR:', dim(process.env.SF_CONFIG_DIR)) + console.log('process.env.SF_DATA_DIR:', chalk.dim(process.env.SF_DATA_DIR)) + console.log('process.env.SF_CACHE_DIR:', chalk.dim(process.env.SF_CACHE_DIR)) + console.log('process.env.SF_CONFIG_DIR:', chalk.dim(process.env.SF_CONFIG_DIR)) await exec('sf plugins link') const {stdout} = await exec('sf plugins --core') diff --git a/test/test.ts b/test/test.ts index 806535b1..d1547352 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,16 +1,18 @@ import {Config} from '@oclif/core' import * as Fancy from '@oclif/test' -import {rm} from 'fs/promises' +import {rm} from 'node:fs/promises' export const test = Fancy.test -.finally(async () => { - const config = await Config.load() - await Promise.all([ - // fs.remove(config.cacheDir), - rm(config.configDir, {recursive: true, force: true}), - rm(config.dataDir, {recursive: true, force: true}), - ]) -}) + // eslint-disable-next-line unicorn/prefer-top-level-await + .finally(async () => { + const config = await Config.load() + await Promise.all([ + // fs.remove(config.cacheDir), + rm(config.configDir, {force: true, recursive: true}), + rm(config.dataDir, {force: true, recursive: true}), + ]) + }) + +export * as Fancy from '@oclif/test' export {expect} from 'fancy-test' -export {Fancy} diff --git a/test/tsconfig.json b/test/tsconfig.json index 15a4c580..b9fdd635 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,10 +1,4 @@ { "extends": "../tsconfig", - "compilerOptions": { - "sourceMap": true - }, - "include": [ - "./**/*", - "../src/**/*" - ] + "include": ["./**/*", "../src/**/*"] } diff --git a/tsconfig.json b/tsconfig.json index c6454f7a..a1f2dcc5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,17 +2,16 @@ "compilerOptions": { "declaration": true, "forceConsistentCasingInFileNames": true, - "importHelpers": true, - "module": "commonjs", + "module": "Node16", "outDir": "./lib", "pretty": true, - "rootDirs": [ - "./src" - ], + "rootDirs": ["./src"], "strict": true, - "target": "es2017" + "target": "ES2022", + "moduleResolution": "Node16" }, - "include": [ - "./src/**/*" - ] + "include": ["./src/**/*"], + "ts-node": { + "esm": true + } } diff --git a/yarn.lock b/yarn.lock index 442933c4..0e2d1b25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,362 +2,198 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/compat-data@^7.16.0": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" - integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== - -"@babel/core@^7.12.16": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helpers" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/eslint-parser@^7.12.16": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz#2a6b1702f3f5aea48e00cea5a5bcc241c437e459" - integrity sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ== - dependencies: - eslint-scope "^5.1.1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" - -"@babel/generator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== - dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-compilation-targets@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" - integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== - dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== - dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" - integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-member-expression-to-functions@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" - integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-module-imports@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" - integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-module-transforms@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" - integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== - dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-simple-access" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-optimise-call-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" - integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-replace-supers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" - integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-simple-access@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" - integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helpers@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" - integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== - dependencies: - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.3" - "@babel/types" "^7.16.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@babel/code-frame@^7.0.0": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.16.0", "@babel/parser@^7.16.3": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" - integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== - -"@babel/template@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@commitlint/cli@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.4.tgz#af4d9dd3c0122c7b39a61fa1cd2abbad0422dbe0" - integrity sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg== - dependencies: - "@commitlint/format" "^12.1.4" - "@commitlint/lint" "^12.1.4" - "@commitlint/load" "^12.1.4" - "@commitlint/read" "^12.1.4" - "@commitlint/types" "^12.1.4" - lodash "^4.17.19" +"@commitlint/cli@^17.8.0": + version "17.8.0" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.8.0.tgz#917761331df4b7a0b97b2b31415b006847b6fd02" + integrity sha512-D3LdyZYbiRyAChfJMNlAd9f2P9vNQ7GWbI9gN2o7L5hF07QJDqj4z/pcJF3PjDbJWOaUUXla287RdDmmKqH2WQ== + dependencies: + "@commitlint/format" "^17.4.4" + "@commitlint/lint" "^17.8.0" + "@commitlint/load" "^17.8.0" + "@commitlint/read" "^17.5.1" + "@commitlint/types" "^17.4.4" + execa "^5.0.0" + lodash.isfunction "^3.0.9" resolve-from "5.0.0" resolve-global "1.0.0" - yargs "^16.2.0" - -"@commitlint/config-conventional@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.4.tgz#95bbab622f117a8a3e49f95917b08655040c66a8" - integrity sha512-ZIdzmdy4o4WyqywMEpprRCrehjCSQrHkaRTVZV411GyLigFQHlEBSJITAihLAWe88Qy/8SyoIe5uKvAsV5vRqQ== - dependencies: - conventional-changelog-conventionalcommits "^4.3.1" - -"@commitlint/ensure@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.4.tgz#287ae2dcc5ccb086e749705b1bd9bdb99773056f" - integrity sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw== - dependencies: - "@commitlint/types" "^12.1.4" - lodash "^4.17.19" - -"@commitlint/execute-rule@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz#9973b02e9779adbf1522ae9ac207a4815ec73de1" - integrity sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg== - -"@commitlint/format@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/format/-/format-12.1.4.tgz#db2d46418a6ae57c90e5f7f65dff46f0265d9f24" - integrity sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g== - dependencies: - "@commitlint/types" "^12.1.4" - chalk "^4.0.0" - -"@commitlint/is-ignored@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz#4c430bc3b361aa9be5cd4ddb252c1559870ea7bc" - integrity sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw== - dependencies: - "@commitlint/types" "^12.1.4" - semver "7.3.5" - -"@commitlint/lint@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.4.tgz#856b7fd2b2e6367b836cb84a12f1c1b3c0e40d22" - integrity sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA== - dependencies: - "@commitlint/is-ignored" "^12.1.4" - "@commitlint/parse" "^12.1.4" - "@commitlint/rules" "^12.1.4" - "@commitlint/types" "^12.1.4" + yargs "^17.0.0" + +"@commitlint/config-conventional@^17.8.0": + version "17.8.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.8.0.tgz#3bb030ea4133d3ea57fe1042318e669b929205cb" + integrity sha512-MgiFXujmqAvi7M33C7OSMTznwrVkckrbXe/aZWQ/+KFGLLF6IE50XIcjGrW0/uiDGb/im5qbqF2dh1dCFNa+sQ== + dependencies: + conventional-changelog-conventionalcommits "^6.1.0" + +"@commitlint/config-validator@^17.6.7": + version "17.6.7" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.6.7.tgz#c664d42a1ecf5040a3bb0843845150f55734df41" + integrity sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ== + dependencies: + "@commitlint/types" "^17.4.4" + ajv "^8.11.0" + +"@commitlint/ensure@^17.6.7": + version "17.6.7" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-17.6.7.tgz#77a77a0c05e6a1c34589f59e82e6cb937101fc4b" + integrity sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw== + dependencies: + "@commitlint/types" "^17.4.4" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.upperfirst "^4.3.1" + +"@commitlint/execute-rule@^17.4.0": + version "17.4.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz#4518e77958893d0a5835babe65bf87e2638f6939" + integrity sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA== + +"@commitlint/format@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-17.4.4.tgz#0f6e1b4d7a301c7b1dfd4b6334edd97fc050b9f5" + integrity sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ== + dependencies: + "@commitlint/types" "^17.4.4" + chalk "^4.1.0" -"@commitlint/load@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/load/-/load-12.1.4.tgz#e3c2dbc0e7d8d928f57a6878bd7219909fc0acab" - integrity sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA== - dependencies: - "@commitlint/execute-rule" "^12.1.4" - "@commitlint/resolve-extends" "^12.1.4" - "@commitlint/types" "^12.1.4" - chalk "^4.0.0" - cosmiconfig "^7.0.0" - lodash "^4.17.19" +"@commitlint/is-ignored@^17.8.0": + version "17.8.0" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.8.0.tgz#429a050cebe8dc56dd4fe4f4c23ea9e1a679dfc6" + integrity sha512-8bR6rxNcWaNprPBdE4ePIOwbxutTQGOsRPYWssX+zjGxnEljzaZSGzFUOMxapYILlf8Tts/O1wPQgG549Rdvdg== + dependencies: + "@commitlint/types" "^17.4.4" + semver "7.5.4" + +"@commitlint/lint@^17.8.0": + version "17.8.0" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.8.0.tgz#d3a7fafe810db060aea15322e30384896da887f9" + integrity sha512-4ihwnqOY4TcJN6iz5Jv1LeYavvBllONwFyGxOIWmCT5s4PNMb43cws2TUdbXTZL1Vq59etGKd5LWYDFPVbs5EA== + dependencies: + "@commitlint/is-ignored" "^17.8.0" + "@commitlint/parse" "^17.7.0" + "@commitlint/rules" "^17.7.0" + "@commitlint/types" "^17.4.4" + +"@commitlint/load@^17.8.0": + version "17.8.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.8.0.tgz#82f6c7555daecb4ce4b8a6282fcecc3665747578" + integrity sha512-9VnGXYJCP4tXmR4YrwP8n5oX6T5ZsHfPQq6WuUQOvAI+QsDQMaTGgTRXr7us+xsjz+b+mMBSagogqfUx2aixyw== + dependencies: + "@commitlint/config-validator" "^17.6.7" + "@commitlint/execute-rule" "^17.4.0" + "@commitlint/resolve-extends" "^17.6.7" + "@commitlint/types" "^17.4.4" + "@types/node" "20.5.1" + chalk "^4.1.0" + cosmiconfig "^8.0.0" + cosmiconfig-typescript-loader "^4.0.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" resolve-from "^5.0.0" - -"@commitlint/message@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/message/-/message-12.1.4.tgz#3895edcc0709deca5945f3d55f5ea95a9f1f446d" - integrity sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA== - -"@commitlint/parse@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.4.tgz#ba03d54d24ef84f6fd2ff31c5e9998b22d7d0aa1" - integrity sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw== - dependencies: - "@commitlint/types" "^12.1.4" - conventional-changelog-angular "^5.0.11" - conventional-commits-parser "^3.0.0" - -"@commitlint/read@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/read/-/read-12.1.4.tgz#552fda42ef185d5b578beb6f626a5f8b282de3a6" - integrity sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg== - dependencies: - "@commitlint/top-level" "^12.1.4" - "@commitlint/types" "^12.1.4" - fs-extra "^9.0.0" - git-raw-commits "^2.0.0" - -"@commitlint/resolve-extends@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz#e758ed7dcdf942618b9f603a7c28a640f6a0802a" - integrity sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg== - dependencies: + ts-node "^10.8.1" + typescript "^4.6.4 || ^5.0.0" + +"@commitlint/message@^17.4.2": + version "17.4.2" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-17.4.2.tgz#f4753a79701ad6db6db21f69076e34de6580e22c" + integrity sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q== + +"@commitlint/parse@^17.7.0": + version "17.7.0" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.7.0.tgz#aacb2d189e50ab8454154b1df150aaf20478ae47" + integrity sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag== + dependencies: + "@commitlint/types" "^17.4.4" + conventional-changelog-angular "^6.0.0" + conventional-commits-parser "^4.0.0" + +"@commitlint/read@^17.5.1": + version "17.5.1" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.5.1.tgz#fec903b766e2c41e3cefa80630040fcaba4f786c" + integrity sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg== + dependencies: + "@commitlint/top-level" "^17.4.0" + "@commitlint/types" "^17.4.4" + fs-extra "^11.0.0" + git-raw-commits "^2.0.11" + minimist "^1.2.6" + +"@commitlint/resolve-extends@^17.6.7": + version "17.6.7" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz#9c53a4601c96ab2dd20b90fb35c988639307735d" + integrity sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg== + dependencies: + "@commitlint/config-validator" "^17.6.7" + "@commitlint/types" "^17.4.4" import-fresh "^3.0.0" - lodash "^4.17.19" + lodash.mergewith "^4.6.2" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.4.tgz#0e141b08caa3d7bdc48aa784baa8baff3efd64db" - integrity sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg== +"@commitlint/rules@^17.7.0": + version "17.7.0" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.7.0.tgz#b97a4933c5cba11a659a19ee467f6f000f31533e" + integrity sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA== dependencies: - "@commitlint/ensure" "^12.1.4" - "@commitlint/message" "^12.1.4" - "@commitlint/to-lines" "^12.1.4" - "@commitlint/types" "^12.1.4" + "@commitlint/ensure" "^17.6.7" + "@commitlint/message" "^17.4.2" + "@commitlint/to-lines" "^17.4.0" + "@commitlint/types" "^17.4.4" + execa "^5.0.0" -"@commitlint/to-lines@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.4.tgz#caa582dbf121f377a0588bb64e25c4854843cd25" - integrity sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw== +"@commitlint/to-lines@^17.4.0": + version "17.4.0" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-17.4.0.tgz#9bd02e911e7d4eab3fb4a50376c4c6d331e10d8d" + integrity sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg== -"@commitlint/top-level@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.4.tgz#96d5c715bfc1bdf86dfcf11b67fc2cf7658c7a6e" - integrity sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg== +"@commitlint/top-level@^17.4.0": + version "17.4.0" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-17.4.0.tgz#540cac8290044cf846fbdd99f5cc51e8ac5f27d6" + integrity sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g== dependencies: find-up "^5.0.0" -"@commitlint/types@^12.1.4": - version "12.1.4" - resolved "https://registry.npmjs.org/@commitlint/types/-/types-12.1.4.tgz#9618a5dc8991fb58e6de6ed89d7bf712fa74ba7e" - integrity sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw== +"@commitlint/types@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.4.4.tgz#1416df936e9aad0d6a7bbc979ecc31e55dade662" + integrity sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ== dependencies: - chalk "^4.0.0" + chalk "^4.1.0" "@cspotcode/source-map-support@^0.8.0": version "0.8.1" @@ -366,36 +202,58 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== + "@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.0": +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== @@ -414,18 +272,18 @@ "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -435,42 +293,31 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@npmcli/agent@^2.0.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.0.tgz#e81f00fdb2a670750ff7731bbefb47ecbf0ccf44" - integrity sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q== - dependencies: - agent-base "^7.1.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.1" - lru-cache "^10.0.1" - socks-proxy-agent "^8.0.1" - "@npmcli/arborist@^4.0.4": - version "4.2.1" - resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-4.2.1.tgz#b0bbeb2036460b7a85adca42e2b2226fc349aa0d" - integrity sha512-vAIfPwW6alsyjfv7wzGPMJv6Dun8xs9VugdqfwkWEyRajzOLjeifxeDqlJYQ8G8FTU38grIWjkoUmd9cAnJnPg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-4.3.1.tgz#a08cddce3339882f688c1dea1651f6971e781c44" + integrity sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A== dependencies: "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/installed-package-contents" "^1.0.7" @@ -491,7 +338,7 @@ npm-install-checks "^4.0.0" npm-package-arg "^8.1.5" npm-pick-manifest "^6.1.0" - npm-registry-fetch "^11.0.0" + npm-registry-fetch "^12.0.1" pacote "^12.0.2" parse-conflict-json "^2.0.1" proc-log "^1.0.0" @@ -505,10 +352,10 @@ treeverse "^1.0.4" walk-up-path "^1.0.0" -"@npmcli/arborist@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.3.0.tgz#df37c79f7b82a2de8986fb9061b40efb4d188a38" - integrity sha512-XrS14qBDhK95RdGhjTSx8AgeZPNah949qp3b0v3GUFOugtPc9Z85rpWid57mONS8gHbuGIHjFzuA+5hSM7BuBA== +"@npmcli/arborist@^6.3.0", "@npmcli/arborist@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.5.0.tgz#ee24ecc56e4c387d78c3bce66918b386df6bd560" + integrity sha512-Ir14P+DyH4COJ9fVbmxVy+9GmyU3e/DnlBtijVN7B3Ri53Y9QmAqi1S9IifG0PTGsfa2U4zhAF8e6I/0VXfWjg== dependencies: "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/fs" "^3.1.0" @@ -528,7 +375,7 @@ json-stringify-nice "^1.1.4" minimatch "^9.0.0" nopt "^7.0.0" - npm-install-checks "^6.0.0" + npm-install-checks "^6.2.0" npm-package-arg "^10.1.0" npm-pick-manifest "^8.0.1" npm-registry-fetch "^14.0.3" @@ -544,49 +391,10 @@ treeverse "^3.0.0" walk-up-path "^3.0.1" -"@npmcli/arborist@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-7.2.0.tgz#78768fd3d221190700dd61b75fb4237fbc89df3e" - integrity sha512-J6XCan+5nV6F94E0+9z//OnZADcqHw6HGDO0ynX+Ayd6GEopK0odq99V+UQjb8P1zexTmCWGvxp4jU5OM6NTtg== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/fs" "^3.1.0" - "@npmcli/installed-package-contents" "^2.0.2" - "@npmcli/map-workspaces" "^3.0.2" - "@npmcli/metavuln-calculator" "^7.0.0" - "@npmcli/name-from-folder" "^2.0.0" - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.0.0" - "@npmcli/query" "^3.0.1" - "@npmcli/run-script" "^7.0.1" - bin-links "^4.0.1" - cacache "^18.0.0" - common-ancestor-path "^1.0.1" - hosted-git-info "^7.0.1" - json-parse-even-better-errors "^3.0.0" - json-stringify-nice "^1.1.4" - minimatch "^9.0.0" - nopt "^7.0.0" - npm-install-checks "^6.2.0" - npm-package-arg "^11.0.1" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^16.0.0" - npmlog "^7.0.1" - pacote "^17.0.4" - parse-conflict-json "^3.0.0" - proc-log "^3.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^1.0.2" - read-package-json-fast "^3.0.2" - semver "^7.3.7" - ssri "^10.0.5" - treeverse "^3.0.0" - walk-up-path "^3.0.1" - "@npmcli/config@^6.2.1": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-6.3.0.tgz#9fda323682fdd0505e9584358f6de502b0d01a81" - integrity sha512-gV64pm5cQ7F2oeoSJ5HTfaKxjFsvC4dAbCsQbtbOkEOymM6iZI62yNGCOLjcq/rfYX9+wVn34ThxK7GZpUwWFg== + version "6.4.0" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-6.4.0.tgz#3b1ddfa0c452fd09beac2cf05ca49b76c7a36bc8" + integrity sha512-/fQjIbuNVIT/PbXvw178Tm97bxV0E0nVUFKHivMKtSI2pcs8xKdaWkHJxf9dTI0G/y5hp/KuCvgcUu5HwAtI1w== dependencies: "@npmcli/map-workspaces" "^3.0.2" ci-info "^3.8.0" @@ -605,9 +413,9 @@ ansi-styles "^4.3.0" "@npmcli/fs@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" - integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" @@ -629,7 +437,7 @@ "@npmcli/git@^2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== dependencies: "@npmcli/promise-spawn" "^1.3.2" @@ -641,21 +449,7 @@ semver "^7.3.5" which "^2.0.2" -"@npmcli/git@^4.0.0", "@npmcli/git@^4.0.1": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" - integrity sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg== - dependencies: - "@npmcli/promise-spawn" "^6.0.0" - lru-cache "^7.4.4" - npm-pick-manifest "^8.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^3.0.0" - -"@npmcli/git@^4.1.0": +"@npmcli/git@^4.0.0", "@npmcli/git@^4.0.1", "@npmcli/git@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== @@ -669,23 +463,9 @@ semver "^7.3.5" which "^3.0.0" -"@npmcli/git@^5.0.0": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.3.tgz#ad3ede0994bcf716ddb63d361f3ea16cb72d878c" - integrity sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw== - dependencies: - "@npmcli/promise-spawn" "^7.0.0" - lru-cache "^10.0.1" - npm-pick-manifest "^9.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^4.0.0" - "@npmcli/installed-package-contents@^1.0.6", "@npmcli/installed-package-contents@^1.0.7": version "1.0.7" - resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== dependencies: npm-bundled "^1.1.1" @@ -700,14 +480,14 @@ npm-normalize-package-bin "^3.0.0" "@npmcli/map-workspaces@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.0.tgz#e342efbbdd0dad1bba5d7723b674ca668bf8ac5a" - integrity sha512-QBJfpCY1NOAkkW3lFfru9VTdqvMB2TN0/vrevl5xBCv5Fi0XDVcA6rqqSau4Ysi4Iw3fBzyXV7hzyTBDfadf7g== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" + integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== dependencies: "@npmcli/name-from-folder" "^1.0.1" - glob "^7.1.6" - minimatch "^3.0.4" - read-package-json-fast "^2.0.1" + glob "^8.0.1" + minimatch "^5.0.1" + read-package-json-fast "^2.0.3" "@npmcli/map-workspaces@^3.0.2", "@npmcli/map-workspaces@^3.0.4": version "3.0.4" @@ -721,7 +501,7 @@ "@npmcli/metavuln-calculator@^2.0.0": version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz#70937b8b5a5cad5c588c8a7b38c4a8bd6f62c84c" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz#70937b8b5a5cad5c588c8a7b38c4a8bd6f62c84c" integrity sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg== dependencies: cacache "^15.0.5" @@ -739,19 +519,9 @@ pacote "^15.0.0" semver "^7.3.5" -"@npmcli/metavuln-calculator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-7.0.0.tgz#fb59245926d7f677db904177f9aca15ac883d6cb" - integrity sha512-Pw0tyX02VkpqlIQlG2TeiJNsdrecYeUU0ubZZa9pi3N37GCsxI+en43u4hYFdq+eSx1A9a9vwFAUyqEtKFsbHQ== - dependencies: - cacache "^18.0.0" - json-parse-even-better-errors "^3.0.0" - pacote "^17.0.0" - semver "^7.3.5" - "@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": version "1.1.2" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" @@ -767,7 +537,7 @@ "@npmcli/name-from-folder@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== "@npmcli/name-from-folder@^2.0.0": @@ -777,7 +547,7 @@ "@npmcli/node-gyp@^1.0.2", "@npmcli/node-gyp@^1.0.3": version "1.0.3" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== "@npmcli/node-gyp@^3.0.0": @@ -787,7 +557,7 @@ "@npmcli/package-json@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" integrity sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg== dependencies: json-parse-even-better-errors "^2.3.1" @@ -805,22 +575,9 @@ proc-log "^3.0.0" semver "^7.5.3" -"@npmcli/package-json@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.0.0.tgz#77d0f8b17096763ccbd8af03b7117ba6e34d6e91" - integrity sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^3.0.0" - semver "^7.5.3" - "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": version "1.3.2" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== dependencies: infer-owner "^1.0.4" @@ -832,21 +589,7 @@ dependencies: which "^3.0.0" -"@npmcli/promise-spawn@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz#fd1c64ed4ff2341e503e1f390c62640a6540df09" - integrity sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ== - dependencies: - which "^4.0.0" - "@npmcli/query@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.0.0.tgz#51a0dfb85811e04f244171f164b6bc83b36113a7" - integrity sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA== - dependencies: - postcss-selector-parser "^6.0.10" - -"@npmcli/query@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.0.1.tgz#77d63ceb7d27ed748da3cc8b50d45fc341448ed6" integrity sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA== @@ -855,7 +598,7 @@ "@npmcli/run-script@^2.0.0": version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== dependencies: "@npmcli/node-gyp" "^1.0.2" @@ -874,44 +617,20 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@npmcli/run-script@^7.0.0", "@npmcli/run-script@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.1.tgz#18eebaed96214357f618a82510411319181417bd" - integrity sha512-Od/JMrgkjZ8alyBE0IzeqZDiF1jgMez9Gkc/OYrCkHHiXNwM0wc6s7+h+xM7kYDZkS0tAoOLr9VvygyE5+2F7g== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^3.0.0" - which "^4.0.0" - -"@oclif/color@^1.0.3": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@oclif/color/-/color-1.0.10.tgz#e83e3a30fffc93076281398cbeaa4f761c4df09e" - integrity sha512-INWEDAL3SzzR3pIhkrqk22HV6JravLUeRZXAIpoQqIeLReauaibCVcNTzOlt0z0S8YrqRhksc54ZxZC4Oa8xBw== - dependencies: - ansi-styles "^4.2.1" - chalk "^4.1.0" - strip-ansi "^6.0.1" - supports-color "^8.1.1" - tslib "^2" - -"@oclif/core@^1.24.0": - version "1.24.2" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.24.2.tgz#1d2e4b8b27db7e98b0c1d7b367934196a2f2c202" - integrity sha512-0wfAa6HG4sJ4j5c4/GV4BWZwALtJyw2ZO6titnrWKcowxU1BWd8mBM45ilTPnDhClMowz7+8EtK4kqUGc1rNwA== +"@oclif/core@^2.15.0": + version "2.15.0" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.15.0.tgz#f27797b30a77d13279fba88c1698fc34a0bd0d2a" + integrity sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA== dependencies: - "@oclif/linewrap" "^1.0.0" - "@oclif/screen" "^3.0.4" + "@types/cli-progress" "^3.11.0" ansi-escapes "^4.3.2" ansi-styles "^4.3.0" cardinal "^2.1.1" chalk "^4.1.2" clean-stack "^3.0.1" - cli-progress "^3.10.0" + cli-progress "^3.12.0" debug "^4.3.4" - ejs "^3.1.6" - fs-extra "^9.1.0" + ejs "^3.1.8" get-package-type "^0.1.0" globby "^11.1.0" hyperlinker "^1.0.0" @@ -921,21 +640,22 @@ natural-orderby "^2.0.3" object-treeify "^1.1.33" password-prompt "^1.1.2" - semver "^7.3.7" + slice-ansi "^4.0.0" string-width "^4.2.3" strip-ansi "^6.0.1" supports-color "^8.1.1" supports-hyperlinks "^2.2.0" - tslib "^2.4.1" + ts-node "^10.9.1" + tslib "^2.5.0" widest-line "^3.1.0" + wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/core@^2.15.0", "@oclif/core@^2.8.4": - version "2.15.0" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.15.0.tgz#f27797b30a77d13279fba88c1698fc34a0bd0d2a" - integrity sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA== +"@oclif/core@^3.0.0-beta.19", "@oclif/core@^3.0.4", "@oclif/core@^3.2.1", "@oclif/core@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.3.2.tgz#1244aa19313681000881d97dd0e956a4ed48daa5" + integrity sha512-8bZa42d86t5BayJUENKqZN6c5CnX0n3j+JyCWmqI5PP7VsRWZl4YSXFoLFw+mZXKtvwAMrgzMxSGltm5iIXT7w== dependencies: - "@types/cli-progress" "^3.11.0" ansi-escapes "^4.3.2" ansi-styles "^4.3.0" cardinal "^2.1.1" @@ -943,7 +663,7 @@ clean-stack "^3.0.1" cli-progress "^3.12.0" debug "^4.3.4" - ejs "^3.1.8" + ejs "^3.1.9" get-package-type "^0.1.0" globby "^11.1.0" hyperlinker "^1.0.0" @@ -958,75 +678,74 @@ strip-ansi "^6.0.1" supports-color "^8.1.1" supports-hyperlinks "^2.2.0" - ts-node "^10.9.1" - tslib "^2.5.0" widest-line "^3.1.0" wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/linewrap@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" - integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== - -"@oclif/plugin-help@^5.1.19", "@oclif/plugin-help@^5.2.20": +"@oclif/plugin-help@^5.2.14": version "5.2.20" resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.2.20.tgz#4035a0ac231f95fb8e334da342175e3ca00f6abc" integrity sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ== dependencies: "@oclif/core" "^2.15.0" -"@oclif/plugin-not-found@^2.3.7": - version "2.3.15" - resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-2.3.15.tgz#2748116f91776321d6cb6e88c508b512f845fa34" - integrity sha512-HA1TvXyWp8IXYGl5zygKv+94UznvGGMwSU1CZmUh0OQxkvlLcR7Yrmp409hnBoQoKjPlKTgrOuZFNHDHuStetw== +"@oclif/plugin-help@^6": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-6.0.3.tgz#6c267215a8e1d6cc07aac2be8e9cc50432a839bb" + integrity sha512-4oJ/rqf9kIzNyNZ4R5dmOXSC5S8kKxn2NHMW2kRIBHzQBg2R0RCrY7aHPHqFWCArPUk4K+YlRyhsiSgdslkV4A== dependencies: - "@oclif/color" "^1.0.3" - "@oclif/core" "^1.24.0" + "@oclif/core" "^3.2.1" + +"@oclif/plugin-not-found@^2.3.32": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-2.4.3.tgz#3d24095adb0f3876cb4bcfdfdcb775086cf6d4b5" + integrity sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg== + dependencies: + "@oclif/core" "^2.15.0" + chalk "^4" fast-levenshtein "^3.0.0" - lodash "^4.17.21" -"@oclif/plugin-warn-if-update-available@^2.0.14": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.0.19.tgz#d4a03fac8e46d5f0d56c2acaecb8f4f28cb413ee" - integrity sha512-1zL98NtCgfYGhePncFEVRcJsWuvnxuhJfLS4QXIWYeWq3L8l7943edU9fKP21ct50FKHuyv90fsVyIB87GOpmQ== +"@oclif/plugin-warn-if-update-available@^2.0.44": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.1.1.tgz#e645d3d735241422d3f75e8fbf5c68db575f4c23" + integrity sha512-y7eSzT6R5bmTIJbiMMXgOlbBpcWXGlVhNeQJBLBCCy1+90Wbjyqf6uvY0i2WcO4sh/THTJ20qCW80j3XUlgDTA== dependencies: - "@oclif/core" "^1.24.0" + "@oclif/core" "^2.15.0" chalk "^4.1.0" debug "^4.1.0" - fs-extra "^9.0.1" http-call "^5.2.2" - lodash "^4.17.21" - semver "^7.3.8" + lodash.template "^4.5.0" + semver "^7.5.4" -"@oclif/screen@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.4.tgz#663db0ecaf23f3184e7f01886ed578060e4a7f1c" - integrity sha512-IMsTN1dXEXaOSre27j/ywGbBjrzx0FNd1XmuhCWCB9NTPrhWI1Ifbz+YLSEcstfQfocYsrbrIessxXb2oon4lA== +"@oclif/prettier-config@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@oclif/prettier-config/-/prettier-config-0.2.1.tgz#1def9f38134f9bfb229257f48a35f7d0d183dc78" + integrity sha512-XB8kwQj8zynXjIIWRm+6gO/r8Qft2xKtwBMSmq1JRqtA6TpwpqECqiu8LosBCyg2JBXuUy2lU23/L98KIR7FrQ== -"@oclif/test@^2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@oclif/test/-/test-2.5.6.tgz#454ae74260123f1436babbda8f93223079f3b66c" - integrity sha512-AcusFApdU6/akXaofhBDrY4IM9uYzlOD9bYCCM0NwUXOv1m6320hSp2DT/wkj9H1gsvKbJXZHqgtXsNGZTWLFg== +"@oclif/test@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@oclif/test/-/test-3.0.2.tgz#aab9443a1eeb8d996d28020344e6abf7f82c688e" + integrity sha512-zTLHSQ1A/9jrzW+jrX9qc1B1pyihtxO+87oW/5lHnNnztvEnmfdcxVKe8CYobpNiSJtAQMBY5BTxgvm9eaZD5Q== dependencies: - "@oclif/core" "^2.15.0" - fancy-test "^2.0.42" + "@oclif/core" "^3.0.0-beta.19" + chai "^4.3.10" + fancy-test "^3.0.1" "@octokit/auth-token@^2.4.4": version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" "@octokit/core@^3.5.1": - version "3.5.1" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" - integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" + integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== dependencies: "@octokit/auth-token" "^2.4.4" "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.0" + "@octokit/request" "^5.6.3" "@octokit/request-error" "^2.0.5" "@octokit/types" "^6.0.3" before-after-hook "^2.2.0" @@ -1034,7 +753,7 @@ "@octokit/endpoint@^6.0.1": version "6.0.12" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: "@octokit/types" "^6.0.3" @@ -1043,50 +762,50 @@ "@octokit/graphql@^4.5.8": version "4.8.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^11.2.0": - version "11.2.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" - integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== "@octokit/plugin-paginate-rest@^2.16.8": - version "2.17.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7" - integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== + version "2.21.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" + integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== dependencies: - "@octokit/types" "^6.34.0" + "@octokit/types" "^6.40.0" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.13.0" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" - integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA== + version "5.16.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" + integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== dependencies: - "@octokit/types" "^6.34.0" + "@octokit/types" "^6.39.0" deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== dependencies: "@octokit/types" "^6.0.3" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.6.0": +"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": version "5.6.3" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: "@octokit/endpoint" "^6.0.1" @@ -1098,7 +817,7 @@ "@octokit/rest@^18.0.6": version "18.12.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== dependencies: "@octokit/core" "^3.5.1" @@ -1106,12 +825,12 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": - version "6.34.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" - integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: - "@octokit/openapi-types" "^11.2.0" + "@octokit/openapi-types" "^12.11.0" "@pkgjs/parseargs@^0.11.0": version "0.11.0" @@ -1125,19 +844,7 @@ dependencies: "@sigstore/protobuf-specs" "^0.2.0" -"@sigstore/bundle@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.1.0.tgz#c6140ca97b68815edf7c4fb7bdbf58d656525c39" - integrity sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng== - dependencies: - "@sigstore/protobuf-specs" "^0.2.1" - -"@sigstore/protobuf-specs@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" - integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== - -"@sigstore/protobuf-specs@^0.2.0", "@sigstore/protobuf-specs@^0.2.1": +"@sigstore/protobuf-specs@^0.2.0": version "0.2.1" resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== @@ -1151,23 +858,6 @@ "@sigstore/protobuf-specs" "^0.2.0" make-fetch-happen "^11.0.1" -"@sigstore/sign@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.1.0.tgz#801f4b5f60e13ecd1925117a7d084ab7b2199f01" - integrity sha512-4VRpfJxs+8eLqzLVrZngVNExVA/zAhVbi4UT4zmtLi4xRd7vz5qie834OgkrGsLlLB1B2nz/3wUxT1XAUBe8gw== - dependencies: - "@sigstore/bundle" "^2.1.0" - "@sigstore/protobuf-specs" "^0.2.1" - make-fetch-happen "^13.0.0" - -"@sigstore/tuf@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.2.tgz#acbb2c8399fb03aca0c90fa1dc1934bda4160623" - integrity sha512-vjwcYePJzM01Ha6oWWZ9gNcdIgnzyFxfqfWzph483DPJTH8Tb7f7bQRRll3CYVkyH56j0AgcPAcl6Vg95DPF+Q== - dependencies: - "@sigstore/protobuf-specs" "^0.1.0" - tuf-js "^1.1.7" - "@sigstore/tuf@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" @@ -1176,19 +866,46 @@ "@sigstore/protobuf-specs" "^0.2.0" tuf-js "^1.1.7" -"@sigstore/tuf@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.2.0.tgz#ef636239687e41af3f2ce10667ab88f5ca6165b3" - integrity sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA== - dependencies: - "@sigstore/protobuf-specs" "^0.2.1" - tuf-js "^2.1.0" - "@sindresorhus/is@^4.0.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2", "@sinonjs/fake-timers@^10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/samsam@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" + integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== + dependencies: + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.1": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" + integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== + "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -1198,44 +915,39 @@ "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@tufjs/canonical-json@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== -"@tufjs/canonical-json@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" - integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== - "@tufjs/models@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" @@ -1244,14 +956,6 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" -"@tufjs/models@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.0.tgz#c7ab241cf11dd29deb213d6817dabb8c99ce0863" - integrity sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg== - dependencies: - "@tufjs/canonical-json" "2.0.0" - minimatch "^9.0.3" - "@types/cacheable-request@^6.0.1": version "6.0.3" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" @@ -1263,20 +967,27 @@ "@types/responselike" "^1.0.0" "@types/chai@*", "@types/chai@^4.3.6": - version "4.3.6" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.6.tgz#7b489e8baf393d5dd1266fb203ddd4ea941259e6" - integrity sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw== + version "4.3.8" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.8.tgz#aa200a264a3bc78ccfc1718eedbd3b9d5a591270" + integrity sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA== "@types/cli-progress@^3.11.0": - version "3.11.0" - resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.0.tgz#ec79df99b26757c3d1c7170af8422e0fc95eef7e" - integrity sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg== + version "3.11.3" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.3.tgz#2a982d4c68fb288048daa0b3293c0ce81c1785ee" + integrity sha512-/+C9xAdVtc+g5yHHkGBThgAA8rYpi5B+2ve3wLtybYj0JHEBs57ivR4x/zGfSsplRnV+psE91Nfin1soNKqz5Q== dependencies: "@types/node" "*" +"@types/debug@^4.1.9": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.9.tgz#906996938bc672aaf2fb8c0d3733ae1dda05b005" + integrity sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow== + dependencies: + "@types/ms" "*" + "@types/expect@^1.20.4": version "1.20.4" - resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" + resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== "@types/glob@^8.1.0": @@ -1296,14 +1007,19 @@ "@types/node" "*" "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" + integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== + +"@types/json-schema@^7.0.12": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== -"@types/json-schema@^7.0.7": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/keyv@^3.1.4": version "3.1.4" @@ -1313,9 +1029,9 @@ "@types/node" "*" "@types/lodash@*": - version "4.14.123" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.123.tgz#39be5d211478c8dd3bdae98ee75bb7efe4abfe4d" - integrity sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q== + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" @@ -1328,43 +1044,55 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": - version "1.2.1" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" - integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.3.tgz#dd249cef80c6fff2ba6a0d4e5beca913e04e25f8" + integrity sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A== + +"@types/mocha@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.2.tgz#96d63314255540a36bf24da094cce7a13668d73b" + integrity sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w== + +"@types/ms@*": + version "0.7.32" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.32.tgz#f6cd08939ae3ad886fcc92ef7f0109dacddf61ab" + integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g== + +"@types/node@*": + version "20.8.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" + integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + dependencies: + undici-types "~5.25.1" -"@types/mocha@^8.2.3": - version "8.2.3" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" - integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== +"@types/node@20.5.1": + version "20.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.1.tgz#178d58ee7e4834152b0e8b4d30cbfab578b9bb30" + integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg== -"@types/node@*", "@types/node@^15.6.1": +"@types/node@^15.6.2": version "15.14.9" - resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== -"@types/node@^14.18.60": - version "14.18.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.60.tgz#986a33f3d15717d076a68a59ac8656c73e6b4ef5" - integrity sha512-F2dfYDznasZ6XfuWvTmQcrElTHfxCdC+F23WCcuAJaIrMIhhBUSARJQdy0lUY+MPDNLqGvTo8/IuiF+QX64IHQ== +"@types/node@^18": + version "18.18.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244" + integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== "@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" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "2.4.2" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz#9b0e3e8533fe5024ad32d6637eb9589988b6fdca" + integrity sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A== "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.1.tgz#1dd57e54509b3b95c7958e52709567077019d65d" + integrity sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg== dependencies: "@types/node" "*" -"@types/semver@^7.5.3": +"@types/semver@^7.5.0", "@types/semver@^7.5.3": version "7.5.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== @@ -1378,14 +1106,21 @@ "@types/node" "*" "@types/sinon@*": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.0.10.tgz#1f921f0c347b19f754e61dbc671c088df73fe1ff" - integrity sha512-4w7SvsiUOtd4mUfund9QROPSJ5At/GQskDpqd87pJIRI6ULWSJqHI3GIZE337wQuN3aznroJGr94+o8fwvL37Q== + version "10.0.19" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.19.tgz#752b752bc40bb5af0bb1aec29bde49b139b91d35" + integrity sha512-MWZNGPSchIdDfb5FL+VFi4zHsHbNOTQEgjqFQk7HazXSXwUU9PAX3z9XBqb3AJGYr9YwrtCtaSMsT3brYsN/jQ== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.3" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.3.tgz#575789c5cf6d410cb288b0b4affaf7e6da44ca51" + integrity sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ== "@types/supports-color@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/supports-color/-/supports-color-7.2.0.tgz#edd98ae52ee786b733a5dea0a23da4eb18ef7310" - integrity sha512-gtUcOP6qIpjbSDdWjMBRNSks42ccx1709mwKTgelW63BESIADw8Ju7klpydDDb9Kr0iRXfpwrXH8+zoU8TCqiA== + version "7.2.1" + resolved "https://registry.yarnpkg.com/@types/supports-color/-/supports-color-7.2.1.tgz#58a6efe82d9eca92cf316b16112fcd2675ffa6c0" + integrity sha512-glb1BXM/pchMWTt9kg67CceKqyAW3NGBviNPKXN84JJhk3shqVpyi5d5MM4MWYoZHHk/Ioct7Yt1TNqQORiIAw== "@types/validate-npm-package-name@^4.0.0": version "4.0.0" @@ -1393,91 +1128,101 @@ integrity sha512-RpO62vB2lkjEkyLbwTheA2+uwYmtVMWTr/kWRI++UAgVdZqNqdAuIQl/SxBCGeMKfdjWaXPbyhZbiCc4PAj+KA== "@types/vinyl@^2.0.4": - version "2.0.6" - resolved "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz#b2d134603557a7c3d2b5d3dc23863ea2b5eb29b0" - integrity sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g== + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.8.tgz#a944157b80cf615437aa952131e87efe8a9646cd" + integrity sha512-bls3EAsYVnVoPKoqgFC4Rtq7Kzte4MCk8xMA9UEPPVncJFsov9FJWYj0uxqJRwNEi9b4i4zX13FydaDrhadmHg== dependencies: "@types/expect" "^1.20.4" "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.31.2": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" +"@typescript-eslint/eslint-plugin@^6.7.5": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b" + integrity sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/type-utils" "6.8.0" + "@typescript-eslint/utils" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^4.31.2": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" +"@typescript-eslint/parser@^6.7.5": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.8.0.tgz#bb2a969d583db242f1ee64467542f8b05c2e28cb" + integrity sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg== + dependencies: + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" + debug "^4.3.4" -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== +"@typescript-eslint/scope-manager@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" + integrity sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g== dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@typescript-eslint/type-utils@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f" + integrity sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g== + dependencies: + "@typescript-eslint/typescript-estree" "6.8.0" + "@typescript-eslint/utils" "6.8.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" + integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== -JSONStream@^1.0.4: +"@typescript-eslint/typescript-estree@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" + integrity sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg== + dependencies: + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/visitor-keys" "6.8.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.8.0", "@typescript-eslint/utils@^6.7.5": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029" + integrity sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.8.0" + "@typescript-eslint/types" "6.8.0" + "@typescript-eslint/typescript-estree" "6.8.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.8.0": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" + integrity sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg== + dependencies: + "@typescript-eslint/types" "6.8.0" + eslint-visitor-keys "^3.4.1" + +JSONStream@^1.3.5: version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -1485,7 +1230,7 @@ JSONStream@^1.0.4: abbrev@1, abbrev@^1.0.0: version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== abbrev@^2.0.0: @@ -1500,58 +1245,44 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.4.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== +acorn@^8.4.1, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== agent-base@6, agent-base@^6.0.2: version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== - dependencies: - debug "^4.3.4" - agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1561,10 +1292,10 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" - integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== +ajv@^8.11.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -1576,16 +1307,6 @@ ansi-colors@4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1593,15 +1314,12 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" ansi-regex@^5.0.1: version "5.0.1" @@ -1613,26 +1331,21 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.0.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.2.1, ansi-styles@^4.3.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: +ansi-styles@^6.0.0, ansi-styles@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -1643,16 +1356,16 @@ ansicolors@~0.3.2: integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== archy@~1.0.0: @@ -1662,24 +1375,32 @@ archy@~1.0.0: are-we-there-yet@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" readable-stream "^3.6.0" +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + are-we-there-yet@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" - integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== + version "4.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.1.tgz#05a6fc0e5f70771b673e82b0f915616e0ace8fd3" + integrity sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA== dependencies: delegates "^1.0.0" readable-stream "^4.1.0" arg@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" - integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" @@ -1693,6 +1414,14 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -1700,18 +1429,73 @@ array-differ@^3.0.0: array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== arrify@^2.0.1: version "2.0.1" @@ -1720,8 +1504,8 @@ arrify@^2.0.1: asap@^2.0.0: version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== assertion-error@^1.1.0: version "1.1.0" @@ -1733,25 +1517,27 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sdk@^2.1231.0: - version "2.1296.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1296.0.tgz#5194b3856874938bc6c682dfdb7aa276e7a8e6e9" - integrity sha512-6Nm6zQexyne8lVy+BW8jklGpS36mXJjq67zlsn5XuyB3+qAMlolzar9nxgtuabvb/tSQTP4RSwlhkVzOct+MvA== + version "2.1474.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1474.0.tgz#2ba7099a7ba5a7c7888ae12a1db6b165f2c9672b" + integrity sha512-yhIJuBMnLkf+zVj7FI6eYfTwe4ulSo9in3X7Owgc4Bc4Pd0SB8FV5l+zHYGq3G2uZKbzdBkDVohUgBpHfHTocw== dependencies: buffer "4.9.2" events "1.1.1" @@ -1762,7 +1548,7 @@ aws-sdk@^2.1231.0: url "0.10.3" util "^0.12.4" uuid "8.0.0" - xml2js "0.4.19" + xml2js "0.5.0" balanced-match@^1.0.0: version "1.0.2" @@ -1771,30 +1557,30 @@ balanced-match@^1.0.0: base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== bin-links@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bin-links/-/bin-links-3.0.0.tgz#8273063638919f6ba4fbe890de9438c1b3adf0b7" - integrity sha512-fC7kPWcEkAWBgCKxmAMqZldlIeHsXwQy9JXzrppAVQiukGiDKxmYesJcBKWu6UMwx/5GOfo10wtK/4zy+Xt/mg== + version "3.0.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" + integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== dependencies: - cmd-shim "^4.0.1" + cmd-shim "^5.0.0" mkdirp-infer-owner "^2.0.0" - npm-normalize-package-bin "^1.0.0" - read-cmd-shim "^2.0.0" + npm-normalize-package-bin "^2.0.0" + read-cmd-shim "^3.0.0" rimraf "^3.0.0" write-file-atomic "^4.0.0" bin-links@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.1.tgz#afeb0549e642f61ff889b58ea2f8dca78fb9d8d3" - integrity sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA== + version "4.0.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.3.tgz#9e4a3c5900830aee3d7f52178b65e01dcdde64a5" + integrity sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA== dependencies: cmd-shim "^6.0.0" npm-normalize-package-bin "^3.0.0" @@ -1808,12 +1594,12 @@ binary-extensions@^2.0.0, binary-extensions@^2.2.0: binaryextensions@^4.15.0, binaryextensions@^4.16.0: version "4.18.0" - resolved "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.18.0.tgz#22aeada2d14de062c60e8ca59a504a5636a76ceb" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-4.18.0.tgz#22aeada2d14de062c60e8ca59a504a5636a76ceb" integrity sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw== bl@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -1835,7 +1621,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1847,17 +1633,6 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.17.5: - version "4.18.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" - integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== - dependencies: - caniuse-lite "^1.0.30001280" - electron-to-chromium "^1.3.896" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - buffer@4.9.2: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -1869,7 +1644,7 @@ buffer@4.9.2: buffer@^5.5.0: version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" @@ -1883,15 +1658,15 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-modules@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== builtins@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== builtins@^5.0.0: version "5.0.1" @@ -1902,7 +1677,7 @@ builtins@^5.0.0: cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" - resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" @@ -1948,25 +1723,7 @@ cacache@^16.1.0: tar "^6.1.11" unique-filename "^2.0.0" -cacache@^17.0.0, cacache@^17.0.4: - version "17.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" - integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cacache@^17.1.3: +cacache@^17.0.0, cacache@^17.0.4, cacache@^17.1.3: version "17.1.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== @@ -1984,33 +1741,15 @@ cacache@^17.1.3: tar "^6.1.11" unique-filename "^3.0.0" -cacache@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.0.tgz#17a9ecd6e1be2564ebe6cdca5f7cfed2bfeb6ddc" - integrity sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^10.0.1" - minipass "^7.0.3" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" @@ -2020,7 +1759,7 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" -call-bind@^1.0.2: +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -2033,9 +1772,17 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase-keys@^6.2.2: version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" @@ -2044,18 +1791,22 @@ camelcase-keys@^6.2.2: camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001280: - version "1.0.30001285" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz#fe1e52229187e11d6670590790d669b9e03315b7" - integrity sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q== +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" cardinal@^2.1.1: version "2.1.1" @@ -2078,18 +1829,12 @@ chai@^4.3.10: pathval "^1.1.1" type-detect "^4.0.8" -chalk@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" +chalk@5.3.0, chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -chalk@^2.0.0: +chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2098,7 +1843,7 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2106,10 +1851,23 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== +change-case@^4: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" chardet@^0.7.0: version "0.7.0" @@ -2140,13 +1898,13 @@ chokidar@3.5.3: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.1, ci-info@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== +ci-info@^3.6.1, ci-info@^3.7.1, ci-info@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cidr-regex@^3.1.1: version "3.1.1" @@ -2158,13 +1916,13 @@ cidr-regex@^3.1.1: clean-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= + integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== dependencies: escape-string-regexp "^1.0.5" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== clean-stack@^3.0.1: @@ -2174,11 +1932,6 @@ clean-stack@^3.0.1: dependencies: escape-string-regexp "4.0.0" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= - cli-columns@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" @@ -2194,7 +1947,14 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-progress@^3.10.0, cli-progress@^3.12.0: +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-progress@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== @@ -2202,9 +1962,9 @@ cli-progress@^3.10.0, cli-progress@^3.12.0: string-width "^4.2.3" cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + version "2.9.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" + integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== cli-table3@^0.6.3: version "0.6.3" @@ -2216,12 +1976,20 @@ cli-table3@^0.6.3: "@colors/colors" "1.5.0" cli-table@^0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" - integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== + version "0.3.11" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -2248,7 +2016,7 @@ cliui@^8.0.1: clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== clone-response@^1.0.2: version "1.0.3" @@ -2260,17 +2028,17 @@ clone-response@^1.0.2: clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + integrity sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag== clone@^1.0.2: version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== cloneable-readable@^1.0.0: version "1.1.3" @@ -2281,10 +2049,10 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -cmd-shim@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== +cmd-shim@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== dependencies: mkdirp-infer-owner "^2.0.0" @@ -2293,11 +2061,6 @@ cmd-shim@^6.0.0: resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2324,13 +2087,18 @@ color-name@~1.1.4: color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== columnify@^1.6.0: version "1.6.0" @@ -2340,32 +2108,37 @@ columnify@^1.6.0: strip-ansi "^6.0.1" wcwidth "^1.0.0" +commander@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + commander@7.1.0: version "7.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== -commitlint@^12.1.4: - version "12.1.4" - resolved "https://registry.npmjs.org/commitlint/-/commitlint-12.1.4.tgz#afc185957afdd07d2ebb6c78b5956d407fc09ad0" - integrity sha512-SHmNe3eQrVIzxt0x5yyir8AKu6fB0DDf2Vs4Hvij5/T2ckJ22YQsLEpl1vPFKq6YPTmERjNxTgB2Dp2QQ3YTzg== +commitlint@^17.8.0: + version "17.8.0" + resolved "https://registry.yarnpkg.com/commitlint/-/commitlint-17.8.0.tgz#510ec00d7ff35601885fda7fd5acdfe58e290755" + integrity sha512-xo0F0n4/W4Yq1BAmyICA+1ivPzILAPBQ/fx2PAn5uUQwzTXMdN8URE3P4YzMl6ey/1mRa6NsnW5yV9HJd5NMmA== dependencies: - "@commitlint/cli" "^12.1.4" - "@commitlint/types" "^12.1.4" + "@commitlint/cli" "^17.8.0" + "@commitlint/types" "^17.4.4" common-ancestor-path@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compare-func@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: array-ify "^1.0.0" @@ -2376,105 +2149,79 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concurrently@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" - integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== - dependencies: - chalk "^4.1.0" - date-fns "^2.29.1" - lodash "^4.17.21" - rxjs "^7.0.0" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^17.3.1" - -confusing-browser-globals@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== +confusing-browser-globals@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" content-type@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -conventional-changelog-angular@^5.0.11: - version "5.0.12" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== +conventional-changelog-angular@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz#a9a9494c28b7165889144fd5b91573c4aa9ca541" + integrity sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg== dependencies: compare-func "^2.0.0" - q "^1.5.1" -conventional-changelog-conventionalcommits@^4.3.1: - version "4.6.0" - resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz#7fc17211dbca160acf24687bd2fdd5fd767750eb" - integrity sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A== +conventional-changelog-conventionalcommits@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz#3bad05f4eea64e423d3d90fc50c17d2c8cf17652" + integrity sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw== dependencies: compare-func "^2.0.0" - lodash "^4.17.15" - q "^1.5.1" -conventional-commits-parser@^3.0.0: - version "3.2.1" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== +conventional-commits-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz#02ae1178a381304839bce7cea9da5f1b549ae505" + integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== dependencies: - JSONStream "^1.0.4" + JSONStream "^1.3.5" is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - trim-off-newlines "^1.0.0" - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + meow "^8.1.2" + split2 "^3.2.2" core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig-typescript-loader@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz#f3feae459ea090f131df5474ce4b1222912319f9" + integrity sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw== + +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" path-type "^4.0.0" - yaml "^1.10.0" create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2491,57 +2238,45 @@ cssesc@^3.0.0: dargs@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -date-fns@^2.29.1: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - dateformat@^4.5.0: version "4.6.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" debuglog@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" decamelize@^1.1.0: version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decamelize@^4.0.0: version "4.0.0" @@ -2568,14 +2303,14 @@ deep-extend@^0.6.0: integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" @@ -2584,25 +2319,38 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delegates@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" wrappy "1" @@ -2629,6 +2377,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -2636,9 +2391,17 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-prop@^5.1.0: version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" @@ -2648,18 +2411,13 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ejs@^3.1.6, ejs@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== +ejs@^3.1.8, ejs@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" -electron-to-chromium@^1.3.896: - version "1.4.11" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.11.tgz#303c9deebbe90c68bf5c2c81a88a3bf4522c8810" - integrity sha512-2OhsaYgsWGhWjx2et8kaUcdktPbBGjKM2X0BReUCKcSCPttEY+hz2zie820JLbttU8jwL92+JJysWwkut3wZgA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2672,7 +2430,7 @@ emoji-regex@^9.2.2: encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" @@ -2684,21 +2442,22 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enquirer@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" - integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== +enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: - ansi-colors "^3.2.1" + graceful-fs "^4.2.4" + tapable "^2.2.0" env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== error-ex@^1.3.1: @@ -2710,9 +2469,79 @@ error-ex@^1.3.1: error@^10.4.0: version "10.4.0" - resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" + resolved "https://registry.yarnpkg.com/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2723,59 +2552,82 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-config-oclif-typescript@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/eslint-config-oclif-typescript/-/eslint-config-oclif-typescript-1.0.3.tgz#0061a810bf8f69571ad3c70368badcc018c3358e" - integrity sha512-TeJKXWBQ3uKMtzgz++UFNWpe1WCx8mfqRuzZy1LirREgRlVv656SkVG4gNZat5rRNIQgfDmTS+YebxK02kfylA== - dependencies: - "@typescript-eslint/eslint-plugin" "^4.31.2" - "@typescript-eslint/parser" "^4.31.2" - eslint-config-xo-space "^0.29.0" - eslint-plugin-mocha "^9.0.0" +eslint-config-oclif-typescript@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/eslint-config-oclif-typescript/-/eslint-config-oclif-typescript-3.0.6.tgz#9350b8dc64d748efc7a86252278b1b447f5a91c5" + integrity sha512-MRwR1y7whrJbie3AO0vi8V9nj9De/umRuRy37Dj6cZbYPVqscgOH+qt9FjgrZVIBphqhyflxziR9cLA2WKjMyw== + dependencies: + "@typescript-eslint/eslint-plugin" "^6.7.5" + "@typescript-eslint/parser" "^6.7.5" + eslint-config-xo-space "^0.34.0" + eslint-import-resolver-typescript "^3.6.1" + eslint-plugin-import "^2.28.1" + eslint-plugin-mocha "^10.2.0" eslint-plugin-node "^11.1.0" + eslint-plugin-perfectionist "^2.2.0" -eslint-config-oclif@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-oclif/-/eslint-config-oclif-4.0.0.tgz#90a07587f7be7c92ae3ce750ae11cf1e864239eb" - integrity sha512-5tkUQeC33rHAhJxaGeBGYIflDLumeV2qD/4XLBdXhB/6F/+Jnwdce9wYHSvkx0JUqUQShpQv8JEVkBp/zzD7hg== +eslint-config-oclif@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-oclif/-/eslint-config-oclif-5.0.0.tgz#69c5cc8a19025e71fc49a10f47475bb8dd18ba24" + integrity sha512-yPxtUzU6eFL+WoW8DbRf7uoHxgiu0B/uY7k7rgHwFHij66WoI3qhBNhKI5R5FS5JeTuBOXKrNqQVDsSH0D/JvA== dependencies: - eslint-config-xo-space "^0.27.0" - eslint-plugin-mocha "^9.0.0" + eslint-config-xo-space "^0.34.0" + eslint-plugin-mocha "^10.1.0" eslint-plugin-node "^11.1.0" - eslint-plugin-unicorn "^36.0.0" + eslint-plugin-unicorn "^48.0.1" + +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + +eslint-config-xo-space@^0.34.0: + version "0.34.0" + resolved "https://registry.yarnpkg.com/eslint-config-xo-space/-/eslint-config-xo-space-0.34.0.tgz#974db7f7091edc23e2f29cc98acaa1be78ac87e5" + integrity sha512-8ZI0Ta/loUIL1Wk/ouWvk2ZWN8X6Un49MqnBf2b6uMjC9c5Pcfr1OivEOrvd3niD6BKgMNH2Q9nG0CcCWC+iVA== + dependencies: + eslint-config-xo "^0.43.0" -eslint-config-xo-space@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo-space/-/eslint-config-xo-space-0.27.0.tgz#9663e41d7bedc0f345488377770565aa9b0085e0" - integrity sha512-b8UjW+nQyOkhiANVpIptqlKPyE7XRyQ40uQ1NoBhzVfu95gxfZGrpliq8ZHBpaOF2wCLZaexTSjg7Rvm99vj4A== +eslint-config-xo@^0.43.0: + version "0.43.1" + resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.43.1.tgz#c2ac8993f6e429048c813f599265d1636a0bc060" + integrity sha512-azv1L2PysRA0NkZOgbndUpN+581L7wPqkgJOgxxw3hxwXAbJgD6Hqb/SjHRiACifXt/AvxCzE/jIKFAlI7XjvQ== dependencies: - eslint-config-xo "^0.35.0" + confusing-browser-globals "1.0.11" -eslint-config-xo-space@^0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo-space/-/eslint-config-xo-space-0.29.0.tgz#5bbd2d0ecb172c4e65022b8543ecb1f7d199b8e2" - integrity sha512-emUZVHjmzl3I1aO2M/2gEpqa/GHXTl7LF/vQeAX4W+mQIU+2kyqY97FkMnSc2J8Osoq+vCSXCY/HjFUmFIF/Ag== +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: - eslint-config-xo "^0.38.0" + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-config-xo@^0.35.0: - version "0.35.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.35.0.tgz#8b5afca244c44129c32386c28602f973ad5cb762" - integrity sha512-+WyZTLWUJlvExFrBU/Ldw8AB/S0d3x+26JQdBWbcqig2ZaWh0zinYcHok+ET4IoPaEcRRf3FE9kjItNVjBwnAg== +eslint-import-resolver-typescript@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== dependencies: - confusing-browser-globals "1.0.10" + debug "^4.3.4" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" + is-glob "^4.0.3" -eslint-config-xo@^0.38.0: - version "0.38.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.38.0.tgz#50cbe676a90d5582e1bbf1de750286e7cf09378e" - integrity sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g== +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: - confusing-browser-globals "1.0.10" + debug "^3.2.7" eslint-plugin-es@^3.0.0: version "3.0.1" @@ -2785,13 +2637,36 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-mocha@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz#b4457d066941eecb070dc06ed301c527d9c61b60" - integrity sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg== +eslint-plugin-import@^2.28.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" + has "^1.0.3" + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-plugin-mocha@^10.1.0, eslint-plugin-mocha@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz#15b05ce5be4b332bb0d76826ec1c5ebf67102ad6" + integrity sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ== dependencies: eslint-utils "^3.0.0" - ramda "^0.27.1" + rambda "^7.4.0" eslint-plugin-node@^11.1.0: version "11.1.0" @@ -2805,44 +2680,45 @@ eslint-plugin-node@^11.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-unicorn@^36.0.0: - version "36.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-36.0.0.tgz#db50e1426839e401d33c5a279f49d4a5bbb640d8" - integrity sha512-xxN2vSctGWnDW6aLElm/LKIwcrmk6mdiEcW55Uv5krcrVcIFSWMmEgc/hwpemYfZacKZ5npFERGNz4aThsp1AA== +eslint-plugin-perfectionist@^2.1.0, eslint-plugin-perfectionist@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.2.0.tgz#a1b1f1407ce9bc20a4f0e2b8113fb84e5b9dfb9f" + integrity sha512-/nG2Uurd6AY7CI6zlgjHPOoiPY8B7EYMUWdNb5w+EzyauYiQjjD5lQwAI1FlkBbCCFFZw/CdZIPQhXumYoiyaw== + dependencies: + "@typescript-eslint/utils" "^6.7.5" + minimatch "^9.0.3" + natural-compare-lite "^1.4.0" + +eslint-plugin-unicorn@^48.0.1: + version "48.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz#a6573bc1687ae8db7121fdd8f92394b6549a6959" + integrity sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - ci-info "^3.2.0" + "@babel/helper-validator-identifier" "^7.22.5" + "@eslint-community/eslint-utils" "^4.4.0" + ci-info "^3.8.0" clean-regexp "^1.0.0" - eslint-template-visitor "^2.3.2" - eslint-utils "^3.0.0" - is-builtin-module "^3.1.0" + esquery "^1.5.0" + indent-string "^4.0.0" + is-builtin-module "^3.2.1" + jsesc "^3.0.2" lodash "^4.17.21" pluralize "^8.0.0" read-pkg-up "^7.0.1" - regexp-tree "^0.1.23" - safe-regex "^2.1.1" - semver "^7.3.5" + regexp-tree "^0.1.27" + regjsparser "^0.10.0" + semver "^7.5.4" + strip-indent "^3.0.0" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-template-visitor@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz#b52f96ff311e773a345d79053ccc78275bbc463d" - integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA== - dependencies: - "@babel/core" "^7.12.16" - "@babel/eslint-parser" "^7.12.16" - eslint-visitor-keys "^2.0.0" - esquery "^1.3.1" - multimap "^1.1.0" + estraverse "^5.2.0" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== @@ -2856,80 +2732,82 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^7.31.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.51.0: + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.3.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2, esquery@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -2940,15 +2818,10 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" @@ -2962,22 +2835,42 @@ event-target-shim@^5.0.0: eventemitter3@^4.0.4: version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +execa@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + execa@^5.0.0, execa@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -3004,10 +2897,10 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -fancy-test@^2.0.35, fancy-test@^2.0.42: - version "2.0.42" - resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-2.0.42.tgz#464cf51037a4ff3111d1ca34305a3125df198bc5" - integrity sha512-TX8YTALYAmExny+f+G24MFxWry3Pk09+9uykwRjfwjibRxJ9ZjJzrnHYVBZK46XQdyli7d+rQc5U/KK7V6uLsw== +fancy-test@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-3.0.1.tgz#8b19ed4ccc8b0625475eabf36fd743e1d0168abb" + integrity sha512-Ke1IFOGEBxP2dNg0X7ZYPUSwKSRr5GNn3xM/2DpHkP86riF3MFDpesXJuD1TGm7gcfwBtYpuSzuw3m704bThVg== dependencies: "@types/chai" "*" "@types/lodash" "*" @@ -3016,6 +2909,7 @@ fancy-test@^2.0.35, fancy-test@^2.0.42: lodash "^4.17.13" mock-stdin "^1.0.0" nock "^13.3.3" + sinon "^16.0.0" stdout-stderr "^0.1.9" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: @@ -3023,10 +2917,10 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.2.9, fast-glob@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -3035,14 +2929,14 @@ fast-glob@^3.2.9: micromatch "^4.0.4" fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-levenshtein@^3.0.0: version "3.0.0" @@ -3057,9 +2951,9 @@ fastest-levenshtein@^1.0.16, fastest-levenshtein@^1.0.7: integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" @@ -3077,7 +2971,7 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -filelist@^1.0.1: +filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== @@ -3093,7 +2987,7 @@ fill-range@^7.0.1: find-up@5.0.0, find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -3101,7 +2995,7 @@ find-up@5.0.0, find-up@^5.0.0: find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -3109,7 +3003,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-yarn-workspace-root2@1.2.16: version "1.2.16" - resolved "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== dependencies: micromatch "^4.0.2" @@ -3125,16 +3019,17 @@ find-yarn-workspace-root@^2.0.0: first-chunk-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= + integrity sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg== dependencies: readable-stream "^2.0.2" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" flat@^5.0.2: @@ -3142,10 +3037,10 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" - integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== for-each@^0.3.3: version "0.3.3" @@ -3162,6 +3057,15 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" +fs-extra@^11.0.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^8.1: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -3171,53 +3075,53 @@ fs-extra@^8.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs-minipass@^3.0.0, fs-minipass@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" - integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gauge@^3.0.0: version "3.0.2" - resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -3230,57 +3134,52 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" -gauge@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" - integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: - ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" has-unicode "^2.0.1" - signal-exit "^3.0.0" + signal-exit "^3.0.7" string-width "^4.2.3" strip-ansi "^6.0.1" - wide-align "^1.1.2" + wide-align "^1.1.5" gauge@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.0.tgz#e270ca9d97dae84abf64e5277ef1ebddc7dd1e2f" - integrity sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw== + version "5.0.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.1.tgz#1efc801b8ff076b86ef3e9a7a280a975df572112" + integrity sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ== dependencies: aproba "^1.0.3 || ^2.0.0" color-support "^1.1.3" console-control-strings "^1.1.0" has-unicode "^2.0.1" - signal-exit "^3.0.7" + signal-exit "^4.0.1" string-width "^4.2.3" strip-ansi "^6.0.1" wide-align "^1.1.5" -gensync@^1.0.0-beta.2: - version "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.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== -get-func-name@^2.0.0, get-func-name@^2.0.2: +get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" get-package-type@^0.1.0: @@ -3288,11 +3187,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -3302,13 +3196,33 @@ get-stream@^5.1.0: get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -git-raw-commits@^2.0.0: - version "2.0.10" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-tsconfig@^4.5.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + +git-raw-commits@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -3323,7 +3237,7 @@ github-slugger@^1.5.0: github-username@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/github-username/-/github-username-6.0.0.tgz#d543eced7295102996cd8e4e19050ebdcbe60658" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-6.0.0.tgz#d543eced7295102996cd8e4e19050ebdcbe60658" integrity sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ== dependencies: "@octokit/rest" "^18.0.6" @@ -3335,7 +3249,14 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.2.0, glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -3347,18 +3268,7 @@ glob@7.2.0, glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.2.2: - version "10.3.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.1.tgz#9789cb1b994515bedb811a6deca735b5c37d2bf4" - integrity sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2" - path-scurry "^1.10.0" - -glob@^10.2.7: +glob@^10.2.2, glob@^10.2.7: version "10.3.10" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== @@ -3369,6 +3279,18 @@ glob@^10.2.7: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^8.0.1: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" @@ -3382,24 +3304,26 @@ glob@^8.0.1: global-dirs@^0.1.1: version "0.1.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== dependencies: ini "^1.3.4" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" -globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.1, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -3435,32 +3359,30 @@ got@^11: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.6: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + grouped-queue@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/grouped-queue/-/grouped-queue-2.0.0.tgz#a2c6713f2171e45db2c300a3a9d7c119d694dac8" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-2.0.0.tgz#a2c6713f2171e45db2c300a3a9d7c119d694dac8" integrity sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw== -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" @@ -3472,6 +3394,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -3486,30 +3420,36 @@ has-tostringtag@^1.0.0: has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + hosted-git-info@^2.1.4: version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" @@ -3520,13 +3460,6 @@ hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: dependencies: lru-cache "^7.5.1" -hosted-git-info@^7.0.0, hosted-git-info@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.1.tgz#9985fcb2700467fecf7f33a4d4874e30680b5322" - integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== - dependencies: - lru-cache "^10.0.1" - http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -3546,7 +3479,7 @@ http-call@^5.2.2: http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -3555,21 +3488,13 @@ http-proxy-agent@^4.0.1: http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" agent-base "6" debug "4" -http-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" - integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -3579,37 +3504,34 @@ http2-wrapper@^1.0.0-beta.5.2: resolve-alpn "^1.0.0" https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" -https-proxy-agent@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" - integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== - dependencies: - agent-base "^7.0.2" - debug "4" - human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" -husky@6: - version "6.0.0" - resolved "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" - integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== +husky@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== hyperlinker@^1.0.0: version "1.0.0" @@ -3625,7 +3547,7 @@ iconv-lite@^0.4.24: iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -3637,37 +3559,32 @@ ieee754@1.1.13: ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore-walk@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== dependencies: minimatch "^3.0.4" ignore-walk@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.2.tgz#c48f48397cf8ef6174fcc28aa5f8c1de6203d389" - integrity sha512-ezmQ1Dg2b3jVZh2Dh+ar6Eu2MqNSTkyb32HU2MAQQQX9tKM3q/UQ/9lf03lQ5hW+fOeoMnwxwkleZ0xcNp0/qg== + version "6.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.3.tgz#0fcdb6decaccda35e308a7b0948645dd9523b7bb" + integrity sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA== dependencies: - minimatch "^7.4.2" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + minimatch "^9.0.0" -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -3675,7 +3592,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" @@ -3684,13 +3601,13 @@ indent-string@^4.0.0: infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -3702,7 +3619,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: ini@^1.3.4: version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== ini@^4.1.0, ini@^4.1.1: @@ -3724,9 +3641,9 @@ init-package-json@^5.0.0: validate-npm-package-name "^5.0.0" inquirer@^8.0.0: - version "8.2.0" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -3738,10 +3655,20 @@ inquirer@^8.0.0: mute-stream "0.0.8" ora "^5.4.1" run-async "^2.4.0" - rxjs "^7.2.0" + rxjs "^7.5.5" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" + wrap-ansi "^6.0.1" + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" interpret@^1.0.0: version "1.4.0" @@ -3766,10 +3693,26 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" @@ -3778,14 +3721,22 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: - builtin-modules "^3.0.0" + builtin-modules "^3.3.0" -is-callable@^1.1.3: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -3797,13 +3748,20 @@ is-cidr@^4.0.2: dependencies: cidr-regex "^3.1.1" -is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: - version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -3812,25 +3770,18 @@ is-docker@^2.0.0: is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" @@ -3838,22 +3789,34 @@ is-generator-function@^1.0.7: dependencies: has-tostringtag "^1.0.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" @@ -3862,13 +3825,18 @@ is-number@^7.0.0: is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: version "2.1.0" @@ -3877,48 +3845,73 @@ is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-retry-allowed@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-scoped@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-scoped/-/is-scoped-2.1.0.tgz#fef0713772658bdf5bee418608267ddae6d3566d" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-2.1.0.tgz#fef0713772658bdf5bee418608267ddae6d3566d" integrity sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ== dependencies: scoped-regex "^2.0.0" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" is-text-path@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.3: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + which-typed-array "^1.1.11" is-unicode-supported@^0.1.0: version "0.1.0" @@ -3928,7 +3921,14 @@ is-unicode-supported@^0.1.0: is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" is-wsl@^2.2.0: version "2.2.0" @@ -3937,10 +3937,20 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isbinaryfile@^4.0.10: version "4.0.10" @@ -3957,20 +3967,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jackspeak@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -3981,14 +3977,14 @@ jackspeak@^2.3.5: "@pkgjs/parseargs" "^0.11.0" jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: async "^3.2.3" chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + filelist "^1.0.4" + minimatch "^3.1.2" jmespath@0.16.0: version "0.16.0" @@ -4000,14 +3996,14 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: +js-yaml@^3.13.0, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -4015,10 +4011,15 @@ js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: argparse "^1.0.7" esprima "^4.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.1: version "3.0.1" @@ -4032,7 +4033,7 @@ json-parse-better-errors@^1.0.1: json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-parse-even-better-errors@^3.0.0: @@ -4053,27 +4054,29 @@ json-schema-traverse@^1.0.0: json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-nice@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^2.1.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" - integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" @@ -4088,13 +4091,8 @@ jsonfile@^6.0.1: jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" - resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -just-diff-apply@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-4.0.1.tgz#da89c5a4ccb14aa8873c70e2c3b6695cef45dab5" - integrity sha512-AKOkzB5P6FkfP21UlZVX/OPXx/sC2GagpLX9cBxqHqDuRjwmZ/AJRKSNrB9jHPpRW1W1ONs6gly1gW46t055nQ== + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== just-diff-apply@^5.2.0: version "5.5.0" @@ -4102,25 +4100,30 @@ just-diff-apply@^5.2.0: integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== just-diff@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/just-diff/-/just-diff-5.0.1.tgz#db8fe1cfeea1156f2374bfb289826dca28e7e390" - integrity sha512-X00TokkRIDotUIf3EV4xUm6ELc/IkqhS/vPSHdWnsM5y0HoNMfEqrazizI7g78lpHvnRSRt/PFfKtRqJCOGIuQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" + integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== just-diff@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== -keyv@^4.0.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== +just-extend@^4.0.2: + version "4.2.1" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== + +keyv@^4.0.0, keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" kind-of@^6.0.3: version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== levn@^0.4.1: @@ -4140,11 +4143,11 @@ libnpmaccess@^7.0.2: npm-registry-fetch "^14.0.3" libnpmdiff@^5.0.19: - version "5.0.19" - resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-5.0.19.tgz#c56a8b1fcd7690f12e527c0ab21dbdbd259c27fe" - integrity sha512-caqIA7SzPeyqOn55GodejyEJRIXaFnzuqxrO9uyXtH4soom4wjDAkU97L1WrBSuVtDk3IZQD72daVeT2GqHSjA== + version "5.0.20" + resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-5.0.20.tgz#fc1d310521ce9765f7bf7693ba6affa02a11bcc1" + integrity sha512-oG+qEc0qzg++1YqLwguQvXAyG8BrKq+23RHr4sCa5XZnf1U+hcKUp8itgaBY9sGRYyGXtsRgXWWFHBmqXIctDA== dependencies: - "@npmcli/arborist" "^6.3.0" + "@npmcli/arborist" "^6.5.0" "@npmcli/disparity-colors" "^3.0.0" "@npmcli/installed-package-contents" "^2.0.2" binary-extensions "^2.2.0" @@ -4155,11 +4158,11 @@ libnpmdiff@^5.0.19: tar "^6.1.13" libnpmexec@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-6.0.3.tgz#f7ea9c028443d890297e1bbe2d5605f68b118470" - integrity sha512-E87xEzxChUe0qZgoqht5D5t13B876rPoTD877v9ZUSMztBFpuChQn5UNO3z5NaeBpEwWq/BAnQfMYRWR6sVAZA== + version "6.0.4" + resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-6.0.4.tgz#205c7b77be5776576367c39f8d349e388025d77e" + integrity sha512-dhFp5yA9M2g8oLg/Ys9not+pNzW8B20pcz455TGqyU5VesXnEPQwK5EPVY8W24JJn7M0jMJ6/GxosywMPOTebA== dependencies: - "@npmcli/arborist" "^6.3.0" + "@npmcli/arborist" "^6.5.0" "@npmcli/run-script" "^6.0.0" ci-info "^3.7.1" npm-package-arg "^10.1.0" @@ -4172,11 +4175,11 @@ libnpmexec@^6.0.3: walk-up-path "^3.0.1" libnpmfund@^4.0.19: - version "4.1.1" - resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-4.1.1.tgz#d2093d6e47e3bd1cf34ef5eb01b9bb31db0e027b" - integrity sha512-ILL3sDhEqF2iYFBPqraFW/Ma8cDZbbSAf3NJsGBrmw0i7k5wpC4tjBhBxLy43wzRq/bxnijb3jS7Flq6GwjQDw== + version "4.2.1" + resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-4.2.1.tgz#f52bed09060e003c001cdaae8904ee97a3d6d5c6" + integrity sha512-2fbmQMk3wPMdPx1gbYLNbzghj48XAsfytKrmy+A0eFXwDxCwL0BLdgXoeLQCZPpLUMSPPXdKyL6Wm4erWezhnA== dependencies: - "@npmcli/arborist" "^7.1.0" + "@npmcli/arborist" "^6.5.0" libnpmhook@^9.0.3: version "9.0.3" @@ -4195,11 +4198,11 @@ libnpmorg@^5.0.4: npm-registry-fetch "^14.0.3" libnpmpack@^5.0.19: - version "5.0.19" - resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-5.0.19.tgz#e9790ebbcb078469d59dbb7e5ee7defe3039cc22" - integrity sha512-xxkROnxTZF3imCJ9ve+6ELtRYvOBMwvrKlMGJx6JhmvD5lqIPGOJpY8oY+w8XLmLX1N06scYuLonkFpF2ayrjQ== + version "5.0.20" + resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-5.0.20.tgz#982e656e87bdfb69b458260d20c6ab243c661e5d" + integrity sha512-lPQXok0sU0V7hjb8oMD6HjYTR296aZvCJQZ1PGC7PeuKkBGuNeqSKVE2I9bwI80E4bFa9gfQ1I+rGfkNRjn6tQ== dependencies: - "@npmcli/arborist" "^6.3.0" + "@npmcli/arborist" "^6.5.0" "@npmcli/run-script" "^6.0.0" npm-package-arg "^10.1.0" pacote "^15.0.8" @@ -4244,10 +4247,43 @@ libnpmversion@^4.0.2: proc-log "^3.0.0" semver "^7.3.7" +lilconfig@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.0.1.tgz#1db47c315c79bafe993aa33a0b50cbfeef50d906" + integrity sha512-2IU5OWmCaxch0X0+IBF4/v7sutpB+F3qoXbro43pYjQTOo5wumckjxoxn47pQBqqBsCWrD5HnI2uG/zJA7isew== + dependencies: + chalk "5.3.0" + commander "11.1.0" + debug "4.3.4" + execa "8.0.1" + lilconfig "2.1.0" + listr2 "7.0.1" + micromatch "4.0.5" + pidtree "0.6.0" + string-argv "0.3.2" + yaml "2.3.2" + +listr2@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-7.0.1.tgz#18e7a655b189cd7a8a76575a26f4d494b6ffc2c2" + integrity sha512-nz+7hwgbDp8eWNoDgzdl4hA/xDSLrNRzPu1TLgOYs6l5Y+Ma6zVWWy9Oyt9TQFONwKoSPoka3H50D3vD5EuNwg== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^5.0.1" + rfdc "^1.3.0" + wrap-ansi "^8.1.0" load-json-file@^5.3.0: version "5.3.0" @@ -4262,7 +4298,7 @@ load-json-file@^5.3.0: load-yaml-file@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" + resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== dependencies: graceful-fs "^4.1.5" @@ -4272,7 +4308,7 @@ load-yaml-file@^0.2.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" @@ -4284,22 +4320,82 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= +lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4312,23 +4408,36 @@ log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +log-update@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-5.0.1.tgz#9e928bf70cb183c1f0c9e91d9e6b7115d597ce09" + integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== + dependencies: + ansi-escapes "^5.0.0" + cli-cursor "^4.0.0" + slice-ansi "^5.0.0" + strip-ansi "^7.0.1" + wrap-ansi "^8.0.1" + loupe@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" - integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - get-func-name "^2.0.0" + tslib "^2.0.3" lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -4342,16 +4451,16 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== "lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== make-error@^1.1.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" - integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^10.0.0: +make-fetch-happen@^10.0.1: version "10.2.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== @@ -4394,26 +4503,9 @@ make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.0.3, socks-proxy-agent "^7.0.0" ssri "^10.0.0" -make-fetch-happen@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz#705d6f6cbd7faecb8eac2432f551e49475bfedf0" - integrity sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A== - dependencies: - "@npmcli/agent" "^2.0.0" - cacache "^18.0.0" - http-cache-semantics "^4.1.1" - is-lambda "^1.0.1" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - ssri "^10.0.0" - -make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: +make-fetch-happen@^9.1.0: version "9.1.0" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" @@ -4435,13 +4527,13 @@ make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: map-obj@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== map-obj@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" - integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== "mem-fs-editor@^8.1.2 || ^9.0.0", mem-fs-editor@^9.0.0: version "9.7.0" @@ -4460,18 +4552,18 @@ map-obj@^4.0.0: textextensions "^5.13.0" "mem-fs@^1.2.0 || ^2.0.0": - version "2.2.1" - resolved "https://registry.npmjs.org/mem-fs/-/mem-fs-2.2.1.tgz#c87bc8a53fb17971b129d4bcd59a9149fb78c5b1" - integrity sha512-yiAivd4xFOH/WXlUi6v/nKopBh1QLzwjFi36NK88cGt/PRXI8WeBASqY+YSjIVWvQTx3hR8zHKDBMV6hWmglNA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-2.3.0.tgz#d38bdd729ab0316bfb56d0d0ff669f91e7078463" + integrity sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw== dependencies: - "@types/node" "^15.6.1" + "@types/node" "^15.6.2" "@types/vinyl" "^2.0.4" vinyl "^2.0.1" vinyl-file "^3.0.0" -meow@^8.0.0: +meow@^8.0.0, meow@^8.1.2: version "8.1.2" - resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== dependencies: "@types/minimist" "^1.2.0" @@ -4496,19 +4588,24 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -4521,17 +4618,17 @@ mimic-response@^3.1.0: min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" -minimatch@^3.0.4: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -4539,27 +4636,20 @@ minimatch@^3.0.4: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" - integrity sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g== + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimatch@^7.2.0, minimatch@^7.4.2: +minimatch@^7.2.0: version "7.4.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" - integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.3: +minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -4568,28 +4658,28 @@ minimatch@^9.0.3: minimist-options@4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.0, minimist@^1.2.3, minimist@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: +minipass-fetch@^1.3.2, minipass-fetch@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" @@ -4610,11 +4700,11 @@ minipass-fetch@^2.0.3: encoding "^0.1.13" minipass-fetch@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.2.tgz#2f7275ae13f2fb0f2a469cee4f78250c25c80ab3" - integrity sha512-/ZpF1CQaWYqjbhfFgKNt3azxztEpc/JUPuMkqOgrnMQqcU8CbE409AUdJYTIWryl3PP5CBaTJZT71N49MXP/YA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== dependencies: - minipass "^4.0.0" + minipass "^7.0.3" minipass-sized "^1.0.3" minizlib "^2.1.2" optionalDependencies: @@ -4622,14 +4712,14 @@ minipass-fetch@^3.0.0: minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-json-stream@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== dependencies: jsonparse "^1.3.1" @@ -4637,14 +4727,14 @@ minipass-json-stream@^1.0.1: minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" - resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" @@ -4656,34 +4746,19 @@ minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3. dependencies: yallist "^4.0.0" -minipass@^4.0.0: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81" - integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== - "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" - integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== - -minipass@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -4691,7 +4766,7 @@ minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: mkdirp-infer-owner@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== dependencies: chownr "^2.0.0" @@ -4700,35 +4775,32 @@ mkdirp-infer-owner@^2.0.0: mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== +mocha@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: - "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.3" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.2.0" - growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "4.2.1" + minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.1" + nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" + workerpool "6.2.1" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -4748,14 +4820,9 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" - integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== - multimatch@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: "@types/minimatch" "^3.0.3" @@ -4774,15 +4841,20 @@ mute-stream@~1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== natural-orderby@^2.0.3: version "2.0.3" @@ -4791,18 +4863,32 @@ natural-orderby@^2.0.3: negotiator@^0.6.2, negotiator@^0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +nise@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" + integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers" "^10.0.2" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + path-to-regexp "^1.7.0" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" nock@^13.3.3: - version "13.3.3" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.3.tgz#179759c07d3f88ad3e794ace885629c1adfd3fe7" - integrity sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw== + version "13.3.4" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.4.tgz#4ed3ed1465a75c87833044a881dbdd6546337e8d" + integrity sha512-DDpmn5oLEdCTclEqweOT4U7bEpuoifBMFUXem9sA4turDAZ5tlbrEoWqCorwXey8CaAw44mst5JOQeVNiwtkhw== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -4810,15 +4896,15 @@ nock@^13.3.3: propagate "^2.0.0" node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-gyp@^8.2.0: version "8.4.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" @@ -4849,14 +4935,9 @@ node-gyp@^9.0.0, node-gyp@^9.4.0: tar "^6.1.2" which "^2.0.2" -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== - nopt@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" @@ -4877,7 +4958,7 @@ nopt@^7.0.0, nopt@^7.2.0: normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -4905,16 +4986,6 @@ normalize-package-data@^5.0.0: semver "^7.3.5" validate-npm-package-license "^3.0.4" -normalize-package-data@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.0.tgz#68a96b3c11edd462af7189c837b6b1064a484196" - integrity sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== - dependencies: - hosted-git-info "^7.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -4932,7 +5003,7 @@ npm-audit-report@^5.0.0: npm-bundled@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -4946,34 +5017,32 @@ npm-bundled@^3.0.0: npm-install-checks@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== dependencies: semver "^7.1.1" -npm-install-checks@^6.0.0, npm-install-checks@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.1.1.tgz#b459b621634d06546664207fde16810815808db1" - integrity sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw== - dependencies: - semver "^7.1.1" - -npm-install-checks@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.2.0.tgz#fae55b9967b03ac309695ec96629492d5cedf371" - integrity sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g== +npm-install-checks@^6.0.0, npm-install-checks@^6.1.1, npm-install-checks@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== dependencies: semver "^7.1.1" -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: +npm-normalize-package-bin@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + npm-normalize-package-bin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz#6097436adb4ef09e2628b59a7882576fe53ce485" - integrity sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q== + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: version "10.1.0" @@ -4985,19 +5054,9 @@ npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: semver "^7.3.5" validate-npm-package-name "^5.0.0" -npm-package-arg@^11.0.0, npm-package-arg@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" - integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== dependencies: hosted-git-info "^4.0.1" @@ -5006,7 +5065,7 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-pack npm-packlist@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== dependencies: glob "^7.1.6" @@ -5021,16 +5080,9 @@ npm-packlist@^7.0.0: dependencies: ignore-walk "^6.0.0" -npm-packlist@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.0.tgz#4e7f51fe1d5e69b19508ed8dc6cd3ae2e7b38c17" - integrity sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw== - dependencies: - ignore-walk "^6.0.0" - npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== dependencies: npm-install-checks "^4.0.0" @@ -5039,25 +5091,15 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: semver "^7.3.4" npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" - integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" + integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== dependencies: npm-install-checks "^6.0.0" npm-normalize-package-bin "^3.0.0" npm-package-arg "^10.0.0" semver "^7.3.5" -npm-pick-manifest@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz#f87a4c134504a2c7931f2bb8733126e3c3bb7e8f" - integrity sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - npm-profile@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-7.0.1.tgz#a37dae08b22e662ece2c6e08946f9fcd9fdef663" @@ -5066,29 +5108,17 @@ npm-profile@^7.0.1: npm-registry-fetch "^14.0.0" proc-log "^3.0.0" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== - dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - -npm-registry-fetch@^12.0.0: - version "12.0.1" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.1.tgz#211eff2483b1e71706c9a7ce891182ab3ea9168b" - integrity sha512-ricy4ezH3Uv0d4am6RSwHjCYTWJI74NJjurIigWMAG7Vs3PFyd0TUlkrez5L0AgaPzDLRsEzqb5cOZ/Ue01bmA== +npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: + version "12.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" + integrity sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA== dependencies: - make-fetch-happen "^10.0.0" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^10.0.1" + minipass "^3.1.6" + minipass-fetch "^1.4.1" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^8.1.5" npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: version "14.0.5" @@ -5103,19 +5133,6 @@ npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0 npm-package-arg "^10.0.0" proc-log "^3.0.0" -npm-registry-fetch@^16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-16.0.0.tgz#7529dd7c64c16a1bc8af72f99df73dfe98bb9549" - integrity sha512-JFCpAPUpvpwfSydv99u85yhP68rNIxSFmDpNbNnRWKSe3gpjHnWL8v320gATwRzjtgmZ9Jfe37+ZPOLZPwz6BQ== - dependencies: - make-fetch-happen "^13.0.0" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^11.0.0" - proc-log "^3.0.0" - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -5123,6 +5140,13 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + npm-user-validate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-2.0.0.tgz#7b69bbbff6f7992a1d9a8968d52fd6b6db5431b6" @@ -5204,7 +5228,7 @@ npm@9.8.1: npmlog@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: are-we-there-yet "^2.0.0" @@ -5213,13 +5237,13 @@ npmlog@^5.0.1: set-blocking "^2.0.0" npmlog@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c" - integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q== + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: - are-we-there-yet "^2.0.0" + are-we-there-yet "^3.0.0" console-control-strings "^1.1.0" - gauge "^4.0.0" + gauge "^4.0.3" set-blocking "^2.0.0" npmlog@^7.0.1: @@ -5232,50 +5256,92 @@ npmlog@^7.0.1: gauge "^5.0.0" set-blocking "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" + integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-treeify@^1.1.33: version "1.1.33" resolved "https://registry.yarnpkg.com/object-treeify/-/object-treeify-1.1.33.tgz#f06fece986830a3cba78ddd32d4c11d1f76cdf40" integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== -oclif@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/oclif/-/oclif-3.9.1.tgz#f7ddf8aacd3fd86029b5e66c6cac743459299f4b" - integrity sha512-gJ8gJrohFY8qEeVBOw7wgAFdwPt2CTTkEFXDTkfUeXap6URIy6ngP7g/E1A2zFt2I0wH/qQHwcfuTpfBbj1+Uw== +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: - "@oclif/core" "^2.8.4" - "@oclif/plugin-help" "^5.1.19" - "@oclif/plugin-not-found" "^2.3.7" - "@oclif/plugin-warn-if-update-available" "^2.0.14" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +oclif@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.0.2.tgz#5ac35eb42ac14de17c43b9ac4e34980320144c10" + integrity sha512-yTlNy6bMPKJ4OPPeARg2GIV1PyFT4saIkePvl2q5Ca6hu9B5xmJSimn9XyjxQe1SSldp+L9LOhyzEUkEFB5I6A== + dependencies: + "@oclif/core" "^3.0.4" + "@oclif/plugin-help" "^5.2.14" + "@oclif/plugin-not-found" "^2.3.32" + "@oclif/plugin-warn-if-update-available" "^2.0.44" + async-retry "^1.3.3" aws-sdk "^2.1231.0" - concurrently "^7.6.0" + change-case "^4" debug "^4.3.3" + eslint-plugin-perfectionist "^2.1.0" find-yarn-workspace-root "^2.0.0" fs-extra "^8.1" github-slugger "^1.5.0" got "^11" - lodash "^4.17.21" + lodash.template "^4.5.0" normalize-package-data "^3.0.3" semver "^7.3.8" - shelljs "^0.8.5" - tslib "^2.3.1" yeoman-environment "^3.15.1" yeoman-generator "^5.8.0" - yosay "^2.0.2" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -5286,21 +5352,28 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" ora@^5.4.1: version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -5316,7 +5389,7 @@ ora@^5.4.1: os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-cancelable@^2.0.0: version "2.1.1" @@ -5326,11 +5399,11 @@ p-cancelable@^2.0.0: p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" @@ -5344,7 +5417,7 @@ p-limit@^3.0.2: p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" @@ -5358,14 +5431,14 @@ p-locate@^5.0.0: p-map@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-queue@^6.6.2: version "6.6.2" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: eventemitter3 "^4.0.4" @@ -5373,14 +5446,14 @@ p-queue@^6.6.2: p-timeout@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" p-transform@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/p-transform/-/p-transform-1.3.0.tgz#2da960ba92c6a56efbe75cbd1edf3ea7b3191049" + resolved "https://registry.yarnpkg.com/p-transform/-/p-transform-1.3.0.tgz#2da960ba92c6a56efbe75cbd1edf3ea7b3191049" integrity sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg== dependencies: debug "^4.3.2" @@ -5388,12 +5461,12 @@ p-transform@^1.3.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pacote@^12.0.0, pacote@^12.0.2: version "12.0.3" - resolved "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz#b6f25868deb810e7e0ddf001be88da2bcaca57c7" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.3.tgz#b6f25868deb810e7e0ddf001be88da2bcaca57c7" integrity sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow== dependencies: "@npmcli/git" "^2.1.0" @@ -5440,34 +5513,13 @@ pacote@^15.0.0, pacote@^15.0.8, pacote@^15.2.0: ssri "^10.0.0" tar "^6.1.11" -pacote@^17.0.0, pacote@^17.0.4: - version "17.0.4" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.4.tgz#4bac6c0745967bde96985ec12fbbfc8dea7140e8" - integrity sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg== +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - "@npmcli/git" "^5.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^7.0.0" - "@npmcli/run-script" "^7.0.0" - cacache "^18.0.0" - fs-minipass "^3.0.0" - minipass "^7.0.2" - npm-package-arg "^11.0.0" - npm-packlist "^8.0.0" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^16.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^7.0.0" - read-package-json-fast "^3.0.0" - sigstore "^2.0.0" - ssri "^10.0.0" - tar "^6.1.11" - -pad-component@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pad-component/-/pad-component-0.0.1.tgz#ad1f22ce1bf0fdc0d6ddd908af17f351a404b8ac" - integrity sha1-rR8izhvw/cDW3dkIrxfzUaQEuKw= + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -5477,13 +5529,13 @@ parent-module@^1.0.0: callsites "^3.0.0" parse-conflict-json@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.1.tgz#76647dd072e6068bcaff20be6ccea68a18e1fb58" - integrity sha512-Y7nYw+QaSGBto1LB9lgwOR05Rtz5SbuTf+Oe7HJ6SYQ/DHsvRjQ8O03oWdJbvkt6GzDWospgyZbGmjDYL0sDgA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" + integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== dependencies: json-parse-even-better-errors "^2.3.1" just-diff "^5.0.1" - just-diff-apply "^4.0.1" + just-diff-apply "^5.2.0" parse-conflict-json@^3.0.0, parse-conflict-json@^3.0.1: version "3.0.1" @@ -5497,14 +5549,14 @@ parse-conflict-json@^3.0.0, parse-conflict-json@^3.0.1: parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -5512,13 +5564,29 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + password-prompt@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" - integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.3.tgz#05e539f4e7ca4d6c865d479313f10eb9db63ee5f" + integrity sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw== + dependencies: + ansi-escapes "^4.3.2" + cross-spawn "^7.0.3" + +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== dependencies: - ansi-escapes "^3.1.0" - cross-spawn "^6.0.5" + dot-case "^3.0.4" + tslib "^2.0.3" path-exists@^4.0.0: version "4.0.0" @@ -5528,31 +5596,23 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.0.tgz#0ffbd4c1f7de9600f98a1405507d9f9acb438ab3" - integrity sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2" - path-scurry@^1.10.1: version "1.10.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" @@ -5561,6 +5621,13 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -5571,20 +5638,20 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pidtree@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^4.0.1: version "4.0.1" @@ -5593,7 +5660,7 @@ pify@^4.0.1: pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" @@ -5604,17 +5671,17 @@ pluralize@^8.0.0: integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== postcss-selector-parser@^6.0.10: - version "6.0.11" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" preferred-pm@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6" - integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.1.2.tgz#aedb70550734a574dffcbf2ce82642bd1753bdd6" + integrity sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q== dependencies: find-up "^5.0.0" find-yarn-workspace-root2 "1.2.16" @@ -5626,14 +5693,19 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + pretty-bytes@^5.3.0: version "5.6.0" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== proc-log@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" integrity sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg== proc-log@^3.0.0: @@ -5651,14 +5723,9 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-all-reject-late@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== promise-call-limit@^1.0.1, promise-call-limit@^1.0.2: @@ -5668,12 +5735,12 @@ promise-call-limit@^1.0.1, promise-call-limit@^1.0.2: promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" @@ -5702,17 +5769,12 @@ pump@^3.0.0: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== qrcode-terminal@^0.12.0: version "0.12.0" @@ -5722,11 +5784,16 @@ qrcode-terminal@^0.12.0: querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== quick-lru@^5.1.1: @@ -5734,10 +5801,10 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -ramda@^0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== +rambda@^7.4.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" + integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== randombytes@^2.1.0: version "2.1.0" @@ -5746,19 +5813,19 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== +read-cmd-shim@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" + integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== read-cmd-shim@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== -read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: json-parse-even-better-errors "^2.3.0" @@ -5773,28 +5840,18 @@ read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: npm-normalize-package-bin "^3.0.0" read-package-json@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.3.tgz#726116b75e00eac2075240995f05681af4ca7122" - integrity sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ== + version "6.0.4" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" + integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== dependencies: glob "^10.2.2" json-parse-even-better-errors "^3.0.0" normalize-package-data "^5.0.0" npm-normalize-package-bin "^3.0.0" -read-package-json@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-7.0.0.tgz#d605c9dcf6bc5856da24204aa4e9518ee9714be0" - integrity sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - npm-normalize-package-bin "^3.0.0" - read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -5803,7 +5860,7 @@ read-pkg-up@^7.0.1: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -5819,18 +5876,18 @@ read@^2.0.0, read@^2.1.0: mute-stream "~1.0.0" readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" readable-stream@^2.0.2, readable-stream@^2.3.5: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -5840,19 +5897,20 @@ readable-stream@^2.0.2, readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.3.0.tgz#0914d0c72db03b316c9733bb3461d64a3cc50cba" - integrity sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ== +readable-stream@^4.1.0, readable-stream@^4.3.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" + integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== dependencies: abort-controller "^3.0.0" buffer "^6.0.3" events "^3.3.0" process "^0.11.10" + string_decoder "^1.3.0" readdir-scoped-modules@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== dependencies: debuglog "^1.0.1" @@ -5870,13 +5928,13 @@ readdirp@~3.6.0: rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" redent@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" @@ -5889,20 +5947,36 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -regexp-tree@^0.1.23, regexp-tree@~0.1.1: - version "0.1.24" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" - integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== +regexp-tree@^0.1.27: + version "0.1.27" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" + integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== + +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +regjsparser@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" + integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== replace-ext@^1.0.0: version "1.0.1" @@ -5912,7 +5986,7 @@ replace-ext@^1.0.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" @@ -5926,7 +6000,7 @@ resolve-alpn@^1.0.0: resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-from@^4.0.0: @@ -5936,17 +6010,22 @@ resolve-from@^4.0.0: resolve-global@1.0.0, resolve-global@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== dependencies: global-dirs "^0.1.1" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1: - version "1.21.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -5965,16 +6044,34 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + retry@^0.12.0: version "0.12.0" - resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -5988,17 +6085,29 @@ run-async@^2.0.0, run-async@^2.4.0: integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" -rxjs@^7.0.0, rxjs@^7.2.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== +rxjs@^7.5.5: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -6009,12 +6118,14 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" - integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - regexp-tree "~0.1.1" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" @@ -6024,42 +6135,44 @@ safe-regex@^2.1.1: sax@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= + integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== scoped-regex@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/scoped-regex/-/scoped-regex-2.1.0.tgz#7b9be845d81fd9d21d1ec97c61a0b7cf86d2015f" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-2.1.0.tgz#7b9be845d81fd9d21d1ec97c61a0b7cf86d2015f" integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@7.5.4, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +semver@^6.1.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -6069,15 +6182,17 @@ serialize-javascript@6.0.0: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: - shebang-regex "^1.0.0" + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" shebang-command@^2.0.0: version "2.0.0" @@ -6086,21 +6201,11 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: - version "1.7.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== - shelljs@^0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" @@ -6118,26 +6223,26 @@ shx@^0.3.4: minimist "^1.2.3" shelljs "^0.8.5" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== - -sigstore@^1.3.0, sigstore@^1.4.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.7.0.tgz#9186e6c8ce1ab0cba5d97b414212d40f0a01564e" - integrity sha512-KP7QULhWdlu3hlp+jw2EvgWKlOGOY9McLj/jrchLjHNlNPK0KWIwF919cbmOp6QiKXLmPijR2qH/5KYWlbtG9Q== - dependencies: - "@sigstore/protobuf-specs" "^0.1.0" - "@sigstore/tuf" "^1.0.1" - make-fetch-happen "^11.0.1" +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -sigstore@^1.7.0: +sigstore@^1.3.0, sigstore@^1.4.0, sigstore@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== @@ -6148,15 +6253,17 @@ sigstore@^1.7.0: "@sigstore/tuf" "^1.0.3" make-fetch-happen "^11.0.1" -sigstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.1.0.tgz#c577b596642b3f360dc4135d476466e6edeb2364" - integrity sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw== +sinon@^16.0.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-16.1.0.tgz#645b836563c9bedb21defdbe48831cb2afb687f2" + integrity sha512-ZSgzF0vwmoa8pq0GEynqfdnpEDyP1PkYmEChnkjW0Vyh8IDlyFEJ+fkMhCP0il6d5cJjPl2PUsnUSAuP5sttOQ== dependencies: - "@sigstore/bundle" "^2.1.0" - "@sigstore/protobuf-specs" "^0.2.1" - "@sigstore/sign" "^2.1.0" - "@sigstore/tuf" "^2.1.0" + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^10.3.0" + "@sinonjs/samsam" "^8.0.0" + diff "^5.1.0" + nise "^5.1.4" + supports-color "^7.2.0" slash@^3.0.0: version "3.0.0" @@ -6172,19 +6279,35 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + socks-proxy-agent@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" - integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== dependencies: agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" + debug "^4.3.3" + socks "^2.6.2" socks-proxy-agent@^7.0.0: version "7.0.0" @@ -6195,16 +6318,7 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks-proxy-agent@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" - integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== - dependencies: - agent-base "^7.0.2" - debug "^4.3.4" - socks "^2.7.1" - -socks@^2.6.1, socks@^2.6.2, socks@^2.7.1: +socks@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== @@ -6214,50 +6328,40 @@ socks@^2.6.1, socks@^2.6.2, socks@^2.7.1: sort-keys@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== dependencies: is-plain-obj "^2.0.0" -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= - spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" - integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== -split2@^3.0.0: +split2@^3.0.0, split2@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" @@ -6268,13 +6372,6 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^10.0.0, ssri@^10.0.1, ssri@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" - integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== - dependencies: - minipass "^5.0.0" - -ssri@^10.0.5: version "10.0.5" resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== @@ -6283,7 +6380,7 @@ ssri@^10.0.5: ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" @@ -6296,12 +6393,17 @@ ssri@^9.0.0: minipass "^3.1.1" stdout-stderr@^0.1.9: - version "0.1.9" - resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.9.tgz#9b48ee04eff955ee07776e27125d5524d9d02f57" - integrity sha1-m0juBO/5Ve4Hd24nEl1VJNnQL1c= + version "0.1.13" + resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.13.tgz#54e3450f3d4c54086a49c0c7f8786a44d1844b6f" + integrity sha512-Xnt9/HHHYfjZ7NeQLvuQDyL1LnbsbddgMFKCuaQKwGCdJm8LnstZIXop+uOY36UR1UXXoHXfMbC1KlVdVd2JLA== dependencies: - debug "^3.1.0" - strip-ansi "^4.0.0" + debug "^4.1.1" + strip-ansi "^6.0.0" + +string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" @@ -6312,24 +6414,7 @@ stdout-stderr@^0.1.9: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^5.0.1, string-width@^5.1.2: +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== @@ -6338,9 +6423,36 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" @@ -6359,38 +6471,24 @@ string_decoder@~1.1.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strip-bom-buf@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" - integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= + integrity sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ== dependencies: is-utf8 "^0.2.1" strip-bom-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" - integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco= + integrity sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w== dependencies: first-chunk-stream "^2.0.0" strip-bom "^2.0.0" @@ -6398,44 +6496,44 @@ strip-bom-stream@^2.0.0: strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: is-utf8 "^0.2.0" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.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, 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== -supports-color@8.1.1, supports-color@^8.1.0, supports-color@^8.1.1: +supports-color@8.1.1, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -6443,7 +6541,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -6468,39 +6566,12 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -taketalk@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/taketalk/-/taketalk-1.0.0.tgz#b4d4f0deed206ae7df775b129ea2ca6de52f26dd" - integrity sha1-tNTw3u0gauffd1sSnqLKbeUvJt0= - dependencies: - get-stdin "^4.0.1" - minimist "^1.1.0" - -tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.13, tar@^6.1.2: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.1.15: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.13, tar@^6.1.15, tar@^6.1.2: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== @@ -6514,30 +6585,30 @@ tar@^6.1.15: text-extensions@^1.0.0: version "1.9.0" - resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== textextensions@^5.12.0, textextensions@^5.13.0: - version "5.14.0" - resolved "https://registry.npmjs.org/textextensions/-/textextensions-5.14.0.tgz#a6ff6aee5faaa751e6157d422c722a2bfd59eedf" - integrity sha512-4cAYwNFNYlIAHBUo7p6zw8POUvWbZor+/R0Tanv+rIhsauEyV9QSrEXL40pI+GfTQxKX8k6Tyw6CmdSDSmASrg== + version "5.16.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-5.16.0.tgz#57dd60c305019bba321e848b1fdf0f99bfa59ec1" + integrity sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw== through2@^4.0.0: version "4.0.2" - resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== dependencies: readable-stream "3" "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tiny-relative-date@^1.3.0: version "1.3.0" @@ -6551,11 +6622,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -6566,16 +6632,11 @@ to-regex-range@^5.0.1: tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== treeverse@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== treeverse@^3.0.0: @@ -6585,15 +6646,15 @@ treeverse@^3.0.0: trim-newlines@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== -ts-node@^10.7.0, ts-node@^10.9.1: +ts-node@^10.8.1, ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -6612,23 +6673,21 @@ ts-node@^10.7.0, ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" -tslib@^2, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.1, tslib@^2.5.0, tslib@^2.6.2: +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.5.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tuf-js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" @@ -6638,19 +6697,10 @@ tuf-js@^1.1.7: debug "^4.3.4" make-fetch-happen "^11.1.1" -tuf-js@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.1.0.tgz#87aa36d5a166e7522f1e2050eb502a3a9b0bde72" - integrity sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA== - dependencies: - "@tufjs/models" "2.0.0" - debug "^4.3.4" - make-fetch-happen "^13.0.0" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" @@ -6661,14 +6711,14 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@^4.0.0, type-detect@^4.0.8: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.18.0: version "0.18.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.20.2: @@ -6688,7 +6738,7 @@ type-fest@^0.3.0: type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: @@ -6696,19 +6746,73 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typedarray-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz#cdd2933c61dd3f5f02eda5d012d441f95bfeb50a" - integrity sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ== +type-fest@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +"typescript@^4.6.4 || ^5.0.0", typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -typescript@4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== unique-filename@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" @@ -6729,7 +6833,7 @@ unique-filename@^3.0.0: unique-slug@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" @@ -6750,7 +6854,7 @@ unique-slug@^4.0.0: universal-user-agent@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.0: @@ -6765,20 +6869,34 @@ universalify@^2.0.0: untildify@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= + integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== dependencies: punycode "1.3.2" querystring "0.2.0" @@ -6786,7 +6904,7 @@ url@0.10.3: util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@^0.12.4: version "0.12.5" @@ -6809,11 +6927,6 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -6824,8 +6937,8 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: validate-npm-package-name@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: builtins "^1.0.3" @@ -6839,7 +6952,7 @@ validate-npm-package-name@^5.0.0: vinyl-file@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365" - integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U= + integrity sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg== dependencies: graceful-fs "^4.1.2" pify "^2.3.0" @@ -6861,7 +6974,7 @@ vinyl@^2.0.1: walk-up-path@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walk-up-path@^3.0.1: @@ -6871,58 +6984,61 @@ walk-up-path@^3.0.1: wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-pm@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" + resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== dependencies: load-yaml-file "^0.2.0" path-exists "^4.0.0" -which-typed-array@^1.1.2: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.11, which-typed-array@^1.1.2: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" -which@2.0.2, which@^2.0.1, which@^2.0.2: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^3.0.0, which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" @@ -6930,16 +7046,9 @@ which@^3.0.0, which@^3.0.1: dependencies: isexe "^2.0.0" -which@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" - integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== - dependencies: - isexe "^3.1.1" - wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" @@ -6951,23 +7060,17 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -word-wrap@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - name wrap-ansi-cjs version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -6976,15 +7079,16 @@ workerpool@6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== @@ -6996,17 +7100,15 @@ wrap-ansi@^8.1.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.0.tgz#0eff5dc687d3e22535ca3fca8558124645a4b053" - integrity sha512-JhcWoKffJNF7ivO9yflBhc7tn3wKnokMUfWpBriM9yCXj4ePQnRPcWglBkkg1AHC8nsW/EfxwwhqsLtOy59djA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^4.0.0" + signal-exit "^3.0.7" write-file-atomic@^5.0.0, write-file-atomic@^5.0.1: version "5.0.1" @@ -7016,33 +7118,33 @@ write-file-atomic@^5.0.0, write-file-atomic@^5.0.1: imurmurhash "^0.1.4" signal-exit "^4.0.1" -xml2js@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== +xml2js@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== dependencies: sax ">=0.6.0" - xmlbuilder "~9.0.1" + xmlbuilder "~11.0.0" -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" + integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== yargs-parser@20.2.4: version "20.2.4" @@ -7051,7 +7153,7 @@ yargs-parser@20.2.4: yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-parser@^21.1.1: @@ -7069,9 +7171,9 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0, yargs@^16.2.0: +yargs@16.2.0: version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -7082,10 +7184,10 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1: - version "17.6.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== +yargs@^17.0.0: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" escalade "^3.1.1" @@ -7096,14 +7198,14 @@ yargs@^17.3.1: yargs-parser "^21.1.1" yarn@^1.22.18: - version "1.22.18" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.18.tgz#05b822ade8c672987bab8858635145da0850f78a" - integrity sha512-oFffv6Jp2+BTUBItzx1Z0dpikTX+raRdqupfqzeMKnoh7WD6RuPAxcqDkMUy9vafJkrB0YaV708znpuMhEBKGQ== + version "1.22.19" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== yeoman-environment@^3.15.1: - version "3.15.1" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.15.1.tgz#b094b858bfbd24db8061d255d0e7871224190474" - integrity sha512-P4DTQxqCxNTBD7gph+P+dIckBdx0xyHmvOYgO3vsc9/Sl67KJ6QInz5Qv6tlXET3CFFJ/YxPIdl9rKb0XwTRLg== + version "3.19.3" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.19.3.tgz#49c2339805fdf695fac42c88334a1daa94ee8b6c" + integrity sha512-/+ODrTUHtlDPRH9qIC0JREH8+7nsRcjDl3Bxn2Xo/rvAaVvixH5275jHwg0C85g4QsF4P6M2ojfScPPAl+pLAg== dependencies: "@npmcli/arborist" "^4.0.4" are-we-there-yet "^2.0.0" @@ -7135,6 +7237,7 @@ yeoman-environment@^3.15.1: pacote "^12.0.2" preferred-pm "^3.0.3" pretty-bytes "^5.3.0" + readable-stream "^4.3.0" semver "^7.1.3" slash "^3.0.0" strip-ansi "^6.0.0" @@ -7143,9 +7246,9 @@ yeoman-environment@^3.15.1: untildify "^4.0.0" yeoman-generator@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-5.8.0.tgz#a1951ce0d95555f94adc5975a517d4741b5ce24d" - integrity sha512-dsrwFn9/c2/MOe80sa2nKfbZd/GaPTgmmehdgkFifs1VN/I7qPsW2xcBfvSkHNGK+PZly7uHyH8kaVYSFNUDhQ== + version "5.9.0" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-5.9.0.tgz#a83c9e391b0b3442536da677bc204cfa3f81f2c7" + integrity sha512-sN1e01Db4fdd8P/n/yYvizfy77HdbwzvXmPxps9Gwz2D24slegrkSn+qyj+0nmZhtFwGX2i/cH29QDrvAFT9Aw== dependencies: chalk "^4.1.0" dargs "^7.0.0" @@ -7155,6 +7258,7 @@ yeoman-generator@^5.8.0: lodash "^4.17.11" mem-fs-editor "^9.0.0" minimist "^1.2.5" + pacote "^15.2.0" read-pkg-up "^7.0.1" run-async "^2.0.0" semver "^7.2.1" @@ -7171,18 +7275,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yosay@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/yosay/-/yosay-2.0.2.tgz#a7017e764cd88d64a1ae64812201de5b157adf6d" - integrity sha512-avX6nz2esp7IMXGag4gu6OyQBsMh/SEn+ZybGu3yKPlOTE6z9qJrzG/0X5vCq/e0rPFy0CUYCze0G5hL310ibA== - dependencies: - ansi-regex "^2.0.0" - ansi-styles "^3.0.0" - chalk "^1.0.0" - cli-boxes "^1.0.0" - pad-component "0.0.1" - string-width "^2.0.0" - strip-ansi "^3.0.0" - taketalk "^1.0.0" - wrap-ansi "^2.0.0" From 5630d42e84586a32a80ee3a462a2b53db8034e36 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Tue, 17 Oct 2023 11:01:34 -0600 Subject: [PATCH 02/39] fix: tests --- src/yarn.ts | 7 ++++++- test/test.ts | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/yarn.ts b/src/yarn.ts index 692d0158..c3868308 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -47,7 +47,12 @@ export default class Yarn { cwd, env: npmRunPath.env({cwd, env: process.env}), // The ts-node/esm loader isn't need to execute yarn commands anyways. - execArgv: process.execArgv.join(' ').replace('--loader ts-node/esm', '').split(' ').filter(Boolean), + execArgv: process.execArgv + .join(' ') + .replace('--loader ts-node/esm', '') + .replace('--loader=ts-node/esm', '') + .split(' ') + .filter(Boolean), // Remove --loader ts-node/esm from execArgv so that the subprocess doesn't fail if it can't find ts-node. stdio: [0, null, null, 'ipc'], } diff --git a/test/test.ts b/test/test.ts index d1547352..7574230f 100644 --- a/test/test.ts +++ b/test/test.ts @@ -5,7 +5,7 @@ import {rm} from 'node:fs/promises' export const test = Fancy.test // eslint-disable-next-line unicorn/prefer-top-level-await .finally(async () => { - const config = await Config.load() + const config = await Config.load(process.cwd()) await Promise.all([ // fs.remove(config.cacheDir), rm(config.configDir, {force: true, recursive: true}), From 4bbf9661391aea1845f2f0230617e8e66f23be41 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Tue, 17 Oct 2023 14:31:04 -0600 Subject: [PATCH 03/39] test: integration and unit tests --- .github/workflows/test.yml | 47 +++++-- package.json | 12 +- src/plugins.ts | 89 ++++++------ src/util.ts | 4 +- test/commands/plugins/index.test.ts | 147 ------------------- test/commands/plugins/uninstall.test.ts | 8 -- test/integration/install.integration.ts | 180 ++++++++++++++++++++++++ test/plugins.test.ts | 178 +++++++++++++++++++++++ test/test.ts | 18 --- yarn.lock | 70 +-------- 10 files changed, 457 insertions(+), 296 deletions(-) delete mode 100644 test/commands/plugins/index.test.ts delete mode 100644 test/commands/plugins/uninstall.test.ts create mode 100644 test/integration/install.integration.ts create mode 100644 test/plugins.test.ts delete mode 100644 test/test.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 58755e81..564f5cfa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,11 +5,42 @@ on: workflow_dispatch: jobs: - yarn-lockfile-check: - uses: salesforcecli/github-workflows/.github/workflows/lockFileCheck.yml@main - linux-unit-tests: - needs: yarn-lockfile-check - uses: salesforcecli/github-workflows/.github/workflows/unitTestsLinux.yml@main - windows-unit-tests: - needs: linux-unit-tests - uses: salesforcecli/github-workflows/.github/workflows/unitTestsWindows.yml@main + sf-integration-tests: + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: lts/* + - name: Install sf + uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd + with: + max_attempts: 3 + retry_wait_seconds: 60 + command: npm install -g @salesforce/cli@$nightly --omit=dev + timeout_minutes: 60 + - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main + - run: yarn build + - name: Run tests + run: yarn test:integration:sf + + integration-tests: + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: lts/* + - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main + - run: yarn build + - name: Run tests + run: yarn test:integration:install + + unit-tests: + uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main diff --git a/package.json b/package.json index 5b69a87d..9a404238 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "chalk": "^5.3.0", "debug": "^4.3.4", "http-call": "^5.2.2", - "load-json-file": "^5.3.0", "npm": "9.8.1", "npm-run-path": "^4.0.1", "semver": "^7.5.4", @@ -21,7 +20,6 @@ "@commitlint/config-conventional": "^17.8.0", "@oclif/plugin-help": "^6", "@oclif/prettier-config": "^0.2.1", - "@oclif/test": "^3.0.2", "@types/chai": "^4.3.6", "@types/debug": "^4.1.9", "@types/glob": "^8.1.0", @@ -29,6 +27,7 @@ "@types/node": "^18", "@types/semver": "^7.5.3", "@types/shelljs": "^0.8.13", + "@types/sinon": "^10.0.19", "@types/supports-color": "^7.2.0", "@types/validate-npm-package-name": "^4.0.0", "chai": "^4.3.10", @@ -37,7 +36,6 @@ "eslint-config-oclif": "^5.0.0", "eslint-config-oclif-typescript": "^3.0.6", "eslint-config-prettier": "^9.0.0", - "fancy-test": "^3.0.1", "globby": "^11.1.0", "husky": "^8.0.3", "lint-staged": "^15.0.1", @@ -46,6 +44,7 @@ "oclif": "^4.0.2", "prettier": "^3.0.3", "shx": "^0.3.4", + "sinon": "^16.1.0", "ts-node": "^10.9.1", "typescript": "^5.2.2" }, @@ -72,10 +71,11 @@ "@oclif/plugin-help" ], "aliases": { - "aliasme": "oclif-debug" + "aliasme": "@oclif/plugin-test-esm-1" }, "bin": "mycli", "flexibleTaxonomy": true, + "scope": "oclif", "topicSeparator": " " }, "repository": "oclif/plugin-plugins", @@ -90,8 +90,10 @@ "prepublishOnly": "yarn run build && oclif lock && oclif manifest . && oclif readme", "pretest": "yarn build && tsc -p test --noEmit", "preversion": "yarn run clean", - "test": "mocha \"test/**/*.test.ts\"", + "test": "mocha --forbid-only \"test/**/*.test.ts\"", "test:integration": "mocha \"test/**/*.integration.ts\"", + "test:integration:sf": "mocha \"test/**/sf.integration.ts\"", + "test:integration:install": "mocha \"test/**/install.integration.ts\"", "version": "oclif readme && git add README.md" }, "type": "module", diff --git a/src/plugins.ts b/src/plugins.ts index bfad553e..105e09ca 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -1,19 +1,26 @@ import {Config, Errors, Interfaces, ux} from '@oclif/core' import makeDebug from 'debug' -import loadJSON from 'load-json-file' import * as fs from 'node:fs' +import {readFile} from 'node:fs/promises' import * as path from 'node:path' import {gt, valid, validRange} from 'semver' -import * as shelljs from 'shelljs' import {findNode, findNpm, uniq, uniqWith} from './util.js' import Yarn from './yarn.js' -const initPJSON: Interfaces.PJSON.User = { +type UserPJSON = { + dependencies: Record + oclif: { + plugins: Array + schema: number + } + private: boolean +} + +const initPJSON: UserPJSON = { dependencies: {}, oclif: {plugins: [], schema: 1}, private: true, - version: '', } async function fileExists(filePath: string): Promise { @@ -39,9 +46,14 @@ export default class Plugins { async add(...plugins: Interfaces.PJSON.PluginTypes[]): Promise { const pjson = await this.pjson() - pjson.oclif.plugins = uniq([...(pjson.oclif.plugins || []), ...plugins]) as typeof pjson.oclif.plugins - await this.savePJSON(pjson) + await this.savePJSON({ + ...pjson, + oclif: { + ...pjson.oclif, + plugins: uniq([...(pjson.oclif.plugins || []), ...plugins]) as typeof pjson.oclif.plugins, + }, + }) } friendlyName(name: string): string { @@ -141,7 +153,7 @@ export default class Plugins { async list(): Promise<(Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User)[]> { const pjson = await this.pjson() - return this.normalizePlugins(pjson.oclif.plugins) + return pjson.oclif.plugins } async maybeUnfriendlyName(name: string): Promise { @@ -155,19 +167,17 @@ export default class Plugins { return name } - async pjson(): Promise { - try { - const pjson = await loadJSON(this.pjsonPath) - return { - ...initPJSON, - dependencies: {}, - ...pjson, - } - } catch (error: unknown) { - this.debug(error) - const err = error as Error & {code?: string} - if (err.code !== 'ENOENT') process.emitWarning(err) - return initPJSON + async pjson(): Promise { + const pjson = await this.readPJSON() + const plugins = pjson ? this.normalizePlugins(pjson.oclif.plugins) : [] + return { + ...initPJSON, + ...pjson, + oclif: { + ...initPJSON.oclif, + ...pjson?.oclif, + plugins, + }, } } @@ -228,9 +238,7 @@ export default class Plugins { ...pjson, oclif: { ...pjson.oclif, - plugins: this.normalizePlugins(pjson.oclif.plugins).filter( - (p) => p.name !== name, - ) as typeof pjson.oclif.plugins, + plugins: pjson.oclif.plugins.filter((p) => p.name !== name), }, }) } @@ -245,7 +253,6 @@ export default class Plugins { async uninstall(name: string): Promise { try { const pjson = await this.pjson() - // @ts-expect-error because typescript doesn't think plugins could ever be an object if ((pjson.oclif.plugins ?? []).some((p) => typeof p === 'object' && p.type === 'user' && p.name === name)) { await this.yarn.exec(['remove', name], { cwd: this.config.dataDir, @@ -316,16 +323,6 @@ export default class Plugins { ux.action.stop() } - async yarnNodeVersion(): Promise { - try { - const f = await loadJSON<{nodeVersion: string}>(path.join(this.config.dataDir, 'node_modules', '.yarn-integrity')) - return f.nodeVersion - } catch (error: unknown) { - const err = error as Error & {code?: string} - if (err.code !== 'ENOENT') ux.warn(err) - } - } - private async createPJSON() { if (!fs.existsSync(this.pjsonPath)) { this.debug(`creating ${this.pjsonPath} with pjson: ${JSON.stringify(initPJSON, null, 2)}`) @@ -373,7 +370,7 @@ export default class Plugins { } private async npmHasPackage(name: string): Promise { - const nodeExecutable = findNode(this.config.root) + const nodeExecutable = await findNode(this.config.root) const npmCli = await findNpm() this.debug(`Using node executable located at: ${nodeExecutable}`) @@ -382,6 +379,7 @@ export default class Plugins { const command = `${nodeExecutable} ${npmCli} show ${name} dist-tags` try { + const {default: shelljs} = await import('shelljs') const npmShowResult = shelljs.exec(command, { async: false, encoding: 'utf8', @@ -403,16 +401,19 @@ export default class Plugins { return path.join(this.config.dataDir, 'package.json') } - private async savePJSON(pjson: Interfaces.PJSON.User) { - const updated = { - ...pjson, - oclif: { - ...pjson.oclif, - plugins: this.normalizePlugins(pjson.oclif.plugins), - }, + private async readPJSON(): Promise { + try { + return JSON.parse(await readFile(this.pjsonPath, 'utf8')) as Interfaces.PJSON.User + } catch (error: unknown) { + this.debug(error) + const err = error as Error & {code?: string} + if (err.code !== 'ENOENT') process.emitWarning(err) } - this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(updated, null, 2)) + } + + private async savePJSON(pjson: UserPJSON) { + this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(pjson, null, 2)) await fs.promises.mkdir(path.dirname(this.pjsonPath), {recursive: true}) - await fs.promises.writeFile(this.pjsonPath, JSON.stringify(updated, null, 2)) + await fs.promises.writeFile(this.pjsonPath, JSON.stringify(pjson, null, 2)) } } diff --git a/src/util.ts b/src/util.ts index 305f5c46..723730fe 100644 --- a/src/util.ts +++ b/src/util.ts @@ -3,7 +3,6 @@ import * as fsPromises from 'node:fs/promises' import {createRequire} from 'node:module' import {type} from 'node:os' import * as path from 'node:path' -import * as shelljs from 'shelljs' type Types = boolean | number | string | undefined @@ -58,8 +57,9 @@ const isExecutable = (filepath: string): boolean => { * @param root - The root path of the CLI (this.config.root). * @returns The path to the node executable. */ -export function findNode(root: string): string { +export async function findNode(root: string): Promise { const cliBinDirs = [path.join(root, 'bin'), path.join(root, 'client', 'bin')].filter((p) => fs.existsSync(p)) + const {default: shelljs} = await import('shelljs') if (cliBinDirs.length > 0) { // Find the node executable diff --git a/test/commands/plugins/index.test.ts b/test/commands/plugins/index.test.ts deleted file mode 100644 index b32b5319..00000000 --- a/test/commands/plugins/index.test.ts +++ /dev/null @@ -1,147 +0,0 @@ -import {platform} from 'node:os' - -import {expect, test} from '../../test.js' - -describe('command', () => { - test - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .command(['plugins:install', '@oclif/example-plugin-ts'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('@oclif/example-plugin-ts ')) - .stdout() - .command(['hello'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('hello world')) - .command(['plugins:uninstall', '@heroku-cli/plugin-@oclif/example-plugin-ts']) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls @oclif/example-plugin-ts') - - test - .stdout() - .command(['plugins', '--json'], {reset: true}) - .do( - (output) => - expect((output.returned as [{name: string}]).find((o) => o.name === '@oclif/example-plugin-ts')).to.be - .undefined, - ) - .command(['plugins:install', '@oclif/example-plugin-ts'], {reset: true}) - .stdout() - .command(['plugins', '--json'], {reset: true}) - .do((output) => - expect((output.returned as [{name: string}]).find((o) => o.name === '@oclif/example-plugin-ts')).to.have.property( - 'type', - 'user', - ), - ) - .stdout() - .command(['hello'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('hello world')) - .command(['plugins:uninstall', '@heroku-cli/plugin-@oclif/example-plugin-ts']) - .stdout() - .command(['plugins', '--json'], {reset: true}) - .do( - (output) => - expect((output.returned as [{name: string}]).find((o) => o.name === '@oclif/example-plugin-ts')).to.be - .undefined, - ) - .it('installs and uninstalls @oclif/example-plugin-ts (--json)') - - test - .command(['plugins:install', '@oclif/example-plugin-ts@latest'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('@oclif/example-plugin-ts')) - .command(['plugins:uninstall', '@oclif/example-plugin-ts@latest'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls @oclif/example-plugin-ts with tags') - - if (platform() !== 'win32') { - test - .command(['plugins:install', 'aliasme'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('oclif-debug')) - .stdout() - .command(['debug'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('debug')) - .command(['plugins:uninstall', 'oclif-debug']) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs via an alias') - } - - test - .command(['plugins:install', 'jdxcode/oclif-debug'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('oclif-debug')) - .stdout() - .command(['debug'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('debug')) - .command(['plugins:uninstall', 'oclif-debug']) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls jdxcode/oclif-debug') - - if (platform() !== 'win32') { - test - .command(['plugins:install', 'stubbed'], {reset: true}) - .catch(/1/) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('does not install if unsure if scoped package does not exist') - } - - test - .command(['plugins:install', '@salesforce/plugin-custom-metadata'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('custom-metadata')) - .command(['plugins:uninstall', '@salesforce/plugin-custom-metadata']) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls plugin with oclif.lock') - - test - .command(['plugins:install', '@salesforce/plugin-custom-metadata@2.2.0'], {reset: true}) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.contain('custom-metadata')) - .command(['plugins:uninstall', '@salesforce/plugin-custom-metadata']) - .stdout() - .command(['plugins'], {reset: true}) - .do((output) => expect(output.stdout).to.equal('No plugins installed.\n')) - .it('installs and uninstalls specific plugin version with oclif.lock') - - // test - // .command(['plugins:install', 'heroku-debug@beta'], {reset: true}) - // .stdout() - // .command(['plugins'], {reset: true}) - // .do(output => expect(output.stdout).to.match(/heroku-debug \d+\.\d+\.\d+-beta \(beta\)/)) - // .it('installs @heroku-cli/plugin-status@beta') - - // test - // .skip() - // .command(['plugins:install', 'heroku-debug']) - // .stdout() - // .command(['plugins']) - // .do(output => expect(output.stdout).to.contain('heroku-debug')) - // .stdout() - // .command(['debug']) - // .do(output => expect(output.stdout).to.contain('foo')) - // .command(['plugins:uninstall', 'heroku-debug']) - // .stdout() - // .command(['plugins']) - // .do(output => expect(output.stdout).to.equal('No plugins installed.\n')) - // .it('installs and uninstalls heroku-debug') -}) diff --git a/test/commands/plugins/uninstall.test.ts b/test/commands/plugins/uninstall.test.ts deleted file mode 100644 index 0c882c7c..00000000 --- a/test/commands/plugins/uninstall.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import {test} from '../../test.js' - -describe('command', () => { - test - .command(['plugins:uninstall', 'foobar'], {reset: true}) - .catch(/foobar is not installed/) - .it('uninstall non-existent plugin') -}) diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts new file mode 100644 index 00000000..13521ac0 --- /dev/null +++ b/test/integration/install.integration.ts @@ -0,0 +1,180 @@ +import {ux} from '@oclif/core' +import {CLIError} from '@oclif/core/lib/errors/index.js' +import {expect} from 'chai' +import {rm} from 'node:fs/promises' +import {tmpdir} from 'node:os' +import {join} from 'node:path' +import {SinonSandbox, createSandbox} from 'sinon' + +import PluginsIndex from '../../src/commands/plugins/index.js' +import PluginsInstall from '../../src/commands/plugins/install.js' +import PluginsUninstall from '../../src/commands/plugins/uninstall.js' + +describe('install/uninstall integration tests', () => { + let sandbox: SinonSandbox + let stubs: ReturnType + + const cacheDir = join(tmpdir(), 'plugin-plugins-tests', 'cache') + const configDir = join(tmpdir(), 'plugin-plugins-tests', 'config') + const dataDir = join(tmpdir(), 'plugin-plugins-tests', 'data') + + before(async () => { + try { + await Promise.all([ + rm(cacheDir, {force: true, recursive: true}), + rm(configDir, {force: true, recursive: true}), + rm(dataDir, {force: true, recursive: true}), + ]) + } catch {} + }) + + beforeEach(() => { + sandbox = createSandbox() + stubs = ux.makeStubs(sandbox) + process.env.MYCLI_CACHE_DIR = cacheDir + process.env.MYCLI_CONFIG_DIR = configDir + process.env.MYCLI_DATA_DIR = dataDir + }) + + afterEach(() => { + sandbox.restore() + + delete process.env.MYCLI_CACHE_DIR + delete process.env.MYCLI_CONFIG_DIR + delete process.env.MYCLI_DATA_DIR + }) + + describe('basic', () => { + it('should return "No Plugins" if no plugins are installed', async () => { + await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + }) + + it('should install plugin', async () => { + await PluginsInstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + }) + + it('should uninstall plugin', async () => { + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) + + describe('tagged', () => { + it('should install plugin from a tag', async () => { + await PluginsInstall.run(['@oclif/plugin-test-esm-1@latest'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + }) + + it('should uninstall plugin', async () => { + await PluginsUninstall.run(['@oclif/plugin-test-esm-1@latest'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) + + describe('alias', () => { + it('should install aliased plugin', async () => { + await PluginsInstall.run(['aliasme'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + }) + + it('should uninstall aliased plugin', async () => { + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) + + describe('github', () => { + it('should install plugin from github', async () => { + await PluginsInstall.run(['oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + }) + + it('should uninstall plugin from github', async () => { + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) + + describe('oclif.lock', () => { + it('should install plugin with oclif.lock', async () => { + await PluginsInstall.run(['@salesforce/plugin-custom-metadata'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('@salesforce/plugin-custom-metadata') + expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.true + }) + + it('should uninstall plugin with oclif.lock', async () => { + await PluginsUninstall.run(['@salesforce/plugin-custom-metadata'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.false + }) + }) + + describe('non-existent plugin', () => { + it('should not install non-existent plugin', async () => { + try { + await PluginsInstall.run(['@oclif/DOES_NOT_EXIST'], process.cwd()) + } catch {} + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/DOES_NOT_EXIST')).to.be.false + }) + + it('should handle uninstalling a non-existent plugin', async () => { + try { + await PluginsUninstall.run(['@oclif/DOES_NOT_EXIST'], process.cwd()) + } catch (error) { + const err = error as CLIError + expect(err.message).to.equal('@oclif/DOES_NOT_EXIST is not installed') + } + }) + }) + + describe('scoped plugin', () => { + it('should install scoped plugin', async () => { + await PluginsInstall.run(['test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + }) + + it('should uninstall scoped plugin', async () => { + await PluginsUninstall.run(['test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) +}) diff --git a/test/plugins.test.ts b/test/plugins.test.ts new file mode 100644 index 00000000..587203b2 --- /dev/null +++ b/test/plugins.test.ts @@ -0,0 +1,178 @@ +import {Config, Interfaces} from '@oclif/core' +import {expect} from 'chai' +import {join} from 'node:path' +import {SinonSandbox, SinonSpy, createSandbox} from 'sinon' + +import Plugins from '../src/plugins.js' + +describe('Plugins', () => { + let sandbox: SinonSandbox + let plugins: Plugins + let saveStub: SinonSpy + let config: Config + + const userPlugin: Interfaces.PJSON.PluginTypes.User = { + name: '@oclif/plugin-user', + tag: 'latest', + type: 'user', + } + + const linkedPlugin: Interfaces.PJSON.PluginTypes.Link = { + name: '@oclif/plugin-linked', + root: join('some', 'path', 'package.json'), + type: 'link', + } + + const userPJSON = { + dependencies: {}, + oclif: { + plugins: [], + schema: 1, + }, + private: true, + } + + beforeEach(async () => { + sandbox = createSandbox() + config = await Config.load(process.cwd()) + plugins = new Plugins(config) + // @ts-expect-error because savePJSON is private + saveStub = sandbox.stub(plugins, 'savePJSON').resolves() + }) + + afterEach(() => { + sandbox.restore() + }) + + describe('add', () => { + it('should add user plugin to package.json', async () => { + sandbox.stub(plugins, 'pjson').resolves(userPJSON) + + await plugins.add(userPlugin) + + expect(saveStub.calledWithExactly({...userPJSON, oclif: {...userPJSON.oclif, plugins: [userPlugin]}})).to.be.true + }) + + it('should add linked plugin to package.json', async () => { + sandbox.stub(plugins, 'pjson').resolves(userPJSON) + + await plugins.add(linkedPlugin) + + expect(saveStub.calledWithExactly({...userPJSON, oclif: {...userPJSON.oclif, plugins: [linkedPlugin]}})).to.be + .true + }) + + it('should dedupe added plugins', async () => { + sandbox.stub(plugins, 'pjson').resolves(userPJSON) + + await plugins.add(linkedPlugin, linkedPlugin) + + expect(saveStub.calledWithExactly({...userPJSON, oclif: {...userPJSON.oclif, plugins: [linkedPlugin]}})).to.be + .true + }) + }) + + describe('friendlyName', () => { + it('should return friendly name for plugin', () => { + expect(plugins.friendlyName(userPlugin.name)).to.equal('user') + }) + + it('should return provided name that does not match scope', () => { + expect(plugins.friendlyName('@foo/plugin-bar')).to.equal('@foo/plugin-bar') + }) + + it('should return provided name when scope is not defined', () => { + sandbox.stub(config.pjson.oclif, 'scope').value(null) + expect(plugins.friendlyName(linkedPlugin.name)).to.equal('@oclif/plugin-linked') + }) + }) + + describe('unfriendlyName', () => { + it('should return undefined when provided scoped name', () => { + expect(plugins.unfriendlyName(userPlugin.name)).to.be.undefined + }) + + it('should return full name when provided short name', () => { + expect(plugins.unfriendlyName('user')).to.equal(userPlugin.name) + }) + + it('should return undefined when scope is not defined', () => { + sandbox.stub(config.pjson.oclif, 'scope').value(null) + expect(plugins.unfriendlyName(linkedPlugin.name)).to.be.undefined + }) + }) + + describe('maybeUnfriendlyName', () => { + it('should return full name when given short name and npm pkg exists', async () => { + // @ts-expect-error because npmHasPackage is private + sandbox.stub(plugins, 'npmHasPackage').resolves(true) + expect(await plugins.maybeUnfriendlyName('user')).to.equal(userPlugin.name) + }) + + it('should return full name when given full name and npm pkg exists', async () => { + // @ts-expect-error because npmHasPackage is private + sandbox.stub(plugins, 'npmHasPackage').resolves(true) + expect(await plugins.maybeUnfriendlyName(userPlugin.name)).to.equal(userPlugin.name) + }) + + it('should return provided name when npm pkg does not exist', async () => { + // @ts-expect-error because npmHasPackage is private + sandbox.stub(plugins, 'npmHasPackage').resolves(false) + expect(await plugins.maybeUnfriendlyName(userPlugin.name)).to.equal(userPlugin.name) + }) + }) + + describe('hasPlugin', () => { + it('should return provided plugin if it has been added', async () => { + sandbox.stub(plugins, 'pjson').resolves({...userPJSON, oclif: {...userPJSON.oclif, plugins: [userPlugin]}}) + expect(await plugins.hasPlugin(userPlugin.name)).to.equal(userPlugin) + }) + + it('should return provided plugin for friendly name if it has been added', async () => { + sandbox.stub(plugins, 'pjson').resolves({...userPJSON, oclif: {...userPJSON.oclif, plugins: [userPlugin]}}) + expect(await plugins.hasPlugin('user')).to.equal(userPlugin) + }) + + it('should return false if the plugin has not been added', async () => { + sandbox.stub(plugins, 'pjson').resolves(userPJSON) + expect(await plugins.hasPlugin(userPlugin.name)).to.be.false + }) + }) + + describe('pjson', () => { + it('should return scaffolded package.json when it does not exist', async () => { + // @ts-expect-error because readPJSON is private + sandbox.stub(plugins, 'readPJSON').resolves() + expect(await plugins.pjson()).to.deep.equal(userPJSON) + }) + + it('should convert plugin strings to objects', async () => { + // @ts-expect-error because readPJSON is private + sandbox.stub(plugins, 'readPJSON').resolves({ + dependencies: {}, + oclif: { + plugins: ['@oclif/plugin-user'], + schema: 1, + }, + private: true, + }) + expect(await plugins.pjson()).to.deep.equal({...userPJSON, oclif: {...userPJSON.oclif, plugins: [userPlugin]}}) + }) + }) + + describe('remove', () => { + it('should remove given plugin from dependencies', async () => { + sandbox.stub(plugins, 'pjson').resolves({ + ...userPJSON, + dependencies: {[userPlugin.name]: '1.0.0'}, + oclif: { + ...userPJSON.oclif, + plugins: [userPlugin], + }, + }) + + await plugins.remove(userPlugin.name) + expect(saveStub.calledWithExactly(userPJSON)).to.be.true + }) + }) +}) diff --git a/test/test.ts b/test/test.ts deleted file mode 100644 index 7574230f..00000000 --- a/test/test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import {Config} from '@oclif/core' -import * as Fancy from '@oclif/test' -import {rm} from 'node:fs/promises' - -export const test = Fancy.test - // eslint-disable-next-line unicorn/prefer-top-level-await - .finally(async () => { - const config = await Config.load(process.cwd()) - await Promise.all([ - // fs.remove(config.cacheDir), - rm(config.configDir, {force: true, recursive: true}), - rm(config.dataDir, {force: true, recursive: true}), - ]) - }) - -export * as Fancy from '@oclif/test' - -export {expect} from 'fancy-test' diff --git a/yarn.lock b/yarn.lock index 0e2d1b25..cafb27c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -651,7 +651,7 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/core@^3.0.0-beta.19", "@oclif/core@^3.0.4", "@oclif/core@^3.2.1", "@oclif/core@^3.3.2": +"@oclif/core@^3.0.4", "@oclif/core@^3.2.1", "@oclif/core@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.3.2.tgz#1244aa19313681000881d97dd0e956a4ed48daa5" integrity sha512-8bZa42d86t5BayJUENKqZN6c5CnX0n3j+JyCWmqI5PP7VsRWZl4YSXFoLFw+mZXKtvwAMrgzMxSGltm5iIXT7w== @@ -722,15 +722,6 @@ resolved "https://registry.yarnpkg.com/@oclif/prettier-config/-/prettier-config-0.2.1.tgz#1def9f38134f9bfb229257f48a35f7d0d183dc78" integrity sha512-XB8kwQj8zynXjIIWRm+6gO/r8Qft2xKtwBMSmq1JRqtA6TpwpqECqiu8LosBCyg2JBXuUy2lU23/L98KIR7FrQ== -"@oclif/test@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@oclif/test/-/test-3.0.2.tgz#aab9443a1eeb8d996d28020344e6abf7f82c688e" - integrity sha512-zTLHSQ1A/9jrzW+jrX9qc1B1pyihtxO+87oW/5lHnNnztvEnmfdcxVKe8CYobpNiSJtAQMBY5BTxgvm9eaZD5Q== - dependencies: - "@oclif/core" "^3.0.0-beta.19" - chai "^4.3.10" - fancy-test "^3.0.1" - "@octokit/auth-token@^2.4.4": version "2.5.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" @@ -966,7 +957,7 @@ "@types/node" "*" "@types/responselike" "^1.0.0" -"@types/chai@*", "@types/chai@^4.3.6": +"@types/chai@^4.3.6": version "4.3.8" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.8.tgz#aa200a264a3bc78ccfc1718eedbd3b9d5a591270" integrity sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA== @@ -1028,11 +1019,6 @@ dependencies: "@types/node" "*" -"@types/lodash@*": - version "4.14.199" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" - integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== - "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -1105,7 +1091,7 @@ "@types/glob" "~7.2.0" "@types/node" "*" -"@types/sinon@*": +"@types/sinon@^10.0.19": version "10.0.19" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.19.tgz#752b752bc40bb5af0bb1aec29bde49b139b91d35" integrity sha512-MWZNGPSchIdDfb5FL+VFi4zHsHbNOTQEgjqFQk7HazXSXwUU9PAX3z9XBqb3AJGYr9YwrtCtaSMsT3brYsN/jQ== @@ -2897,21 +2883,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -fancy-test@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-3.0.1.tgz#8b19ed4ccc8b0625475eabf36fd743e1d0168abb" - integrity sha512-Ke1IFOGEBxP2dNg0X7ZYPUSwKSRr5GNn3xM/2DpHkP86riF3MFDpesXJuD1TGm7gcfwBtYpuSzuw3m704bThVg== - dependencies: - "@types/chai" "*" - "@types/lodash" "*" - "@types/node" "*" - "@types/sinon" "*" - lodash "^4.17.13" - mock-stdin "^1.0.0" - nock "^13.3.3" - sinon "^16.0.0" - stdout-stderr "^0.1.9" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -3359,7 +3330,7 @@ got@^11: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4285,17 +4256,6 @@ listr2@7.0.1: rfdc "^1.3.0" wrap-ansi "^8.1.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-yaml-file@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" @@ -4395,7 +4355,7 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.21: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4805,11 +4765,6 @@ mocha@^10.2.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -mock-stdin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mock-stdin/-/mock-stdin-1.0.0.tgz#efcfaf4b18077e14541742fd758b9cae4e5365ea" - integrity sha512-tukRdb9Beu27t6dN+XztSRHq9J0B/CoAOySGzHfn8UTfmqipA5yNT/sDUEyYdAV3Hpka6Wx6kOMxuObdOex60Q== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -6253,7 +6208,7 @@ sigstore@^1.3.0, sigstore@^1.4.0, sigstore@^1.7.0: "@sigstore/tuf" "^1.0.3" make-fetch-happen "^11.0.1" -sinon@^16.0.0: +sinon@^16.1.0: version "16.1.0" resolved "https://registry.yarnpkg.com/sinon/-/sinon-16.1.0.tgz#645b836563c9bedb21defdbe48831cb2afb687f2" integrity sha512-ZSgzF0vwmoa8pq0GEynqfdnpEDyP1PkYmEChnkjW0Vyh8IDlyFEJ+fkMhCP0il6d5cJjPl2PUsnUSAuP5sttOQ== @@ -6392,14 +6347,6 @@ ssri@^9.0.0: dependencies: minipass "^3.1.1" -stdout-stderr@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.13.tgz#54e3450f3d4c54086a49c0c7f8786a44d1844b6f" - integrity sha512-Xnt9/HHHYfjZ7NeQLvuQDyL1LnbsbddgMFKCuaQKwGCdJm8LnstZIXop+uOY36UR1UXXoHXfMbC1KlVdVd2JLA== - dependencies: - debug "^4.1.1" - strip-ansi "^6.0.0" - string-argv@0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" @@ -6731,11 +6678,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -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.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" From 37743d469ddd378e26a8ba788a46ee2e652abbe5 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Tue, 17 Oct 2023 14:46:15 -0600 Subject: [PATCH 04/39] test: link tests --- .github/workflows/test.yml | 3 +- package.json | 1 + test/integration/link.integration.ts | 82 ++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 test/integration/link.integration.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 564f5cfa..ce5d0f56 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] + test: ['test:integration:install', 'test:integration:link'] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v3 @@ -40,7 +41,7 @@ jobs: - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main - run: yarn build - name: Run tests - run: yarn test:integration:install + run: yarn ${{matrix.test}} unit-tests: uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main diff --git a/package.json b/package.json index 9a404238..380af55e 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "test:integration": "mocha \"test/**/*.integration.ts\"", "test:integration:sf": "mocha \"test/**/sf.integration.ts\"", "test:integration:install": "mocha \"test/**/install.integration.ts\"", + "test:integration:link": "mocha \"test/**/link.integration.ts\"", "version": "oclif readme && git add README.md" }, "type": "module", diff --git a/test/integration/link.integration.ts b/test/integration/link.integration.ts new file mode 100644 index 00000000..8c5df48d --- /dev/null +++ b/test/integration/link.integration.ts @@ -0,0 +1,82 @@ +import {ux} from '@oclif/core' +import {expect} from 'chai' +import {exec as cpExec} from 'node:child_process' +import {rm} from 'node:fs/promises' +import {tmpdir} from 'node:os' +import {join} from 'node:path' +import {SinonSandbox, createSandbox} from 'sinon' + +import PluginsIndex from '../../src/commands/plugins/index.js' +import PluginsLink from '../../src/commands/plugins/link.js' +import PluginsUninstall from '../../src/commands/plugins/uninstall.js' + +async function exec(cmd: string, opts?: {cwd?: string}) { + return new Promise((resolve, reject) => { + cpExec(cmd, opts, (err, stdout, stderr) => { + if (err) return reject(err) + resolve({code: 0, stderr, stdout}) + }) + }) +} + +describe('link/unlink integration tests', () => { + let sandbox: SinonSandbox + let stubs: ReturnType + + const cacheDir = join(tmpdir(), 'plugin-plugins-tests', 'cache') + const configDir = join(tmpdir(), 'plugin-plugins-tests', 'config') + const dataDir = join(tmpdir(), 'plugin-plugins-tests', 'data') + const pluginDir = join(tmpdir(), 'plugin-plugins-tests', 'plugin') + const repo = 'https://github.com/oclif/plugin-test-esm-1.git' + + before(async () => { + try { + await Promise.all([ + rm(cacheDir, {force: true, recursive: true}), + rm(configDir, {force: true, recursive: true}), + rm(dataDir, {force: true, recursive: true}), + rm(pluginDir, {force: true, recursive: true}), + ]) + } catch {} + + await exec(`git clone ${repo} ${pluginDir} --depth 1`) + await exec('yarn', {cwd: pluginDir}) + await exec('yarn build', {cwd: pluginDir}) + }) + + beforeEach(() => { + sandbox = createSandbox() + stubs = ux.makeStubs(sandbox) + process.env.MYCLI_CACHE_DIR = cacheDir + process.env.MYCLI_CONFIG_DIR = configDir + process.env.MYCLI_DATA_DIR = dataDir + }) + + afterEach(() => { + sandbox.restore() + + delete process.env.MYCLI_CACHE_DIR + delete process.env.MYCLI_CONFIG_DIR + delete process.env.MYCLI_DATA_DIR + }) + + it('should return "No Plugins" if no plugins are linked', async () => { + await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + }) + + it('should link plugin', async () => { + await PluginsLink.run([pluginDir, '--no-install'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + }) + + it('should unlink plugin', async () => { + await PluginsUninstall.run([pluginDir], process.cwd()) + + await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + }) +}) From f635621f1f8cf6e2493a6751938b6b9daf6ecea3 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Tue, 17 Oct 2023 14:48:12 -0600 Subject: [PATCH 05/39] chore: valid test workflow --- .github/workflows/test.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ce5d0f56..1c680f1e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,21 +27,21 @@ jobs: - name: Run tests run: yarn test:integration:sf - integration-tests: - strategy: - matrix: - os: [ubuntu-latest, windows-latest] - test: ['test:integration:install', 'test:integration:link'] - runs-on: ${{matrix.os}} - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: lts/* - - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main - - run: yarn build - - name: Run tests - run: yarn ${{matrix.test}} + integration-tests: + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + test: ['test:integration:install', 'test:integration:link'] + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: lts/* + - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main + - run: yarn build + - name: Run tests + run: yarn ${{matrix.test}} unit-tests: uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main From 88e9d021ad34128bc97bf8b6881739543aca99c7 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 09:20:47 -0600 Subject: [PATCH 06/39] feat: compile github-installed plugins --- src/plugins.ts | 9 +++++ test/integration/install.integration.ts | 54 ++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/plugins.ts b/src/plugins.ts index 105e09ca..2ae2a559 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -99,6 +99,15 @@ export default class Plugins { this.isValidPlugin(plugin) await this.add({name, type: 'user', url}) + + try { + // CJS plugins can be auto-transpiled at runtime but ESM plugins + // cannot. To support ESM plugins we need to compile them after + // installing them. + await this.yarn.exec(['run', 'tsc'], {cwd: plugin.root, verbose: this.verbose}) + } catch (error) { + this.debug(error) + } } else { // npm const range = validRange(tag) diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index 13521ac0..e778b9e8 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -1,6 +1,7 @@ import {ux} from '@oclif/core' import {CLIError} from '@oclif/core/lib/errors/index.js' import {expect} from 'chai' +import {existsSync} from 'node:fs' import {rm} from 'node:fs/promises' import {tmpdir} from 'node:os' import {join} from 'node:path' @@ -103,13 +104,62 @@ describe('install/uninstall integration tests', () => { }) }) - describe('github', () => { - it('should install plugin from github', async () => { + describe('github org/repo', () => { + it('should install plugin from github org/repo', async () => { await PluginsInstall.run(['oclif/plugin-test-esm-1'], process.cwd()) const result = await PluginsIndex.run([], process.cwd()) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + + // test that the plugin was compiled after install (only applies to github installs) + const compiledDir = join(dataDir, 'node_modules', '@oclif', 'plugin-test-esm-1', 'dist') + expect(existsSync(compiledDir)).to.be.true + }) + + it('should uninstall plugin from github', async () => { + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) + + describe('github url', () => { + it('should install plugin from github url', async () => { + await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + + // test that the plugin was compiled after install (only applies to github installs) + const compiledDir = join(dataDir, 'node_modules', '@oclif', 'plugin-test-esm-1', 'dist') + expect(existsSync(compiledDir)).to.be.true + }) + + it('should uninstall plugin from github', async () => { + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false + }) + }) + + describe('github tagged url', () => { + it('should install plugin from github tagged url', async () => { + await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git#0.5.4'], process.cwd()) + + const result = await PluginsIndex.run([], process.cwd()) + expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stubs.stdout.firstCall.firstArg).to.include('0.5.4') + expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true + + // test that the plugin was compiled after install (only applies to github installs) + const compiledDir = join(dataDir, 'node_modules', '@oclif', 'plugin-test-esm-1', 'dist') + expect(existsSync(compiledDir)).to.be.true }) it('should uninstall plugin from github', async () => { From ec52b94658e6c18d80a640c4ff4a1a6581893ca6 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 11:41:00 -0600 Subject: [PATCH 07/39] chore: remove unused dep --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 380af55e..57bb1f29 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "@oclif/core": "^3.3.2", "chalk": "^5.3.0", "debug": "^4.3.4", - "http-call": "^5.2.2", "npm": "9.8.1", "npm-run-path": "^4.0.1", "semver": "^7.5.4", From 699e926fde5f7144cf17a07c6fe8d5138fa10db8 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 12:03:45 -0600 Subject: [PATCH 08/39] feat: add env var for yarn --network-timeout --- README.md | 29 +++++++++++++++-------------- src/yarn.ts | 12 ++++++------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index f1fe6ae0..fb8fe088 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,20 @@ plugins plugin for oclif +- [@oclif/plugin-plugins](#oclifplugin-plugins) - [What is this?](#what-is-this) - [Usage](#usage) - [Friendly names](#friendly-names) - [Aliases](#aliases) +- [Environment Variables](#environment-variables) - [Commands](#commands) - + - [`mycli plugins`](#mycli-plugins) + - [`mycli plugins:inspect PLUGIN...`](#mycli-pluginsinspect-plugin) + - [`mycli plugins:install PLUGIN...`](#mycli-pluginsinstall-plugin) + - [`mycli plugins:link PLUGIN`](#mycli-pluginslink-plugin) + - [`mycli plugins:uninstall PLUGIN...`](#mycli-pluginsuninstall-plugin) + - [`mycli plugins:update`](#mycli-pluginsupdate) + # What is this? @@ -76,23 +84,16 @@ For removing plugins that are no longer needed (either because they're sunset or `old-name-plugin` will be autoremoved on the next update and will not be able to be installed with `mycli plugins:install old-name-plugin`. +# Environment Variables + +`_USE_NETWORK_MUTEX` if true, use the `--mutex=network` option on yarn operations +`_NETWORK_MUTEX_PORT` specify the port for the `mutex=network` option, depends on `_USE_NETWORK_MUTEX` +`_NETWORK_TIMEOUT` specify the `--network-timeout` option on yarn operation (set in milliseconds) + # Commands -- [@oclif/plugin-plugins](#oclifplugin-plugins) -- [What is this?](#what-is-this) -- [Usage](#usage) -- [Friendly names](#friendly-names) -- [Aliases](#aliases) -- [Commands](#commands) - - [`mycli plugins`](#mycli-plugins) - - [`mycli plugins:inspect PLUGIN...`](#mycli-pluginsinspect-plugin) - - [`mycli plugins:install PLUGIN...`](#mycli-pluginsinstall-plugin) - - [`mycli plugins:link PLUGIN`](#mycli-pluginslink-plugin) - - [`mycli plugins:uninstall PLUGIN...`](#mycli-pluginsuninstall-plugin) - - [`mycli plugins:update`](#mycli-pluginsupdate) - ## `mycli plugins` List installed plugins. diff --git a/src/yarn.ts b/src/yarn.ts index c3868308..f60aeba2 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -32,13 +32,13 @@ export default class Yarn { : `file:${path.join(cwd, 'yarn.lock')}` const cacheDir = path.join(this.config.cacheDir, 'yarn') args = [...args, '--non-interactive', `--mutex=${mutex}`, `--preferred-cache-folder=${cacheDir}`, '--check-files'] - if (verbose) { - args.push('--verbose') - } - if (this.config.npmRegistry) { - args.push(`--registry=${this.config.npmRegistry}`) - } + const networkTimeout = this.config.scopedEnvVar('NETWORK_TIMEOUT') + if (networkTimeout) args.push(`--network-timeout=${networkTimeout}`) + + if (verbose) args.push('--verbose') + + if (this.config.npmRegistry) args.push(`--registry=${this.config.npmRegistry}`) } const npmRunPath: typeof NpmRunPath = require('npm-run-path') From dbdb4df907ae00952cdc9d9f4d06bfe016be0cf1 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 12:16:57 -0600 Subject: [PATCH 09/39] feat: add --silent flag to install --- src/commands/plugins/install.ts | 14 ++++++++++++-- src/plugins.ts | 10 +++++++--- src/yarn.ts | 11 +++++++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/commands/plugins/install.ts b/src/commands/plugins/install.ts index cb753b75..edb9e4b0 100644 --- a/src/commands/plugins/install.ts +++ b/src/commands/plugins/install.ts @@ -59,7 +59,16 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins return input }, }), - verbose: Flags.boolean({char: 'v'}), + silent: Flags.boolean({ + char: 's', + description: 'Silences yarn output.', + exclusive: ['verbose'], + }), + verbose: Flags.boolean({ + char: 'v', + description: 'Show verbose yarn output.', + exclusive: ['silent'], + }), } static strict = false @@ -124,7 +133,8 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins async run(): Promise { const {argv, flags} = await this.parse(PluginsInstall) this.flags = flags - if (flags.verbose) this.plugins.verbose = true + if (flags.verbose && !flags.silent) this.plugins.verbose = true + if (flags.silent && !flags.verbose) this.plugins.silent = true const aliases = this.config.pjson.oclif.aliases || {} for (let name of argv as string[]) { if (aliases[name] === null) this.error(`${name} is blocked`) diff --git a/src/plugins.ts b/src/plugins.ts index 2ae2a559..7fe80e5d 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -33,6 +33,7 @@ async function fileExists(filePath: string): Promise { } export default class Plugins { + silent = false verbose = false readonly yarn: Yarn @@ -78,7 +79,7 @@ export default class Plugins { async install(name: string, {force = false, tag = 'latest'} = {}): Promise { try { this.debug(`installing plugin ${name}`) - const yarnOpts = {cwd: this.config.dataDir, verbose: this.verbose} + const yarnOpts = {cwd: this.config.dataDir, silent: this.silent, verbose: this.verbose} await this.createPJSON() let plugin const add = force ? ['add', '--force'] : ['add'] @@ -104,7 +105,7 @@ export default class Plugins { // CJS plugins can be auto-transpiled at runtime but ESM plugins // cannot. To support ESM plugins we need to compile them after // installing them. - await this.yarn.exec(['run', 'tsc'], {cwd: plugin.root, verbose: this.verbose}) + await this.yarn.exec(['run', 'tsc'], {...yarnOpts, cwd: plugin.root}) } catch (error) { this.debug(error) } @@ -210,6 +211,7 @@ export default class Plugins { const doRefresh = async (root: string) => { await this.yarn.exec(options.prod ? ['--prod'] : [], { cwd: root, + silent: this.silent, verbose: this.verbose, }) } @@ -265,6 +267,7 @@ export default class Plugins { if ((pjson.oclif.plugins ?? []).some((p) => typeof p === 'object' && p.type === 'user' && p.name === name)) { await this.yarn.exec(['remove', name], { cwd: this.config.dataDir, + silent: this.silent, verbose: this.verbose, }) } @@ -296,6 +299,7 @@ export default class Plugins { if (plugins.some((p) => Boolean(p.url))) { await this.yarn.exec(['upgrade'], { cwd: this.config.dataDir, + silent: this.silent, verbose: this.verbose, }) } @@ -323,7 +327,7 @@ export default class Plugins { return `${p.name}@${tag}` }), ], - {cwd: this.config.dataDir, verbose: this.verbose}, + {cwd: this.config.dataDir, silent: this.silent, verbose: this.verbose}, ) } diff --git a/src/yarn.ts b/src/yarn.ts index f60aeba2..cf76afe2 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -20,8 +20,8 @@ export default class Yarn { return require.resolve('yarn/bin/yarn.js') } - async exec(args: string[] = [], opts: {cwd: string; verbose: boolean}): Promise { - const {cwd, verbose} = opts + async exec(args: string[] = [], opts: {cwd: string; silent: boolean; verbose: boolean}): Promise { + const {cwd, silent, verbose} = opts if (args[0] !== 'run') { // https://classic.yarnpkg.com/lang/en/docs/cli/#toc-concurrency-and-mutex // Default port is: 31997 @@ -36,7 +36,8 @@ export default class Yarn { const networkTimeout = this.config.scopedEnvVar('NETWORK_TIMEOUT') if (networkTimeout) args.push(`--network-timeout=${networkTimeout}`) - if (verbose) args.push('--verbose') + if (verbose && !silent) args.push('--verbose') + if (silent && !verbose) args.push('--silent') if (this.config.npmRegistry) args.push(`--registry=${this.config.npmRegistry}`) } @@ -82,7 +83,9 @@ export default class Yarn { fork(modulePath: string, args: string[] = [], options: Record = {}): Promise { return new Promise((resolve, reject) => { const forked = fork(modulePath, args, options) - forked.stderr?.on('data', (d) => process.stderr.write(d)) + forked.stderr?.on('data', (d) => { + if (!options.silent) process.stderr.write(d) + }) forked.stdout?.setEncoding('utf8') forked.stdout?.on('data', (d) => { if (options.verbose) process.stdout.write(d) From a071ef1037e3b518c61f68c94f1a88eef67132c8 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 13:29:32 -0600 Subject: [PATCH 10/39] feat: configurable pluginPrefix --- src/plugins.ts | 8 ++++---- test/plugins.test.ts | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/plugins.ts b/src/plugins.ts index 7fe80e5d..98778de0 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -58,9 +58,9 @@ export default class Plugins { } friendlyName(name: string): string { - const {scope} = this.config.pjson.oclif + const {pluginPrefix, scope} = this.config.pjson.oclif if (!scope) return name - const match = name.match(`@${scope}/plugin-(.+)`) + const match = name.match(`@${scope}/${pluginPrefix ?? 'plugin'}-(.+)`) if (!match) return name return match[1] } @@ -256,9 +256,9 @@ export default class Plugins { unfriendlyName(name: string): string | undefined { if (name.includes('@')) return - const {scope} = this.config.pjson.oclif + const {pluginPrefix, scope} = this.config.pjson.oclif if (!scope) return - return `@${scope}/plugin-${name}` + return `@${scope}/${pluginPrefix ?? 'plugin'}-${name}` } async uninstall(name: string): Promise { diff --git a/test/plugins.test.ts b/test/plugins.test.ts index 587203b2..c329db2c 100644 --- a/test/plugins.test.ts +++ b/test/plugins.test.ts @@ -35,6 +35,10 @@ describe('Plugins', () => { beforeEach(async () => { sandbox = createSandbox() config = await Config.load(process.cwd()) + config.pjson.oclif = { + ...config.pjson.oclif, + pluginPrefix: undefined, + } plugins = new Plugins(config) // @ts-expect-error because savePJSON is private saveStub = sandbox.stub(plugins, 'savePJSON').resolves() @@ -85,6 +89,11 @@ describe('Plugins', () => { sandbox.stub(config.pjson.oclif, 'scope').value(null) expect(plugins.friendlyName(linkedPlugin.name)).to.equal('@oclif/plugin-linked') }) + + it('should return friendly name for plugin when pluginPrefix is defined', () => { + sandbox.stub(config.pjson.oclif, 'pluginPrefix').value('foo') + expect(plugins.friendlyName('@oclif/foo-bar')).to.equal('bar') + }) }) describe('unfriendlyName', () => { @@ -100,6 +109,11 @@ describe('Plugins', () => { sandbox.stub(config.pjson.oclif, 'scope').value(null) expect(plugins.unfriendlyName(linkedPlugin.name)).to.be.undefined }) + + it('should return full name when pluginPrefix is defined', () => { + sandbox.stub(config.pjson.oclif, 'pluginPrefix').value('foo') + expect(plugins.unfriendlyName('bar')).to.equal('@oclif/foo-bar') + }) }) describe('maybeUnfriendlyName', () => { From ab8f9cd99c885db7195def99bc261ca4551611a4 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 13:31:30 -0600 Subject: [PATCH 11/39] test: clean up --- test/integration/install.integration.ts | 74 +++++++++++++------------ test/integration/link.integration.ts | 11 ++-- 2 files changed, 44 insertions(+), 41 deletions(-) diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index e778b9e8..b06a3b46 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -19,6 +19,8 @@ describe('install/uninstall integration tests', () => { const configDir = join(tmpdir(), 'plugin-plugins-tests', 'config') const dataDir = join(tmpdir(), 'plugin-plugins-tests', 'data') + const cwd = process.cwd() + before(async () => { try { await Promise.all([ @@ -47,22 +49,22 @@ describe('install/uninstall integration tests', () => { describe('basic', () => { it('should return "No Plugins" if no plugins are installed', async () => { - await PluginsIndex.run([], process.cwd()) + await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') }) it('should install plugin', async () => { - await PluginsInstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + await PluginsInstall.run(['@oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) it('should uninstall plugin', async () => { - await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) @@ -70,17 +72,17 @@ describe('install/uninstall integration tests', () => { describe('tagged', () => { it('should install plugin from a tag', async () => { - await PluginsInstall.run(['@oclif/plugin-test-esm-1@latest'], process.cwd()) + await PluginsInstall.run(['@oclif/plugin-test-esm-1@latest'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) it('should uninstall plugin', async () => { - await PluginsUninstall.run(['@oclif/plugin-test-esm-1@latest'], process.cwd()) + await PluginsUninstall.run(['@oclif/plugin-test-esm-1@latest'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) @@ -88,17 +90,17 @@ describe('install/uninstall integration tests', () => { describe('alias', () => { it('should install aliased plugin', async () => { - await PluginsInstall.run(['aliasme'], process.cwd()) + await PluginsInstall.run(['aliasme'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) it('should uninstall aliased plugin', async () => { - await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) @@ -106,9 +108,9 @@ describe('install/uninstall integration tests', () => { describe('github org/repo', () => { it('should install plugin from github org/repo', async () => { - await PluginsInstall.run(['oclif/plugin-test-esm-1'], process.cwd()) + await PluginsInstall.run(['oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true @@ -118,9 +120,9 @@ describe('install/uninstall integration tests', () => { }) it('should uninstall plugin from github', async () => { - await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) @@ -128,9 +130,9 @@ describe('install/uninstall integration tests', () => { describe('github url', () => { it('should install plugin from github url', async () => { - await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git'], process.cwd()) + await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true @@ -140,9 +142,9 @@ describe('install/uninstall integration tests', () => { }) it('should uninstall plugin from github', async () => { - await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) @@ -150,9 +152,9 @@ describe('install/uninstall integration tests', () => { describe('github tagged url', () => { it('should install plugin from github tagged url', async () => { - await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git#0.5.4'], process.cwd()) + await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git#0.5.4'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(stubs.stdout.firstCall.firstArg).to.include('0.5.4') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true @@ -163,9 +165,9 @@ describe('install/uninstall integration tests', () => { }) it('should uninstall plugin from github', async () => { - await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], process.cwd()) + await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) @@ -173,17 +175,17 @@ describe('install/uninstall integration tests', () => { describe('oclif.lock', () => { it('should install plugin with oclif.lock', async () => { - await PluginsInstall.run(['@salesforce/plugin-custom-metadata'], process.cwd()) + await PluginsInstall.run(['@salesforce/plugin-custom-metadata'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('@salesforce/plugin-custom-metadata') expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.true }) it('should uninstall plugin with oclif.lock', async () => { - await PluginsUninstall.run(['@salesforce/plugin-custom-metadata'], process.cwd()) + await PluginsUninstall.run(['@salesforce/plugin-custom-metadata'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.false }) @@ -192,17 +194,17 @@ describe('install/uninstall integration tests', () => { describe('non-existent plugin', () => { it('should not install non-existent plugin', async () => { try { - await PluginsInstall.run(['@oclif/DOES_NOT_EXIST'], process.cwd()) + await PluginsInstall.run(['@oclif/DOES_NOT_EXIST'], cwd) } catch {} - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/DOES_NOT_EXIST')).to.be.false }) it('should handle uninstalling a non-existent plugin', async () => { try { - await PluginsUninstall.run(['@oclif/DOES_NOT_EXIST'], process.cwd()) + await PluginsUninstall.run(['@oclif/DOES_NOT_EXIST'], cwd) } catch (error) { const err = error as CLIError expect(err.message).to.equal('@oclif/DOES_NOT_EXIST is not installed') @@ -212,17 +214,17 @@ describe('install/uninstall integration tests', () => { describe('scoped plugin', () => { it('should install scoped plugin', async () => { - await PluginsInstall.run(['test-esm-1'], process.cwd()) + await PluginsInstall.run(['test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) it('should uninstall scoped plugin', async () => { - await PluginsUninstall.run(['test-esm-1'], process.cwd()) + await PluginsUninstall.run(['test-esm-1'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) diff --git a/test/integration/link.integration.ts b/test/integration/link.integration.ts index 8c5df48d..169bf26d 100644 --- a/test/integration/link.integration.ts +++ b/test/integration/link.integration.ts @@ -28,6 +28,7 @@ describe('link/unlink integration tests', () => { const dataDir = join(tmpdir(), 'plugin-plugins-tests', 'data') const pluginDir = join(tmpdir(), 'plugin-plugins-tests', 'plugin') const repo = 'https://github.com/oclif/plugin-test-esm-1.git' + const cwd = process.cwd() before(async () => { try { @@ -61,22 +62,22 @@ describe('link/unlink integration tests', () => { }) it('should return "No Plugins" if no plugins are linked', async () => { - await PluginsIndex.run([], process.cwd()) + await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') }) it('should link plugin', async () => { - await PluginsLink.run([pluginDir, '--no-install'], process.cwd()) + await PluginsLink.run([pluginDir, '--no-install'], cwd) - const result = await PluginsIndex.run([], process.cwd()) + const result = await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) it('should unlink plugin', async () => { - await PluginsUninstall.run([pluginDir], process.cwd()) + await PluginsUninstall.run([pluginDir], cwd) - await PluginsIndex.run([], process.cwd()) + await PluginsIndex.run([], cwd) expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') }) }) From 59f9a980c3236172e75e4331a10071e28380f8ed Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 18 Oct 2023 14:52:44 -0600 Subject: [PATCH 12/39] chore: code review --- .github/workflows/automerge.yml | 2 +- .github/workflows/test.yml | 2 +- src/commands/plugins/inspect.ts | 26 ++++++--------- src/commands/plugins/uninstall.ts | 42 ++++++++++++------------- src/hooks/update.ts | 5 +-- src/plugins.ts | 7 ++--- src/util.ts | 22 ++++++------- src/yarn.ts | 5 --- test/integration/install.integration.ts | 40 +++++++++++------------ 9 files changed, 69 insertions(+), 82 deletions(-) diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 46b964f7..10640316 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -2,7 +2,7 @@ name: automerge on: workflow_dispatch: schedule: - - cron: '42 2,5,8,11 * * *' + - cron: '12 2,5,8,11 * * *' jobs: automerge: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1c680f1e..3585e055 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: with: max_attempts: 3 retry_wait_seconds: 60 - command: npm install -g @salesforce/cli@$nightly --omit=dev + command: npm install -g @salesforce/cli@nightly --omit=dev timeout_minutes: 60 - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main - run: yarn build diff --git a/src/commands/plugins/inspect.ts b/src/commands/plugins/inspect.ts index 4a206cf1..2cdfd45e 100644 --- a/src/commands/plugins/inspect.ts +++ b/src/commands/plugins/inspect.ts @@ -9,7 +9,10 @@ import {sortBy} from '../../util.js' function trimUntil(fsPath: string, part: string): string { const parts = fsPath.split(path.sep) // eslint-disable-next-line unicorn/no-array-reduce - const indices = parts.reduce((a, e, i) => (e === part ? [...a, i] : a), [] as number[]) + const indices = parts.reduce( + (result, current, index) => (current === part ? [...result, index] : result), + [], + ) const partIndex = Math.max(...indices) if (partIndex === -1) return fsPath return parts.slice(0, partIndex + 1).join(path.sep) @@ -50,7 +53,7 @@ export default class PluginsInspect extends Command { const dependencyPath = path.join(...dependency.split('/')) let start = path.join(plugin.root, 'node_modules') const paths = [start] - while ((start.match(/node_modules/g) || []).length > 1) { + while ((start.match(/node_modules/g) ?? []).length > 1) { start = trimUntil(path.dirname(start), 'node_modules') paths.push(start) } @@ -122,23 +125,11 @@ export default class PluginsInspect extends Command { return {...plugin, deps: depsJson} as PluginWithDeps } - async parsePluginName(input: string): Promise { - if (input.includes('@') && input.includes('/')) { - input = input.slice(1) - const [name] = input.split('@') - return '@' + name - } - - const [splitName] = input.split('@') - const name = await this.plugins.maybeUnfriendlyName(splitName) - return name - } - /* eslint-disable no-await-in-loop */ async run(): Promise { const {argv, flags} = await this.parse(PluginsInspect) if (flags.verbose) this.plugins.verbose = true - const aliases = this.config.pjson.oclif.aliases || {} + const aliases = this.config.pjson.oclif.aliases ?? {} const plugins: PluginWithDeps[] = [] for (let name of argv as string[]) { if (name === '.') { @@ -147,8 +138,9 @@ export default class PluginsInspect extends Command { } if (aliases[name] === null) this.error(`${name} is blocked`) - name = aliases[name] || name - const pluginName = await this.parsePluginName(name) + name = aliases[name] ?? name + const pluginName = (await this.plugins.maybeUnfriendlyName(name)) ?? name + console.log(name, pluginName) try { plugins.push(await this.inspect(pluginName, flags.verbose)) diff --git a/src/commands/plugins/uninstall.ts b/src/commands/plugins/uninstall.ts index 6d3ce52a..31a1ceba 100644 --- a/src/commands/plugins/uninstall.ts +++ b/src/commands/plugins/uninstall.ts @@ -1,9 +1,24 @@ /* eslint-disable no-await-in-loop */ -import {Args, Command, Flags, Interfaces, Plugin, ux} from '@oclif/core' +import {Args, Command, Flags, ux} from '@oclif/core' import chalk from 'chalk' import Plugins from '../../plugins.js' +function removeTags(plugin: string): string { + if (plugin.includes('@')) { + const chunked = plugin.split('@') + const last = chunked.at(-1) + + if (!last?.includes('/') && chunked.length > 1) { + chunked.pop() + } + + return chunked.join('@') + } + + return plugin +} + export default class PluginsUninstall extends Command { static aliases = ['plugins:unlink', 'plugins:remove'] @@ -37,12 +52,12 @@ export default class PluginsUninstall extends Command { if (flags.verbose) this.plugins.verbose = true if (argv.length === 0) argv.push('.') for (const plugin of argv as string[]) { - const friendly = this.removeTags(this.plugins.friendlyName(plugin)) + const friendly = removeTags(this.plugins.friendlyName(plugin)) ux.action.start(`Uninstalling ${friendly}`) - const unfriendly = await this.plugins.hasPlugin(this.removeTags(plugin)) + const unfriendly = await this.plugins.hasPlugin(removeTags(plugin)) if (!unfriendly) { - const p = this.config.getPluginsList().find((p) => p.name === plugin) as Plugin | undefined - if (p && p && p.parent) + const p = this.config.getPluginsList().find((p) => p.name === plugin) + if (p?.parent) return this.error( `${friendly} is installed via plugin ${p.parent!.name}, uninstall ${p.parent!.name} instead`, ) @@ -51,7 +66,7 @@ export default class PluginsUninstall extends Command { } try { - const {name} = unfriendly as Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.User + const {name} = unfriendly await this.plugins.uninstall(name) } catch (error) { ux.action.stop(chalk.bold.red('failed')) @@ -61,19 +76,4 @@ export default class PluginsUninstall extends Command { ux.action.stop() } } - - private removeTags(plugin: string) { - if (plugin.includes('@')) { - const chunked = plugin.split('@') - const last = chunked.at(-1) - - if (!last?.includes('/') && chunked.length > 1) { - chunked.pop() - } - - return chunked.join('@') - } - - return plugin - } } diff --git a/src/hooks/update.ts b/src/hooks/update.ts index d832cdd6..c1c6ae6d 100644 --- a/src/hooks/update.ts +++ b/src/hooks/update.ts @@ -7,7 +7,8 @@ export const update: Hook<'update'> = async function () { try { await plugins.update() } catch (error: unknown) { - const {message} = error as {message: string} - this.error(message) + if (error instanceof Error) { + this.error(error.message) + } } } diff --git a/src/plugins.ts b/src/plugins.ts index 98778de0..91b4fbb5 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -61,11 +61,10 @@ export default class Plugins { const {pluginPrefix, scope} = this.config.pjson.oclif if (!scope) return name const match = name.match(`@${scope}/${pluginPrefix ?? 'plugin'}-(.+)`) - if (!match) return name - return match[1] + return match?.[1] ?? name } - async hasPlugin(name: string): Promise { + async hasPlugin(name: string): Promise { const list = await this.list() const friendly = list.find((p) => this.friendlyName(p.name) === this.friendlyName(name)) const unfriendly = list.find((p) => this.unfriendlyName(p.name) === this.unfriendlyName(name)) @@ -73,7 +72,7 @@ export default class Plugins { return (friendly ?? unfriendly ?? link ?? false) as | Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.User - | boolean + | false } async install(name: string, {force = false, tag = 'latest'} = {}): Promise { diff --git a/src/util.ts b/src/util.ts index 723730fe..9c6a9046 100644 --- a/src/util.ts +++ b/src/util.ts @@ -4,25 +4,25 @@ import {createRequire} from 'node:module' import {type} from 'node:os' import * as path from 'node:path' -type Types = boolean | number | string | undefined +type CompareTypes = boolean | number | string | undefined -function compare(a: Types | Types[], b: Types | Types[]): number { - a = a === undefined ? 0 : a - b = b === undefined ? 0 : b +function compare(a: CompareTypes | CompareTypes[], b: CompareTypes | CompareTypes[]): number { + const itemA = a === undefined ? 0 : a + const itemB = b === undefined ? 0 : b - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length === 0 && b.length === 0) return 0 - const diff = compare(a[0], b[0]) + if (Array.isArray(itemA) && Array.isArray(itemB)) { + if (itemA.length === 0 && itemB.length === 0) return 0 + const diff = compare(itemA[0], itemB[0]) if (diff !== 0) return diff - return compare(a.slice(1), b.slice(1)) + return compare(itemA.slice(1), itemB.slice(1)) } - if (a < b) return -1 - if (a > b) return 1 + if (itemA < itemB) return -1 + if (itemA > itemB) return 1 return 0 } -export function sortBy(arr: T[], fn: (i: T) => Types | Types[]): T[] { +export function sortBy(arr: T[], fn: (i: T) => CompareTypes | CompareTypes[]): T[] { return arr.sort((a, b) => compare(fn(a), fn(b))) } diff --git a/src/yarn.ts b/src/yarn.ts index cf76afe2..47e3a9bd 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -100,11 +100,6 @@ export default class Yarn { reject(new Error(`${modulePath} ${args.join(' ')} exited with code ${code}`)) } }) - - // Fix windows bug with node-gyp hanging for input forever - // if (this.config.windows) { - // forked.stdin.write('\n') - // } }) } } diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index b06a3b46..c42065f3 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -5,7 +5,7 @@ import {existsSync} from 'node:fs' import {rm} from 'node:fs/promises' import {tmpdir} from 'node:os' import {join} from 'node:path' -import {SinonSandbox, createSandbox} from 'sinon' +import {SinonSandbox, createSandbox, match} from 'sinon' import PluginsIndex from '../../src/commands/plugins/index.js' import PluginsInstall from '../../src/commands/plugins/install.js' @@ -50,14 +50,14 @@ describe('install/uninstall integration tests', () => { describe('basic', () => { it('should return "No Plugins" if no plugins are installed', async () => { await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true }) it('should install plugin', async () => { await PluginsInstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -65,7 +65,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -75,7 +75,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['@oclif/plugin-test-esm-1@latest'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -83,7 +83,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1@latest'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -93,7 +93,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['aliasme'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -101,7 +101,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -111,7 +111,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true // test that the plugin was compiled after install (only applies to github installs) @@ -123,7 +123,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -133,7 +133,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true // test that the plugin was compiled after install (only applies to github installs) @@ -145,7 +145,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -155,8 +155,8 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git#0.5.4'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') - expect(stubs.stdout.firstCall.firstArg).to.include('0.5.4') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stubs.stdout.calledWith(match('0.5.4'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true // test that the plugin was compiled after install (only applies to github installs) @@ -168,7 +168,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -178,7 +178,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['@salesforce/plugin-custom-metadata'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('@salesforce/plugin-custom-metadata') + expect(stubs.stdout.calledWith(match('@salesforce/plugin-custom-metadata'))).to.be.true expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.true }) @@ -186,7 +186,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@salesforce/plugin-custom-metadata'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.false }) }) @@ -198,7 +198,7 @@ describe('install/uninstall integration tests', () => { } catch {} const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/DOES_NOT_EXIST')).to.be.false }) @@ -217,7 +217,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm') + expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -225,7 +225,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) From 9f3c4bc968c98d12718f87be92ccc7c07ccd8931 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 09:39:40 -0600 Subject: [PATCH 13/39] fix: throw preemptive error if npm pkg does not exist --- src/plugins.ts | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/plugins.ts b/src/plugins.ts index 91b4fbb5..e3e5bb98 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -116,6 +116,8 @@ export default class Plugins { name = unfriendly } + // validate that the package name exists in the npm registry before installing + await this.npmHasPackage(name, true) await this.yarn.exec([...add, `${name}@${tag}`], yarnOpts) this.debug(`loading plugin ${name}...`) @@ -381,7 +383,7 @@ export default class Plugins { ) } - private async npmHasPackage(name: string): Promise { + private async npmHasPackage(name: string, throwOnNotFound = false): Promise { const nodeExecutable = await findNode(this.config.root) const npmCli = await findNpm() @@ -390,23 +392,22 @@ export default class Plugins { const command = `${nodeExecutable} ${npmCli} show ${name} dist-tags` + let npmShowResult try { const {default: shelljs} = await import('shelljs') - const npmShowResult = shelljs.exec(command, { - async: false, - encoding: 'utf8', - silent: true, - }) - if (npmShowResult.code !== 0) { - this.debug(npmShowResult.stderr) - return false - } - - this.debug(`Found ${name} in the registry.`) - return true + npmShowResult = shelljs.exec(command, {silent: true}) } catch { - throw new Error(`Could not run npm show for ${name}`) + throw new Errors.CLIError(`Could not run npm show for ${name}`) } + + if (npmShowResult?.code !== 0) { + this.debug(npmShowResult?.stderr) + if (throwOnNotFound) throw new Errors.CLIError(`${name} does not exist in the registry.`) + return false + } + + this.debug(`Found ${name} in the registry.`) + return true } private get pjsonPath() { From aaab8eca7d758b952210d4ecd21ffc7590a74b3b Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 11:02:24 -0600 Subject: [PATCH 14/39] feat: improved terminal output --- src/commands/plugins/install.ts | 9 +++++++-- src/commands/plugins/link.ts | 3 +++ src/commands/plugins/uninstall.ts | 3 +++ src/commands/plugins/update.ts | 9 ++++++++- src/plugins.ts | 4 ++-- src/util.ts | 27 +++++++++++++++++++++++++ src/yarn.ts | 33 ++++++++++++++++++++++++++----- 7 files changed, 78 insertions(+), 10 deletions(-) diff --git a/src/commands/plugins/install.ts b/src/commands/plugins/install.ts index edb9e4b0..cee9e10a 100644 --- a/src/commands/plugins/install.ts +++ b/src/commands/plugins/install.ts @@ -1,8 +1,10 @@ +/* eslint-disable no-await-in-loop */ import {Args, Command, Errors, Flags, Interfaces, ux} from '@oclif/core' import chalk from 'chalk' import validate from 'validate-npm-package-name' import Plugins from '../../plugins.js' +import {WarningsCache} from '../../util.js' export default class PluginsInstall extends Command { static aliases = ['plugins:add'] @@ -127,9 +129,7 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins const {name, tag} = await getNameAndTag(input) return {name, tag, type: 'npm'} } - /* eslint-enable no-await-in-loop */ - /* eslint-disable no-await-in-loop */ async run(): Promise { const {argv, flags} = await this.parse(PluginsInstall) this.flags = flags @@ -157,10 +157,15 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins } } catch (error) { ux.action.stop(chalk.bold.red('failed')) + WarningsCache.getInstance().flush() throw error } ux.action.stop(`installed v${plugin.version}`) + + WarningsCache.getInstance().flush() + + ux.log(chalk.green(`Successfully installed ${plugin.name} v${plugin.version}`)) } } } diff --git a/src/commands/plugins/link.ts b/src/commands/plugins/link.ts index 48ff34e5..08d35a5c 100644 --- a/src/commands/plugins/link.ts +++ b/src/commands/plugins/link.ts @@ -2,6 +2,7 @@ import {Args, Command, Flags, ux} from '@oclif/core' import chalk from 'chalk' import Plugins from '../../plugins.js' +import {WarningsCache} from '../../util.js' export default class PluginsLink extends Command { static args = { @@ -36,5 +37,7 @@ e.g. If you have a user-installed or core plugin that has a 'hello' command, ins ux.action.start(`Linking plugin ${chalk.cyan(args.path)}`) await this.plugins.link(args.path, {install: flags.install}) ux.action.stop() + + WarningsCache.getInstance().flush() } } diff --git a/src/commands/plugins/uninstall.ts b/src/commands/plugins/uninstall.ts index 31a1ceba..09c24116 100644 --- a/src/commands/plugins/uninstall.ts +++ b/src/commands/plugins/uninstall.ts @@ -3,6 +3,7 @@ import {Args, Command, Flags, ux} from '@oclif/core' import chalk from 'chalk' import Plugins from '../../plugins.js' +import {WarningsCache} from '../../util.js' function removeTags(plugin: string): string { if (plugin.includes('@')) { @@ -74,6 +75,8 @@ export default class PluginsUninstall extends Command { } ux.action.stop() + + WarningsCache.getInstance().flush() } } } diff --git a/src/commands/plugins/update.ts b/src/commands/plugins/update.ts index f54b56aa..caffa1ab 100644 --- a/src/commands/plugins/update.ts +++ b/src/commands/plugins/update.ts @@ -1,6 +1,7 @@ -import {Command, Flags} from '@oclif/core' +import {Command, Flags, ux} from '@oclif/core' import Plugins from '../../plugins.js' +import {WarningsCache} from '../../util.js' export default class PluginsUpdate extends Command { static description = 'Update installed plugins.' @@ -15,6 +16,12 @@ export default class PluginsUpdate extends Command { async run(): Promise { const {flags} = await this.parse(PluginsUpdate) this.plugins.verbose = flags.verbose + ux.action.start(`${this.config.name}: Updating plugins`) + await this.plugins.update() + + ux.action.stop() + + WarningsCache.getInstance().flush() } } diff --git a/src/plugins.ts b/src/plugins.ts index e3e5bb98..78babab8 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -209,9 +209,11 @@ export default class Plugins { * @returns Promise */ async refresh(options: {all: boolean; prod: boolean}, ...roots: string[]): Promise { + ux.action.status = 'Refreshing user plugins...' const doRefresh = async (root: string) => { await this.yarn.exec(options.prod ? ['--prod'] : [], { cwd: root, + noSpinner: true, silent: this.silent, verbose: this.verbose, }) @@ -283,7 +285,6 @@ export default class Plugins { // eslint-disable-next-line unicorn/no-await-expression-member let plugins = (await this.list()).filter((p): p is Interfaces.PJSON.PluginTypes.User => p.type === 'user') if (plugins.length === 0) return - ux.action.start(`${this.config.name}: Updating plugins`) // migrate deprecated plugins const aliases = this.config.pjson.oclif.aliases || {} @@ -334,7 +335,6 @@ export default class Plugins { await this.refresh({all: true, prod: true}) await this.add(...modifiedPlugins) - ux.action.stop() } private async createPJSON() { diff --git a/src/util.ts b/src/util.ts index 9c6a9046..0a923f78 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,3 +1,4 @@ +import {ux} from '@oclif/core' import * as fs from 'node:fs' import * as fsPromises from 'node:fs/promises' import {createRequire} from 'node:module' @@ -94,3 +95,29 @@ export async function findNpm(): Promise { const npmPath = npmPjsonPath.slice(0, Math.max(0, npmPjsonPath.lastIndexOf(path.sep))) return path.join(npmPath, npmPjson.bin.npm) } + +export class WarningsCache { + private static cache: string[] = [] + private static instance: WarningsCache + public static getInstance(): WarningsCache { + if (!WarningsCache.instance) { + WarningsCache.instance = new WarningsCache() + } + + return WarningsCache.instance + } + + public add(...warnings: string[]): void { + for (const warning of warnings) { + if (!WarningsCache.cache.includes(warning)) { + WarningsCache.cache.push(warning) + } + } + } + + public flush(): void { + for (const warning of WarningsCache.cache) { + ux.warn(warning) + } + } +} diff --git a/src/yarn.ts b/src/yarn.ts index 47e3a9bd..9de76c33 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -5,10 +5,19 @@ import {createRequire} from 'node:module' import * as path from 'node:path' import NpmRunPath from 'npm-run-path' +import {WarningsCache} from './util.js' + const debug = makeDebug('cli:yarn') const require = createRequire(import.meta.url) +type YarnExecOptions = { + cwd: string + noSpinner?: boolean + silent: boolean + verbose: boolean +} + export default class Yarn { config: Interfaces.Config @@ -20,7 +29,7 @@ export default class Yarn { return require.resolve('yarn/bin/yarn.js') } - async exec(args: string[] = [], opts: {cwd: string; silent: boolean; verbose: boolean}): Promise { + async exec(args: string[] = [], opts: YarnExecOptions): Promise { const {cwd, silent, verbose} = opts if (args[0] !== 'run') { // https://classic.yarnpkg.com/lang/en/docs/cli/#toc-concurrency-and-mutex @@ -80,16 +89,30 @@ export default class Yarn { } } - fork(modulePath: string, args: string[] = [], options: Record = {}): Promise { + fork(modulePath: string, args: string[] = [], options: YarnExecOptions): Promise { + const cache = WarningsCache.getInstance() + return new Promise((resolve, reject) => { const forked = fork(modulePath, args, options) - forked.stderr?.on('data', (d) => { - if (!options.silent) process.stderr.write(d) + forked.stderr?.on('data', (d: Buffer) => { + if (!options.silent) + cache.add( + ...d + .toString() + .split('\n') + .map((i) => + i + .trim() + .replace(/^warning/, '') + .trim(), + ) + .filter(Boolean), + ) }) forked.stdout?.setEncoding('utf8') forked.stdout?.on('data', (d) => { if (options.verbose) process.stdout.write(d) - else ux.action.status = d.replace(/\n$/, '').split('\n').pop() + else if (!options.noSpinner) ux.action.status = d.replace(/\n$/, '').split('\n').pop() }) forked.on('error', reject) From 1a483fa80178a772af3ce7bbdc7c58969e5e7c51 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 11:35:27 -0600 Subject: [PATCH 15/39] chore: update fs and path imports --- src/commands/plugins/inspect.ts | 16 ++++++++-------- src/plugins.ts | 29 ++++++++++++++--------------- src/yarn.ts | 6 +++--- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/commands/plugins/inspect.ts b/src/commands/plugins/inspect.ts index 2cdfd45e..27a6e521 100644 --- a/src/commands/plugins/inspect.ts +++ b/src/commands/plugins/inspect.ts @@ -1,13 +1,13 @@ import {Args, Command, Flags, Plugin, ux} from '@oclif/core' import chalk from 'chalk' import {readFile} from 'node:fs/promises' -import * as path from 'node:path' +import {dirname, join, sep} from 'node:path' import Plugins from '../../plugins.js' import {sortBy} from '../../util.js' function trimUntil(fsPath: string, part: string): string { - const parts = fsPath.split(path.sep) + const parts = fsPath.split(sep) // eslint-disable-next-line unicorn/no-array-reduce const indices = parts.reduce( (result, current, index) => (current === part ? [...result, index] : result), @@ -15,7 +15,7 @@ function trimUntil(fsPath: string, part: string): string { ) const partIndex = Math.max(...indices) if (partIndex === -1) return fsPath - return parts.slice(0, partIndex + 1).join(path.sep) + return parts.slice(0, partIndex + 1).join(sep) } type Dependencies = Record @@ -50,19 +50,19 @@ export default class PluginsInspect extends Command { // In this case we want these operations to happen // sequentially so the `no-await-in-loop` rule is ignored async findDep(plugin: Plugin, dependency: string): Promise<{pkgPath: null | string; version: null | string}> { - const dependencyPath = path.join(...dependency.split('/')) - let start = path.join(plugin.root, 'node_modules') + const dependencyPath = join(...dependency.split('/')) + let start = join(plugin.root, 'node_modules') const paths = [start] while ((start.match(/node_modules/g) ?? []).length > 1) { - start = trimUntil(path.dirname(start), 'node_modules') + start = trimUntil(dirname(start), 'node_modules') paths.push(start) } // TODO: use promise.any to check the paths in parallel // requires node >= 16 for (const p of paths) { - const fullPath = path.join(p, dependencyPath) - const pkgJsonPath = path.join(fullPath, 'package.json') + const fullPath = join(p, dependencyPath) + const pkgJsonPath = join(fullPath, 'package.json') try { // eslint-disable-next-line no-await-in-loop const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) diff --git a/src/plugins.ts b/src/plugins.ts index 78babab8..136b6f66 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -1,8 +1,7 @@ import {Config, Errors, Interfaces, ux} from '@oclif/core' import makeDebug from 'debug' -import * as fs from 'node:fs' -import {readFile} from 'node:fs/promises' -import * as path from 'node:path' +import {access, mkdir, readFile, rename, writeFile} from 'node:fs/promises' +import {dirname, join, resolve} from 'node:path' import {gt, valid, validRange} from 'semver' import {findNode, findNpm, uniq, uniqWith} from './util.js' @@ -25,7 +24,7 @@ const initPJSON: UserPJSON = { async function fileExists(filePath: string): Promise { try { - await fs.promises.access(filePath) + await access(filePath) return true } catch { return false @@ -68,7 +67,7 @@ export default class Plugins { const list = await this.list() const friendly = list.find((p) => this.friendlyName(p.name) === this.friendlyName(name)) const unfriendly = list.find((p) => this.unfriendlyName(p.name) === this.unfriendlyName(name)) - const link = list.find((p) => p.type === 'link' && path.resolve(p.root) === path.resolve(name)) + const link = list.find((p) => p.type === 'link' && resolve(p.root) === resolve(name)) return (friendly ?? unfriendly ?? link ?? false) as | Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.User @@ -91,7 +90,7 @@ export default class Plugins { plugin = await Config.load({ devPlugins: false, name, - root: path.join(this.config.dataDir, 'node_modules', name), + root: join(this.config.dataDir, 'node_modules', name), userPlugins: false, }) await this.refresh({all: true, prod: true}, plugin.root) @@ -124,7 +123,7 @@ export default class Plugins { plugin = await Config.load({ devPlugins: false, name, - root: path.join(this.config.dataDir, 'node_modules', name), + root: join(this.config.dataDir, 'node_modules', name), userPlugins: false, }) this.debug(`finished loading plugin ${name} at root ${plugin.root}`) @@ -153,7 +152,7 @@ export default class Plugins { } async link(p: string, {install}: {install: boolean}): Promise { - const c = await Config.load(path.resolve(p)) + const c = await Config.load(resolve(p)) ux.action.start(`${this.config.name}: linking plugin ${c.name}`) this.isValidPlugin(c) @@ -231,12 +230,12 @@ export default class Plugins { const deduped = [...new Set(pluginRoots)] await Promise.all( deduped.map(async (r) => { - if (await fileExists(path.join(r, 'yarn.lock'))) { + if (await fileExists(join(r, 'yarn.lock'))) { this.debug(`yarn.lock exists at ${r}. Installing prod dependencies`) await doRefresh(r) - } else if (await fileExists(path.join(r, 'oclif.lock'))) { + } else if (await fileExists(join(r, 'oclif.lock'))) { this.debug(`oclif.lock exists at ${r}. Installing prod dependencies`) - await fs.promises.rename(path.join(r, 'oclif.lock'), path.join(r, 'yarn.lock')) + await rename(join(r, 'oclif.lock'), join(r, 'yarn.lock')) await doRefresh(r) } else { this.debug(`no yarn.lock or oclif.lock exists at ${r}. Skipping dependency refresh`) @@ -338,7 +337,7 @@ export default class Plugins { } private async createPJSON() { - if (!fs.existsSync(this.pjsonPath)) { + if (await fileExists(this.pjsonPath)) { this.debug(`creating ${this.pjsonPath} with pjson: ${JSON.stringify(initPJSON, null, 2)}`) await this.savePJSON(initPJSON) } @@ -411,7 +410,7 @@ export default class Plugins { } private get pjsonPath() { - return path.join(this.config.dataDir, 'package.json') + return join(this.config.dataDir, 'package.json') } private async readPJSON(): Promise { @@ -426,7 +425,7 @@ export default class Plugins { private async savePJSON(pjson: UserPJSON) { this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(pjson, null, 2)) - await fs.promises.mkdir(path.dirname(this.pjsonPath), {recursive: true}) - await fs.promises.writeFile(this.pjsonPath, JSON.stringify(pjson, null, 2)) + await mkdir(dirname(this.pjsonPath), {recursive: true}) + await writeFile(this.pjsonPath, JSON.stringify(pjson, null, 2)) } } diff --git a/src/yarn.ts b/src/yarn.ts index 9de76c33..7db64d55 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -2,7 +2,7 @@ import {Interfaces, ux} from '@oclif/core' import makeDebug from 'debug' import {fork} from 'node:child_process' import {createRequire} from 'node:module' -import * as path from 'node:path' +import {join} from 'node:path' import NpmRunPath from 'npm-run-path' import {WarningsCache} from './util.js' @@ -38,8 +38,8 @@ export default class Yarn { const optionalPort = port ? `:${port}` : '' const mutex = this.config.scopedEnvVar('USE_NETWORK_MUTEX') ? `network${optionalPort}` - : `file:${path.join(cwd, 'yarn.lock')}` - const cacheDir = path.join(this.config.cacheDir, 'yarn') + : `file:${join(cwd, 'yarn.lock')}` + const cacheDir = join(this.config.cacheDir, 'yarn') args = [...args, '--non-interactive', `--mutex=${mutex}`, `--preferred-cache-folder=${cacheDir}`, '--check-files'] const networkTimeout = this.config.scopedEnvVar('NETWORK_TIMEOUT') From 196a2e80ed4e3db13b3e6e28c61dacf6dccc030e Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 14:01:14 -0600 Subject: [PATCH 16/39] ci: update test.yml --- .github/workflows/test.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3585e055..7db420ee 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,16 @@ on: workflow_dispatch: jobs: + yarn-lockfile-check: + uses: salesforcecli/github-workflows/.github/workflows/lockFileCheck.yml@main + linux-unit-tests: + needs: yarn-lockfile-check + uses: salesforcecli/github-workflows/.github/workflows/unitTestsLinux.yml@main + windows-unit-tests: + needs: linux-unit-tests + uses: salesforcecli/github-workflows/.github/workflows/unitTestsWindows.yml@main sf-integration-tests: + needs: linux-unit-tests strategy: matrix: os: [ubuntu-latest, windows-latest] @@ -28,6 +37,7 @@ jobs: run: yarn test:integration:sf integration-tests: + needs: linux-unit-tests strategy: matrix: os: [ubuntu-latest, windows-latest] @@ -42,6 +52,3 @@ jobs: - run: yarn build - name: Run tests run: yarn ${{matrix.test}} - - unit-tests: - uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main From 4567aaa2a9422b1d205c4d6517d56abf1a70679f Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 14:09:33 -0600 Subject: [PATCH 17/39] chore: bump oclif/core --- package.json | 2 +- yarn.lock | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 57bb1f29..bceb6d53 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { - "@oclif/core": "^3.3.2", + "@oclif/core": "^3.4.0", "chalk": "^5.3.0", "debug": "^4.3.4", "npm": "9.8.1", diff --git a/yarn.lock b/yarn.lock index cafb27c9..b767469f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -651,7 +651,7 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/core@^3.0.4", "@oclif/core@^3.2.1", "@oclif/core@^3.3.2": +"@oclif/core@^3.0.4", "@oclif/core@^3.2.1": version "3.3.2" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.3.2.tgz#1244aa19313681000881d97dd0e956a4ed48daa5" integrity sha512-8bZa42d86t5BayJUENKqZN6c5CnX0n3j+JyCWmqI5PP7VsRWZl4YSXFoLFw+mZXKtvwAMrgzMxSGltm5iIXT7w== @@ -682,6 +682,37 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" +"@oclif/core@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.4.0.tgz#5400ad77061b4828e2d1b70c5091b38bf25ed389" + integrity sha512-+5S7xBa8zPE0iaStTwLgPWP2xwp17bCypMruJW8rti3rueF/4dR+4JHZ6izbRjWGbtD20Ty3nt3e/UhpCYMVQQ== + dependencies: + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.12.0" + debug "^4.3.4" + ejs "^3.1.9" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + "@oclif/plugin-help@^5.2.14": version "5.2.20" resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.2.20.tgz#4035a0ac231f95fb8e334da342175e3ca00f6abc" From 460f2e4bd9a13206dc6b4495d48392191b9921af Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 14:28:49 -0600 Subject: [PATCH 18/39] ci: use node latest for integration tests --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7db420ee..36301e81 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: lts/* + node-version: latest - name: Install sf uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd with: @@ -47,7 +47,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: lts/* + node-version: latest - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main - run: yarn build - name: Run tests From 94ca767f12edfc8fb5993dff915bd87cf55dbdd3 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 14:56:41 -0600 Subject: [PATCH 19/39] fix: file exists check --- src/plugins.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins.ts b/src/plugins.ts index 136b6f66..74bc27a2 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -337,7 +337,7 @@ export default class Plugins { } private async createPJSON() { - if (await fileExists(this.pjsonPath)) { + if (!(await fileExists(this.pjsonPath))) { this.debug(`creating ${this.pjsonPath} with pjson: ${JSON.stringify(initPJSON, null, 2)}`) await this.savePJSON(initPJSON) } From e607a779217ee314e4c1dba025d1ce3fd0de6878 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 15:12:06 -0600 Subject: [PATCH 20/39] fix: remove rogue console.log --- src/commands/plugins/inspect.ts | 1 - test/integration/install.integration.ts | 5 +++++ test/integration/sf.integration.ts | 11 +++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/commands/plugins/inspect.ts b/src/commands/plugins/inspect.ts index 27a6e521..a06d8c63 100644 --- a/src/commands/plugins/inspect.ts +++ b/src/commands/plugins/inspect.ts @@ -140,7 +140,6 @@ export default class PluginsInspect extends Command { if (aliases[name] === null) this.error(`${name} is blocked`) name = aliases[name] ?? name const pluginName = (await this.plugins.maybeUnfriendlyName(name)) ?? name - console.log(name, pluginName) try { plugins.push(await this.inspect(pluginName, flags.verbose)) diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index c42065f3..1c2c7205 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -1,6 +1,7 @@ import {ux} from '@oclif/core' import {CLIError} from '@oclif/core/lib/errors/index.js' import {expect} from 'chai' +import chalk from 'chalk' import {existsSync} from 'node:fs' import {rm} from 'node:fs/promises' import {tmpdir} from 'node:os' @@ -19,6 +20,10 @@ describe('install/uninstall integration tests', () => { const configDir = join(tmpdir(), 'plugin-plugins-tests', 'config') const dataDir = join(tmpdir(), 'plugin-plugins-tests', 'data') + console.log('process.env.MYCLI_DATA_DIR:', chalk.dim(dataDir)) + console.log('process.env.MYCLI_CACHE_DIR:', chalk.dim(cacheDir)) + console.log('process.env.MYCLI_CONFIG_DIR:', chalk.dim(configDir)) + const cwd = process.cwd() before(async () => { diff --git a/test/integration/sf.integration.ts b/test/integration/sf.integration.ts index a2499a16..c4d33050 100644 --- a/test/integration/sf.integration.ts +++ b/test/integration/sf.integration.ts @@ -1,7 +1,7 @@ import {expect} from 'chai' import chalk from 'chalk' import {exec as cpExec} from 'node:child_process' -import {mkdir} from 'node:fs/promises' +import {rm} from 'node:fs/promises' import {join, resolve} from 'node:path' async function exec(command: string): Promise<{code: number; stderr: string; stdout: string}> { @@ -34,14 +34,17 @@ describe('sf Integration', () => { process.env.SF_DATA_DIR = join(tmp, 'data') process.env.SF_CACHE_DIR = join(tmp, 'cache') process.env.SF_CONFIG_DIR = join(tmp, 'config') - mkdir(process.env.SF_DATA_DIR, {recursive: true}) - mkdir(process.env.SF_CACHE_DIR, {recursive: true}) - mkdir(process.env.SF_CONFIG_DIR, {recursive: true}) console.log('process.env.SF_DATA_DIR:', chalk.dim(process.env.SF_DATA_DIR)) console.log('process.env.SF_CACHE_DIR:', chalk.dim(process.env.SF_CACHE_DIR)) console.log('process.env.SF_CONFIG_DIR:', chalk.dim(process.env.SF_CONFIG_DIR)) + await Promise.all([ + rm(process.env.SF_DATA_DIR, {force: true, recursive: true}), + rm(process.env.SF_CACHE_DIR, {force: true, recursive: true}), + rm(process.env.SF_CONFIG_DIR, {force: true, recursive: true}), + ]) + await exec('sf plugins link') const {stdout} = await exec('sf plugins --core') expect(stdout).to.contain('@oclif/plugin-plugins') From e270ed3804e98fd4da75e29bc3060dfa0f006194 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 15:14:53 -0600 Subject: [PATCH 21/39] ci: test perf --- test/integration/install.integration.ts | 23 +++++++++++++---------- test/integration/sf.integration.ts | 17 +++++++++++------ 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index 1c2c7205..0c20f3f3 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -4,8 +4,7 @@ import {expect} from 'chai' import chalk from 'chalk' import {existsSync} from 'node:fs' import {rm} from 'node:fs/promises' -import {tmpdir} from 'node:os' -import {join} from 'node:path' +import {join, resolve} from 'node:path' import {SinonSandbox, createSandbox, match} from 'sinon' import PluginsIndex from '../../src/commands/plugins/index.js' @@ -16,9 +15,10 @@ describe('install/uninstall integration tests', () => { let sandbox: SinonSandbox let stubs: ReturnType - const cacheDir = join(tmpdir(), 'plugin-plugins-tests', 'cache') - const configDir = join(tmpdir(), 'plugin-plugins-tests', 'config') - const dataDir = join(tmpdir(), 'plugin-plugins-tests', 'data') + const tmp = resolve('tmp', 'install-integration') + const cacheDir = join(tmp, 'plugin-plugins-tests', 'cache') + const configDir = join(tmp, 'plugin-plugins-tests', 'config') + const dataDir = join(tmp, 'plugin-plugins-tests', 'data') console.log('process.env.MYCLI_DATA_DIR:', chalk.dim(dataDir)) console.log('process.env.MYCLI_CACHE_DIR:', chalk.dim(cacheDir)) @@ -28,11 +28,14 @@ describe('install/uninstall integration tests', () => { before(async () => { try { - await Promise.all([ - rm(cacheDir, {force: true, recursive: true}), - rm(configDir, {force: true, recursive: true}), - rm(dataDir, {force: true, recursive: true}), - ]) + // no need to clear out directories in CI since they'll always be empty + if (process.env.CI) { + await Promise.all([ + rm(cacheDir, {force: true, recursive: true}), + rm(configDir, {force: true, recursive: true}), + rm(dataDir, {force: true, recursive: true}), + ]) + } } catch {} }) diff --git a/test/integration/sf.integration.ts b/test/integration/sf.integration.ts index c4d33050..b8654170 100644 --- a/test/integration/sf.integration.ts +++ b/test/integration/sf.integration.ts @@ -30,7 +30,7 @@ describe('sf Integration', () => { before(async () => { await ensureSfExists() - const tmp = resolve('tmp') + const tmp = resolve('tmp', 'sf-integration') process.env.SF_DATA_DIR = join(tmp, 'data') process.env.SF_CACHE_DIR = join(tmp, 'cache') process.env.SF_CONFIG_DIR = join(tmp, 'config') @@ -39,11 +39,16 @@ describe('sf Integration', () => { console.log('process.env.SF_CACHE_DIR:', chalk.dim(process.env.SF_CACHE_DIR)) console.log('process.env.SF_CONFIG_DIR:', chalk.dim(process.env.SF_CONFIG_DIR)) - await Promise.all([ - rm(process.env.SF_DATA_DIR, {force: true, recursive: true}), - rm(process.env.SF_CACHE_DIR, {force: true, recursive: true}), - rm(process.env.SF_CONFIG_DIR, {force: true, recursive: true}), - ]) + // no need to clear out directories in CI since they'll always be empty + try { + if (process.env.CI) { + await Promise.all([ + rm(process.env.SF_DATA_DIR, {force: true, recursive: true}), + rm(process.env.SF_CACHE_DIR, {force: true, recursive: true}), + rm(process.env.SF_CONFIG_DIR, {force: true, recursive: true}), + ]) + } + } catch {} await exec('sf plugins link') const {stdout} = await exec('sf plugins --core') From abc3fe01454cae468226c958bf042c9c90a435c8 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 15:26:44 -0600 Subject: [PATCH 22/39] ci: test perf --- test/integration/link.integration.ts | 17 ++++++++++------- test/integration/sf.integration.ts | 4 ++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/test/integration/link.integration.ts b/test/integration/link.integration.ts index 169bf26d..a2cdfe60 100644 --- a/test/integration/link.integration.ts +++ b/test/integration/link.integration.ts @@ -19,7 +19,7 @@ async function exec(cmd: string, opts?: {cwd?: string}) { }) } -describe('link/unlink integration tests', () => { +;(process.platform === 'win32' ? describe.skip : describe)('link/unlink integration tests', () => { let sandbox: SinonSandbox let stubs: ReturnType @@ -32,12 +32,15 @@ describe('link/unlink integration tests', () => { before(async () => { try { - await Promise.all([ - rm(cacheDir, {force: true, recursive: true}), - rm(configDir, {force: true, recursive: true}), - rm(dataDir, {force: true, recursive: true}), - rm(pluginDir, {force: true, recursive: true}), - ]) + // no need to clear out directories in CI since they'll always be empty + if (!process.env.CI) { + await Promise.all([ + rm(cacheDir, {force: true, recursive: true}), + rm(configDir, {force: true, recursive: true}), + rm(dataDir, {force: true, recursive: true}), + rm(pluginDir, {force: true, recursive: true}), + ]) + } } catch {} await exec(`git clone ${repo} ${pluginDir} --depth 1`) diff --git a/test/integration/sf.integration.ts b/test/integration/sf.integration.ts index b8654170..54d34e58 100644 --- a/test/integration/sf.integration.ts +++ b/test/integration/sf.integration.ts @@ -39,9 +39,9 @@ describe('sf Integration', () => { console.log('process.env.SF_CACHE_DIR:', chalk.dim(process.env.SF_CACHE_DIR)) console.log('process.env.SF_CONFIG_DIR:', chalk.dim(process.env.SF_CONFIG_DIR)) - // no need to clear out directories in CI since they'll always be empty try { - if (process.env.CI) { + // no need to clear out directories in CI since they'll always be empty + if (!process.env.CI) { await Promise.all([ rm(process.env.SF_DATA_DIR, {force: true, recursive: true}), rm(process.env.SF_CACHE_DIR, {force: true, recursive: true}), From 29e64ff51193af837ad370ec76c0ee339e820011 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 19 Oct 2023 15:27:54 -0600 Subject: [PATCH 23/39] ci: test perf --- .github/workflows/test.yml | 3 +++ test/integration/install.integration.ts | 2 +- test/integration/link.integration.ts | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 36301e81..7e3edef3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,6 +42,9 @@ jobs: matrix: os: [ubuntu-latest, windows-latest] test: ['test:integration:install', 'test:integration:link'] + exclude: + - os: windows-latest + test: test:integration:link runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v3 diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index 0c20f3f3..4a9dd81f 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -29,7 +29,7 @@ describe('install/uninstall integration tests', () => { before(async () => { try { // no need to clear out directories in CI since they'll always be empty - if (process.env.CI) { + if (!process.env.CI) { await Promise.all([ rm(cacheDir, {force: true, recursive: true}), rm(configDir, {force: true, recursive: true}), diff --git a/test/integration/link.integration.ts b/test/integration/link.integration.ts index a2cdfe60..53eb7b6f 100644 --- a/test/integration/link.integration.ts +++ b/test/integration/link.integration.ts @@ -19,7 +19,7 @@ async function exec(cmd: string, opts?: {cwd?: string}) { }) } -;(process.platform === 'win32' ? describe.skip : describe)('link/unlink integration tests', () => { +describe('link/unlink integration tests', () => { let sandbox: SinonSandbox let stubs: ReturnType From f11e12bff0d3bb94757df948688962201cfc3281 Mon Sep 17 00:00:00 2001 From: Shane McLaughlin Date: Mon, 23 Oct 2023 09:20:40 -0500 Subject: [PATCH 24/39] sm/pr-feedback (#685) * refactor: hasPlugin type uses this.list types * refactor: omit class props, parallelization from TODO * refactor: warningCache use set * chore: dev-dep cleanup * chore(release): 3.9.4-qa.0 [skip ci] --------- Co-authored-by: svc-cli-bot --- README.md | 55 +++++++++++++++----------- package.json | 6 +-- src/commands/plugins/inspect.ts | 45 +++++++++++++--------- src/plugins.ts | 17 +++++---- src/util.ts | 6 +-- yarn.lock | 68 +-------------------------------- 6 files changed, 73 insertions(+), 124 deletions(-) diff --git a/README.md b/README.md index fb8fe088..71095cd4 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,7 @@ plugins plugin for oclif - [Aliases](#aliases) - [Environment Variables](#environment-variables) - [Commands](#commands) - - [`mycli plugins`](#mycli-plugins) - - [`mycli plugins:inspect PLUGIN...`](#mycli-pluginsinspect-plugin) - - [`mycli plugins:install PLUGIN...`](#mycli-pluginsinstall-plugin) - - [`mycli plugins:link PLUGIN`](#mycli-pluginslink-plugin) - - [`mycli plugins:uninstall PLUGIN...`](#mycli-pluginsuninstall-plugin) - - [`mycli plugins:update`](#mycli-pluginsupdate) - + # What is this? @@ -94,17 +88,27 @@ For removing plugins that are no longer needed (either because they're sunset or +- [`mycli plugins`](#mycli-plugins) +- [`mycli plugins:inspect PLUGIN...`](#mycli-pluginsinspect-plugin) +- [`mycli plugins:install PLUGIN...`](#mycli-pluginsinstall-plugin) +- [`mycli plugins:link PLUGIN`](#mycli-pluginslink-plugin) +- [`mycli plugins:uninstall PLUGIN...`](#mycli-pluginsuninstall-plugin) +- [`mycli plugins update`](#mycli-plugins-update) + ## `mycli plugins` List installed plugins. ``` USAGE - $ mycli plugins [--core] + $ mycli plugins [--json] [--core] FLAGS --core Show core plugins. +GLOBAL FLAGS + --json Format output as json. + DESCRIPTION List installed plugins. @@ -112,7 +116,7 @@ EXAMPLES $ mycli plugins ``` -_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/index.ts)_ +_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/index.ts)_ ## `mycli plugins:inspect PLUGIN...` @@ -129,6 +133,9 @@ FLAGS -h, --help Show CLI help. -v, --verbose +GLOBAL FLAGS + --json Format output as json. + DESCRIPTION Displays installation properties of a plugin. @@ -136,7 +143,7 @@ EXAMPLES $ mycli plugins:inspect myplugin ``` -_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/inspect.ts)_ +_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/inspect.ts)_ ## `mycli plugins:install PLUGIN...` @@ -152,11 +159,11 @@ ARGUMENTS FLAGS -f, --force Run yarn install with force flag. -h, --help Show CLI help. - -v, --verbose + -s, --silent Silences yarn output. + -v, --verbose Show verbose yarn output. DESCRIPTION Installs a plugin into the CLI. - Can be installed from npm or a git url. Installation of a user-installed plugin will override a core plugin. @@ -165,8 +172,9 @@ DESCRIPTION will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in the CLI without the need to patch and update the whole CLI. + ALIASES - $ mycli plugins:add + $ mycli plugins add EXAMPLES $ mycli plugins:install myplugin @@ -176,7 +184,7 @@ EXAMPLES $ mycli plugins:install someuser/someplugin ``` -_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/install.ts)_ +_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/install.ts)_ ## `mycli plugins:link PLUGIN` @@ -190,22 +198,23 @@ ARGUMENTS PATH [default: .] path to plugin FLAGS - -h, --help Show CLI help. + -h, --help Show CLI help. -v, --verbose + --[no-]install Install dependencies after linking the plugin. DESCRIPTION Links a plugin into the CLI for development. - Installation of a linked plugin will override a user-installed or core plugin. e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work. + EXAMPLES $ mycli plugins:link myplugin ``` -_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/link.ts)_ +_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/link.ts)_ ## `mycli plugins:uninstall PLUGIN...` @@ -226,19 +235,19 @@ DESCRIPTION Removes a plugin from the CLI. ALIASES - $ mycli plugins:unlink - $ mycli plugins:remove + $ mycli plugins unlink + $ mycli plugins remove ``` -_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/uninstall.ts)_ +_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/uninstall.ts)_ -## `mycli plugins:update` +## `mycli plugins update` Update installed plugins. ``` USAGE - $ mycli plugins:update [-h] [-v] + $ mycli plugins update [-h] [-v] FLAGS -h, --help Show CLI help. @@ -248,6 +257,6 @@ DESCRIPTION Update installed plugins. ``` -_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/v2.0.12/src/commands/plugins/update.ts)_ +_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/update.ts)_ diff --git a/package.json b/package.json index 1893ed70..46d951c3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oclif/plugin-plugins", "description": "plugins plugin for oclif", - "version": "3.9.3", + "version": "3.9.4-qa.0", "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { @@ -21,13 +21,11 @@ "@oclif/prettier-config": "^0.2.1", "@types/chai": "^4.3.6", "@types/debug": "^4.1.9", - "@types/glob": "^8.1.0", "@types/mocha": "^10.0.2", "@types/node": "^18", "@types/semver": "^7.5.3", "@types/shelljs": "^0.8.13", "@types/sinon": "^10.0.19", - "@types/supports-color": "^7.2.0", "@types/validate-npm-package-name": "^4.0.0", "chai": "^4.3.10", "commitlint": "^17.8.0", @@ -35,11 +33,9 @@ "eslint-config-oclif": "^5.0.0", "eslint-config-oclif-typescript": "^3.0.6", "eslint-config-prettier": "^9.0.0", - "globby": "^11.1.0", "husky": "^8.0.3", "lint-staged": "^15.0.1", "mocha": "^10.2.0", - "nock": "^13.3.3", "oclif": "^4.0.2", "prettier": "^3.0.3", "shx": "^0.3.4", diff --git a/src/commands/plugins/inspect.ts b/src/commands/plugins/inspect.ts index a06d8c63..56a6ef6a 100644 --- a/src/commands/plugins/inspect.ts +++ b/src/commands/plugins/inspect.ts @@ -19,7 +19,21 @@ function trimUntil(fsPath: string, part: string): string { } type Dependencies = Record -type PluginWithDeps = Plugin & {deps: Dependencies} +type PluginWithDeps = Omit< + Plugin, + | '_commandsDir' + | '_debug' + | '_manifest' + | 'addErrorScope' + | 'commandIDs' + | 'commandsDir' + | 'findCommand' + | 'flexibleTaxonomy' + | 'load' + | 'topics' + | 'warn' + | 'warned' +> & {deps: Dependencies} export default class PluginsInspect extends Command { static args = { @@ -47,8 +61,6 @@ export default class PluginsInspect extends Command { plugins = new Plugins(this.config) - // In this case we want these operations to happen - // sequentially so the `no-await-in-loop` rule is ignored async findDep(plugin: Plugin, dependency: string): Promise<{pkgPath: null | string; version: null | string}> { const dependencyPath = join(...dependency.split('/')) let start = join(plugin.root, 'node_modules') @@ -58,21 +70,18 @@ export default class PluginsInspect extends Command { paths.push(start) } - // TODO: use promise.any to check the paths in parallel - // requires node >= 16 - for (const p of paths) { - const fullPath = join(p, dependencyPath) - const pkgJsonPath = join(fullPath, 'package.json') - try { - // eslint-disable-next-line no-await-in-loop - const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) - return {pkgPath: fullPath, version: pkgJson.version as string} - } catch { - // try the next path - } + try { + return await Promise.any( + paths.map(async (p) => { + const fullPath = join(p, dependencyPath) + const pkgJsonPath = join(fullPath, 'package.json') + const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) + return {pkgPath: fullPath, version: pkgJson.version as string} + }), + ) + } catch { + return {pkgPath: null, version: null} } - - return {pkgPath: null, version: null} } findPlugin(pluginName: string): Plugin { @@ -122,7 +131,7 @@ export default class PluginsInspect extends Command { if (!this.jsonEnabled()) tree.display() - return {...plugin, deps: depsJson} as PluginWithDeps + return {...plugin, deps: depsJson} } /* eslint-disable no-await-in-loop */ diff --git a/src/plugins.ts b/src/plugins.ts index 74bc27a2..3ee70ca6 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -63,15 +63,16 @@ export default class Plugins { return match?.[1] ?? name } - async hasPlugin(name: string): Promise { + async hasPlugin( + name: string, + ): Promise { const list = await this.list() - const friendly = list.find((p) => this.friendlyName(p.name) === this.friendlyName(name)) - const unfriendly = list.find((p) => this.unfriendlyName(p.name) === this.unfriendlyName(name)) - const link = list.find((p) => p.type === 'link' && resolve(p.root) === resolve(name)) - return (friendly ?? unfriendly ?? link ?? false) as - | Interfaces.PJSON.PluginTypes.Link - | Interfaces.PJSON.User - | false + return ( + list.find((p) => this.friendlyName(p.name) === this.friendlyName(name)) ?? // friendly + list.find((p) => this.unfriendlyName(p.name) === this.unfriendlyName(name)) ?? // unfriendly + list.find((p) => p.type === 'link' && resolve(p.root) === resolve(name)) ?? // link + false + ) } async install(name: string, {force = false, tag = 'latest'} = {}): Promise { diff --git a/src/util.ts b/src/util.ts index 0a923f78..27e461d2 100644 --- a/src/util.ts +++ b/src/util.ts @@ -97,7 +97,7 @@ export async function findNpm(): Promise { } export class WarningsCache { - private static cache: string[] = [] + private static cache = new Set() private static instance: WarningsCache public static getInstance(): WarningsCache { if (!WarningsCache.instance) { @@ -109,9 +109,7 @@ export class WarningsCache { public add(...warnings: string[]): void { for (const warning of warnings) { - if (!WarningsCache.cache.includes(warning)) { - WarningsCache.cache.push(warning) - } + WarningsCache.cache.add(warning) } } diff --git a/yarn.lock b/yarn.lock index b767469f..6953cc36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -651,38 +651,7 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/core@^3.0.4", "@oclif/core@^3.2.1": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.3.2.tgz#1244aa19313681000881d97dd0e956a4ed48daa5" - integrity sha512-8bZa42d86t5BayJUENKqZN6c5CnX0n3j+JyCWmqI5PP7VsRWZl4YSXFoLFw+mZXKtvwAMrgzMxSGltm5iIXT7w== - dependencies: - ansi-escapes "^4.3.2" - ansi-styles "^4.3.0" - cardinal "^2.1.1" - chalk "^4.1.2" - clean-stack "^3.0.1" - cli-progress "^3.12.0" - debug "^4.3.4" - ejs "^3.1.9" - get-package-type "^0.1.0" - globby "^11.1.0" - hyperlinker "^1.0.0" - indent-string "^4.0.0" - is-wsl "^2.2.0" - js-yaml "^3.14.1" - natural-orderby "^2.0.3" - object-treeify "^1.1.33" - password-prompt "^1.1.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - supports-color "^8.1.1" - supports-hyperlinks "^2.2.0" - widest-line "^3.1.0" - wordwrap "^1.0.0" - wrap-ansi "^7.0.0" - -"@oclif/core@^3.4.0": +"@oclif/core@^3.0.4", "@oclif/core@^3.2.1", "@oclif/core@^3.4.0": version "3.4.0" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.4.0.tgz#5400ad77061b4828e2d1b70c5091b38bf25ed389" integrity sha512-+5S7xBa8zPE0iaStTwLgPWP2xwp17bCypMruJW8rti3rueF/4dR+4JHZ6izbRjWGbtD20Ty3nt3e/UhpCYMVQQ== @@ -1012,14 +981,6 @@ resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/glob@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - "@types/glob@~7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -1050,7 +1011,7 @@ dependencies: "@types/node" "*" -"@types/minimatch@*", "@types/minimatch@^5.1.2": +"@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== @@ -1134,11 +1095,6 @@ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.3.tgz#575789c5cf6d410cb288b0b4affaf7e6da44ca51" integrity sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ== -"@types/supports-color@^7.2.0": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@types/supports-color/-/supports-color-7.2.1.tgz#58a6efe82d9eca92cf316b16112fcd2675ffa6c0" - integrity sha512-glb1BXM/pchMWTt9kg67CceKqyAW3NGBviNPKXN84JJhk3shqVpyi5d5MM4MWYoZHHk/Ioct7Yt1TNqQORiIAw== - "@types/validate-npm-package-name@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#3b53194dd3888fbb01f794fa368fb3472381d1fe" @@ -4063,11 +4019,6 @@ json-stringify-nice@^1.1.4: resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -4871,16 +4822,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nock@^13.3.3: - version "13.3.4" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.4.tgz#4ed3ed1465a75c87833044a881dbdd6546337e8d" - integrity sha512-DDpmn5oLEdCTclEqweOT4U7bEpuoifBMFUXem9sA4turDAZ5tlbrEoWqCorwXey8CaAw44mst5JOQeVNiwtkhw== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - lodash "^4.17.21" - propagate "^2.0.0" - node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -5739,11 +5680,6 @@ promzard@^1.0.0: dependencies: read "^2.0.0" -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" From bc54d056d5cc6c98dfacf0e01d6653cdd4d1d45a Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Mon, 23 Oct 2023 13:48:31 -0600 Subject: [PATCH 25/39] fix: ignore yarn path resolution --- src/yarn.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/yarn.ts b/src/yarn.ts index 7db64d55..885f94f4 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -19,14 +19,12 @@ type YarnExecOptions = { } export default class Yarn { - config: Interfaces.Config + private bin: string + private config: Interfaces.Config constructor({config}: {config: Interfaces.Config}) { this.config = config - } - - get bin(): string { - return require.resolve('yarn/bin/yarn.js') + this.bin = require.resolve('yarn/bin/yarn.js') } async exec(args: string[] = [], opts: YarnExecOptions): Promise { @@ -93,7 +91,9 @@ export default class Yarn { const cache = WarningsCache.getInstance() return new Promise((resolve, reject) => { - const forked = fork(modulePath, args, options) + // YARN_IGNORE_PATH=1 prevents yarn from resolving to the globally configured yarn binary. + // In other words, it ensures that it resolves to the yarn binary that is available in the node_modules directory. + const forked = fork(modulePath, args, {...options, env: {...process.env, YARN_IGNORE_PATH: '1'}}) forked.stderr?.on('data', (d: Buffer) => { if (!options.silent) cache.add( From aa628ab3a921fb5769e6f41699ab7b35a4bbc306 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Mon, 23 Oct 2023 13:52:00 -0600 Subject: [PATCH 26/39] chore: clean up --- src/yarn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/yarn.ts b/src/yarn.ts index 885f94f4..d5caa402 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -57,11 +57,11 @@ export default class Yarn { // The ts-node/esm loader isn't need to execute yarn commands anyways. execArgv: process.execArgv .join(' ') + // Remove --loader ts-node/esm from execArgv so that the subprocess doesn't fail if it can't find ts-node. .replace('--loader ts-node/esm', '') .replace('--loader=ts-node/esm', '') .split(' ') .filter(Boolean), - // Remove --loader ts-node/esm from execArgv so that the subprocess doesn't fail if it can't find ts-node. stdio: [0, null, null, 'ipc'], } From 5ef2429c3d9a5735eb4d739d3d41ae26ff54074b Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Mon, 23 Oct 2023 19:53:49 +0000 Subject: [PATCH 27/39] chore(release): 3.9.4-qa.1 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 46d951c3..28ddbc2d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oclif/plugin-plugins", "description": "plugins plugin for oclif", - "version": "3.9.4-qa.0", + "version": "3.9.4-qa.1", "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { From 2be40c442c44274a2c664245acb7ffc36c19a28f Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Mon, 23 Oct 2023 14:00:55 -0600 Subject: [PATCH 28/39] fix: prevent circular json --- src/commands/plugins/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/plugins/index.ts b/src/commands/plugins/index.ts index bc718720..b5231206 100644 --- a/src/commands/plugins/index.ts +++ b/src/commands/plugins/index.ts @@ -46,7 +46,7 @@ export default class PluginsIndex extends Command { this.displayJitPlugins(jitPlugins) } - return [...results, ...jitPlugins] + return [...results.filter((p) => !p.parent), ...jitPlugins] } private createTree(plugin: Plugin) { From aa86e2ae6ad3f7fe073103fa15ec50dbdf141d70 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Mon, 23 Oct 2023 14:06:36 -0600 Subject: [PATCH 29/39] fix: resolve yarn from plugin and config.root --- src/yarn.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/yarn.ts b/src/yarn.ts index d5caa402..d4498f0e 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -3,6 +3,7 @@ import makeDebug from 'debug' import {fork} from 'node:child_process' import {createRequire} from 'node:module' import {join} from 'node:path' +import {fileURLToPath} from 'node:url' import NpmRunPath from 'npm-run-path' import {WarningsCache} from './util.js' @@ -24,7 +25,8 @@ export default class Yarn { constructor({config}: {config: Interfaces.Config}) { this.config = config - this.bin = require.resolve('yarn/bin/yarn.js') + this.bin = require.resolve('yarn/bin/yarn.js', {paths: [fileURLToPath(import.meta.url), config.root]}) + debug('yarn binary path', this.bin) } async exec(args: string[] = [], opts: YarnExecOptions): Promise { From f68c98c8da5d92dfad1d259f81c89d044cdfd033 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Mon, 23 Oct 2023 20:08:49 +0000 Subject: [PATCH 30/39] chore(release): 3.9.4-qa.2 [skip ci] --- README.md | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 71095cd4..bfe49570 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ EXAMPLES $ mycli plugins ``` -_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/index.ts)_ +_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/index.ts)_ ## `mycli plugins:inspect PLUGIN...` @@ -143,7 +143,7 @@ EXAMPLES $ mycli plugins:inspect myplugin ``` -_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/inspect.ts)_ +_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/inspect.ts)_ ## `mycli plugins:install PLUGIN...` @@ -184,7 +184,7 @@ EXAMPLES $ mycli plugins:install someuser/someplugin ``` -_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/install.ts)_ +_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/install.ts)_ ## `mycli plugins:link PLUGIN` @@ -214,7 +214,7 @@ EXAMPLES $ mycli plugins:link myplugin ``` -_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/link.ts)_ +_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/link.ts)_ ## `mycli plugins:uninstall PLUGIN...` @@ -239,7 +239,7 @@ ALIASES $ mycli plugins remove ``` -_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/uninstall.ts)_ +_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/uninstall.ts)_ ## `mycli plugins update` @@ -257,6 +257,6 @@ DESCRIPTION Update installed plugins. ``` -_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.0/src/commands/plugins/update.ts)_ +_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/update.ts)_ diff --git a/package.json b/package.json index 28ddbc2d..c8db1915 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oclif/plugin-plugins", "description": "plugins plugin for oclif", - "version": "3.9.4-qa.1", + "version": "3.9.4-qa.2", "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { From e803fe179c05b947aa9307880ddc34fa214ebb9d Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Mon, 23 Oct 2023 14:30:26 -0600 Subject: [PATCH 31/39] fix: dont cache yarn bin on class --- src/yarn.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/yarn.ts b/src/yarn.ts index d4498f0e..21d39ca1 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -3,7 +3,6 @@ import makeDebug from 'debug' import {fork} from 'node:child_process' import {createRequire} from 'node:module' import {join} from 'node:path' -import {fileURLToPath} from 'node:url' import NpmRunPath from 'npm-run-path' import {WarningsCache} from './util.js' @@ -20,16 +19,15 @@ type YarnExecOptions = { } export default class Yarn { - private bin: string private config: Interfaces.Config constructor({config}: {config: Interfaces.Config}) { this.config = config - this.bin = require.resolve('yarn/bin/yarn.js', {paths: [fileURLToPath(import.meta.url), config.root]}) - debug('yarn binary path', this.bin) } async exec(args: string[] = [], opts: YarnExecOptions): Promise { + const bin = require.resolve('yarn/bin/yarn.js') + debug('yarn binary path', bin) const {cwd, silent, verbose} = opts if (args[0] !== 'run') { // https://classic.yarnpkg.com/lang/en/docs/cli/#toc-concurrency-and-mutex @@ -68,12 +66,12 @@ export default class Yarn { } if (verbose) { - process.stderr.write(`${cwd}: ${this.bin} ${args.join(' ')}`) + process.stderr.write(`${cwd}: ${bin} ${args.join(' ')}`) } - debug(`${cwd}: ${this.bin} ${args.join(' ')}`) + debug(`${cwd}: ${bin} ${args.join(' ')}`) try { - await this.fork(this.bin, args, options) + await this.fork(bin, args, options) debug('yarn done') } catch (error: unknown) { const {message} = error as Error & {message: string} From cb39c84bf8a014baae92de71f418e59790ea12bb Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Mon, 23 Oct 2023 20:32:43 +0000 Subject: [PATCH 32/39] chore(release): 3.9.4-qa.3 [skip ci] --- README.md | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index bfe49570..92fd5452 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ EXAMPLES $ mycli plugins ``` -_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/index.ts)_ +_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/index.ts)_ ## `mycli plugins:inspect PLUGIN...` @@ -143,7 +143,7 @@ EXAMPLES $ mycli plugins:inspect myplugin ``` -_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/inspect.ts)_ +_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/inspect.ts)_ ## `mycli plugins:install PLUGIN...` @@ -184,7 +184,7 @@ EXAMPLES $ mycli plugins:install someuser/someplugin ``` -_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/install.ts)_ +_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/install.ts)_ ## `mycli plugins:link PLUGIN` @@ -214,7 +214,7 @@ EXAMPLES $ mycli plugins:link myplugin ``` -_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/link.ts)_ +_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/link.ts)_ ## `mycli plugins:uninstall PLUGIN...` @@ -239,7 +239,7 @@ ALIASES $ mycli plugins remove ``` -_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/uninstall.ts)_ +_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/uninstall.ts)_ ## `mycli plugins update` @@ -257,6 +257,6 @@ DESCRIPTION Update installed plugins. ``` -_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.2/src/commands/plugins/update.ts)_ +_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/update.ts)_ diff --git a/package.json b/package.json index c8db1915..99792bd7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oclif/plugin-plugins", "description": "plugins plugin for oclif", - "version": "3.9.4-qa.2", + "version": "3.9.4-qa.3", "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { From 5b58de1f4a3033cd33e09b769ed7b737b8b40d36 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Mon, 23 Oct 2023 14:39:19 -0600 Subject: [PATCH 33/39] fix: check config root for yarn --- src/yarn.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/yarn.ts b/src/yarn.ts index 21d39ca1..9e517987 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -3,6 +3,7 @@ import makeDebug from 'debug' import {fork} from 'node:child_process' import {createRequire} from 'node:module' import {join} from 'node:path' +import {fileURLToPath} from 'node:url' import NpmRunPath from 'npm-run-path' import {WarningsCache} from './util.js' @@ -26,7 +27,7 @@ export default class Yarn { } async exec(args: string[] = [], opts: YarnExecOptions): Promise { - const bin = require.resolve('yarn/bin/yarn.js') + const bin = require.resolve('yarn/bin/yarn.js', {paths: [this.config.root, fileURLToPath(import.meta.url)]}) debug('yarn binary path', bin) const {cwd, silent, verbose} = opts if (args[0] !== 'run') { From 05e7a7e35f6d255a195cacf71c980435f48cff66 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Mon, 23 Oct 2023 20:40:23 +0000 Subject: [PATCH 34/39] chore(release): 3.9.4-qa.4 [skip ci] --- README.md | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 92fd5452..dfc8fe5d 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ EXAMPLES $ mycli plugins ``` -_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/index.ts)_ +_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/index.ts)_ ## `mycli plugins:inspect PLUGIN...` @@ -143,7 +143,7 @@ EXAMPLES $ mycli plugins:inspect myplugin ``` -_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/inspect.ts)_ +_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/inspect.ts)_ ## `mycli plugins:install PLUGIN...` @@ -184,7 +184,7 @@ EXAMPLES $ mycli plugins:install someuser/someplugin ``` -_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/install.ts)_ +_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/install.ts)_ ## `mycli plugins:link PLUGIN` @@ -214,7 +214,7 @@ EXAMPLES $ mycli plugins:link myplugin ``` -_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/link.ts)_ +_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/link.ts)_ ## `mycli plugins:uninstall PLUGIN...` @@ -239,7 +239,7 @@ ALIASES $ mycli plugins remove ``` -_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/uninstall.ts)_ +_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/uninstall.ts)_ ## `mycli plugins update` @@ -257,6 +257,6 @@ DESCRIPTION Update installed plugins. ``` -_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.3/src/commands/plugins/update.ts)_ +_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/update.ts)_ diff --git a/package.json b/package.json index 99792bd7..b5399e44 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oclif/plugin-plugins", "description": "plugins plugin for oclif", - "version": "3.9.4-qa.3", + "version": "3.9.4-qa.4", "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { From aacc034adbfdfd39523e32b57d62f566bed25b9f Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Tue, 24 Oct 2023 11:15:58 -0600 Subject: [PATCH 35/39] chore: bump oclif/core --- package.json | 2 +- test/integration/install.integration.ts | 49 ++++++++++++------------- test/integration/link.integration.ts | 12 +++--- yarn.lock | 33 ++++++++++++++++- 4 files changed, 63 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index b5399e44..1e3cf53a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": { - "@oclif/core": "^3.4.0", + "@oclif/core": "^3.7.1", "chalk": "^5.3.0", "debug": "^4.3.4", "npm": "9.8.1", diff --git a/test/integration/install.integration.ts b/test/integration/install.integration.ts index 4a9dd81f..0c9a08e7 100644 --- a/test/integration/install.integration.ts +++ b/test/integration/install.integration.ts @@ -1,11 +1,10 @@ -import {ux} from '@oclif/core' -import {CLIError} from '@oclif/core/lib/errors/index.js' +import {Errors, ux} from '@oclif/core' import {expect} from 'chai' import chalk from 'chalk' import {existsSync} from 'node:fs' import {rm} from 'node:fs/promises' import {join, resolve} from 'node:path' -import {SinonSandbox, createSandbox, match} from 'sinon' +import {SinonSandbox, SinonStub, createSandbox, match} from 'sinon' import PluginsIndex from '../../src/commands/plugins/index.js' import PluginsInstall from '../../src/commands/plugins/install.js' @@ -13,7 +12,7 @@ import PluginsUninstall from '../../src/commands/plugins/uninstall.js' describe('install/uninstall integration tests', () => { let sandbox: SinonSandbox - let stubs: ReturnType + let stdoutStub: SinonStub const tmp = resolve('tmp', 'install-integration') const cacheDir = join(tmp, 'plugin-plugins-tests', 'cache') @@ -41,7 +40,7 @@ describe('install/uninstall integration tests', () => { beforeEach(() => { sandbox = createSandbox() - stubs = ux.makeStubs(sandbox) + stdoutStub = sandbox.stub(ux.write, 'stdout') process.env.MYCLI_CACHE_DIR = cacheDir process.env.MYCLI_CONFIG_DIR = configDir process.env.MYCLI_DATA_DIR = dataDir @@ -58,14 +57,14 @@ describe('install/uninstall integration tests', () => { describe('basic', () => { it('should return "No Plugins" if no plugins are installed', async () => { await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true }) it('should install plugin', async () => { await PluginsInstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -73,7 +72,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -83,7 +82,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['@oclif/plugin-test-esm-1@latest'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -91,7 +90,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1@latest'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -101,7 +100,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['aliasme'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -109,7 +108,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -119,7 +118,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true // test that the plugin was compiled after install (only applies to github installs) @@ -131,7 +130,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -141,7 +140,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true // test that the plugin was compiled after install (only applies to github installs) @@ -153,7 +152,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -163,8 +162,8 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['https://github.com/oclif/plugin-test-esm-1.git#0.5.4'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true - expect(stubs.stdout.calledWith(match('0.5.4'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('0.5.4'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true // test that the plugin was compiled after install (only applies to github installs) @@ -176,7 +175,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@oclif/plugin-test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) @@ -186,7 +185,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['@salesforce/plugin-custom-metadata'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('@salesforce/plugin-custom-metadata'))).to.be.true + expect(stdoutStub.calledWith(match('@salesforce/plugin-custom-metadata'))).to.be.true expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.true }) @@ -194,7 +193,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['@salesforce/plugin-custom-metadata'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@salesforce/plugin-custom-metadata')).to.be.false }) }) @@ -206,7 +205,7 @@ describe('install/uninstall integration tests', () => { } catch {} const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/DOES_NOT_EXIST')).to.be.false }) @@ -214,7 +213,7 @@ describe('install/uninstall integration tests', () => { try { await PluginsUninstall.run(['@oclif/DOES_NOT_EXIST'], cwd) } catch (error) { - const err = error as CLIError + const err = error as Errors.CLIError expect(err.message).to.equal('@oclif/DOES_NOT_EXIST is not installed') } }) @@ -225,7 +224,7 @@ describe('install/uninstall integration tests', () => { await PluginsInstall.run(['test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith(match('test-esm-1'))).to.be.true + expect(stdoutStub.calledWith(match('test-esm-1'))).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -233,7 +232,7 @@ describe('install/uninstall integration tests', () => { await PluginsUninstall.run(['test-esm-1'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.calledWith('No plugins installed.\n')).to.be.true + expect(stdoutStub.calledWith('No plugins installed.\n')).to.be.true expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.false }) }) diff --git a/test/integration/link.integration.ts b/test/integration/link.integration.ts index 53eb7b6f..57e5acac 100644 --- a/test/integration/link.integration.ts +++ b/test/integration/link.integration.ts @@ -4,7 +4,7 @@ import {exec as cpExec} from 'node:child_process' import {rm} from 'node:fs/promises' import {tmpdir} from 'node:os' import {join} from 'node:path' -import {SinonSandbox, createSandbox} from 'sinon' +import {SinonSandbox, SinonStub, createSandbox} from 'sinon' import PluginsIndex from '../../src/commands/plugins/index.js' import PluginsLink from '../../src/commands/plugins/link.js' @@ -21,7 +21,7 @@ async function exec(cmd: string, opts?: {cwd?: string}) { describe('link/unlink integration tests', () => { let sandbox: SinonSandbox - let stubs: ReturnType + let stdoutStub: SinonStub const cacheDir = join(tmpdir(), 'plugin-plugins-tests', 'cache') const configDir = join(tmpdir(), 'plugin-plugins-tests', 'config') @@ -50,7 +50,7 @@ describe('link/unlink integration tests', () => { beforeEach(() => { sandbox = createSandbox() - stubs = ux.makeStubs(sandbox) + stdoutStub = sandbox.stub(ux.write, 'stdout') process.env.MYCLI_CACHE_DIR = cacheDir process.env.MYCLI_CONFIG_DIR = configDir process.env.MYCLI_DATA_DIR = dataDir @@ -66,14 +66,14 @@ describe('link/unlink integration tests', () => { it('should return "No Plugins" if no plugins are linked', async () => { await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stdoutStub.firstCall.firstArg).to.equal('No plugins installed.\n') }) it('should link plugin', async () => { await PluginsLink.run([pluginDir, '--no-install'], cwd) const result = await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.include('test-esm-1') + expect(stdoutStub.firstCall.firstArg).to.include('test-esm-1') expect(result.some((r) => r.name === '@oclif/plugin-test-esm-1')).to.be.true }) @@ -81,6 +81,6 @@ describe('link/unlink integration tests', () => { await PluginsUninstall.run([pluginDir], cwd) await PluginsIndex.run([], cwd) - expect(stubs.stdout.firstCall.firstArg).to.equal('No plugins installed.\n') + expect(stdoutStub.firstCall.firstArg).to.equal('No plugins installed.\n') }) }) diff --git a/yarn.lock b/yarn.lock index 87f880d5..24b50ae1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -651,7 +651,7 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/core@^3.0.4", "@oclif/core@^3.2.1", "@oclif/core@^3.4.0": +"@oclif/core@^3.0.4", "@oclif/core@^3.2.1": version "3.4.0" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.4.0.tgz#5400ad77061b4828e2d1b70c5091b38bf25ed389" integrity sha512-+5S7xBa8zPE0iaStTwLgPWP2xwp17bCypMruJW8rti3rueF/4dR+4JHZ6izbRjWGbtD20Ty3nt3e/UhpCYMVQQ== @@ -682,6 +682,37 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" +"@oclif/core@^3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.7.1.tgz#42ee427261d10fc404c999bb0ac9021af69843c3" + integrity sha512-dBfx45jPyKjt7vdFPo7Byt0MbMoL3Pxm7UrnQAGSxocA/yK1UYrdtkzgZd+9Cntpaw5KRVPxB7crIETMFF7WRQ== + dependencies: + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.12.0" + debug "^4.3.4" + ejs "^3.1.9" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + "@oclif/plugin-help@^5.2.14": version "5.2.20" resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.2.20.tgz#4035a0ac231f95fb8e334da342175e3ca00f6abc" From b462f16f8afc84c91e4506919613827ecb44a555 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Wed, 25 Oct 2023 14:46:34 -0600 Subject: [PATCH 36/39] fix: improve install warnings --- src/commands/plugins/install.ts | 8 ++--- src/commands/plugins/link.ts | 4 +-- src/commands/plugins/uninstall.ts | 4 +-- src/commands/plugins/update.ts | 4 +-- src/plugins.ts | 4 +-- src/util.ts | 54 ++++++++++++++++++++++++------- src/yarn.ts | 33 ++++++++++--------- 7 files changed, 72 insertions(+), 39 deletions(-) diff --git a/src/commands/plugins/install.ts b/src/commands/plugins/install.ts index cee9e10a..7bd9908a 100644 --- a/src/commands/plugins/install.ts +++ b/src/commands/plugins/install.ts @@ -4,7 +4,7 @@ import chalk from 'chalk' import validate from 'validate-npm-package-name' import Plugins from '../../plugins.js' -import {WarningsCache} from '../../util.js' +import {YarnMessagesCache} from '../../util.js' export default class PluginsInstall extends Command { static aliases = ['plugins:add'] @@ -157,15 +157,15 @@ e.g. If you have a core plugin that has a 'hello' command, installing a user-ins } } catch (error) { ux.action.stop(chalk.bold.red('failed')) - WarningsCache.getInstance().flush() + YarnMessagesCache.getInstance().flush(plugin) throw error } ux.action.stop(`installed v${plugin.version}`) - WarningsCache.getInstance().flush() + YarnMessagesCache.getInstance().flush(plugin) - ux.log(chalk.green(`Successfully installed ${plugin.name} v${plugin.version}`)) + ux.log(chalk.green(`\nSuccessfully installed ${plugin.name} v${plugin.version}`)) } } } diff --git a/src/commands/plugins/link.ts b/src/commands/plugins/link.ts index 08d35a5c..a6915c15 100644 --- a/src/commands/plugins/link.ts +++ b/src/commands/plugins/link.ts @@ -2,7 +2,7 @@ import {Args, Command, Flags, ux} from '@oclif/core' import chalk from 'chalk' import Plugins from '../../plugins.js' -import {WarningsCache} from '../../util.js' +import {YarnMessagesCache} from '../../util.js' export default class PluginsLink extends Command { static args = { @@ -38,6 +38,6 @@ e.g. If you have a user-installed or core plugin that has a 'hello' command, ins await this.plugins.link(args.path, {install: flags.install}) ux.action.stop() - WarningsCache.getInstance().flush() + YarnMessagesCache.getInstance().flush() } } diff --git a/src/commands/plugins/uninstall.ts b/src/commands/plugins/uninstall.ts index 09c24116..a5e22922 100644 --- a/src/commands/plugins/uninstall.ts +++ b/src/commands/plugins/uninstall.ts @@ -3,7 +3,7 @@ import {Args, Command, Flags, ux} from '@oclif/core' import chalk from 'chalk' import Plugins from '../../plugins.js' -import {WarningsCache} from '../../util.js' +import {YarnMessagesCache} from '../../util.js' function removeTags(plugin: string): string { if (plugin.includes('@')) { @@ -76,7 +76,7 @@ export default class PluginsUninstall extends Command { ux.action.stop() - WarningsCache.getInstance().flush() + YarnMessagesCache.getInstance().flush() } } } diff --git a/src/commands/plugins/update.ts b/src/commands/plugins/update.ts index caffa1ab..ee9e05fe 100644 --- a/src/commands/plugins/update.ts +++ b/src/commands/plugins/update.ts @@ -1,7 +1,7 @@ import {Command, Flags, ux} from '@oclif/core' import Plugins from '../../plugins.js' -import {WarningsCache} from '../../util.js' +import {YarnMessagesCache} from '../../util.js' export default class PluginsUpdate extends Command { static description = 'Update installed plugins.' @@ -22,6 +22,6 @@ export default class PluginsUpdate extends Command { ux.action.stop() - WarningsCache.getInstance().flush() + YarnMessagesCache.getInstance().flush() } } diff --git a/src/plugins.ts b/src/plugins.ts index 3ee70ca6..d400ec3a 100644 --- a/src/plugins.ts +++ b/src/plugins.ts @@ -214,8 +214,8 @@ export default class Plugins { await this.yarn.exec(options.prod ? ['--prod'] : [], { cwd: root, noSpinner: true, - silent: this.silent, - verbose: this.verbose, + silent: true, + verbose: false, }) } diff --git a/src/util.ts b/src/util.ts index 27e461d2..34d8dca2 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,4 +1,4 @@ -import {ux} from '@oclif/core' +import {Interfaces, ux} from '@oclif/core' import * as fs from 'node:fs' import * as fsPromises from 'node:fs/promises' import {createRequire} from 'node:module' @@ -96,26 +96,56 @@ export async function findNpm(): Promise { return path.join(npmPath, npmPjson.bin.npm) } -export class WarningsCache { - private static cache = new Set() - private static instance: WarningsCache - public static getInstance(): WarningsCache { - if (!WarningsCache.instance) { - WarningsCache.instance = new WarningsCache() +export class YarnMessagesCache { + private static errors = new Set() + private static instance: YarnMessagesCache + private static warnings = new Set() + public static getInstance(): YarnMessagesCache { + if (!YarnMessagesCache.instance) { + YarnMessagesCache.instance = new YarnMessagesCache() } - return WarningsCache.instance + return YarnMessagesCache.instance } - public add(...warnings: string[]): void { + public addErrors(...errors: string[]): void { + for (const err of errors) { + YarnMessagesCache.errors.add(err) + } + } + + public addWarnings(...warnings: string[]): void { for (const warning of warnings) { - WarningsCache.cache.add(warning) + // Skip workspaces warning because it's likely the fault of a transitive dependency and not actionable + // https://github.com/yarnpkg/yarn/issues/8580 + if (warning.includes('Workspaces can only be enabled in private projects.')) continue + YarnMessagesCache.warnings.add(warning) } } - public flush(): void { - for (const warning of WarningsCache.cache) { + public flush(plugin?: Interfaces.Config | undefined): void { + if (YarnMessagesCache.warnings.size === 0) return + + for (const warning of YarnMessagesCache.warnings) { ux.warn(warning) } + + if (plugin) { + ux.log(`\nThese warnings can only be addressed by the owner(s) of ${plugin.name}.`) + + if (plugin.pjson.bugs || plugin.pjson.repository) { + ux.log( + `We suggest that you create an issue at ${ + plugin.pjson.bugs ?? plugin.pjson.repository + } and ask the plugin owners to address them.\n`, + ) + } + } + + if (YarnMessagesCache.errors.size === 0) return + ux.log('\nThe following errors occurred:') + for (const err of YarnMessagesCache.errors) { + ux.error(err, {exit: false}) + } } } diff --git a/src/yarn.ts b/src/yarn.ts index 9e517987..1a40a4f3 100644 --- a/src/yarn.ts +++ b/src/yarn.ts @@ -6,7 +6,7 @@ import {join} from 'node:path' import {fileURLToPath} from 'node:url' import NpmRunPath from 'npm-run-path' -import {WarningsCache} from './util.js' +import {YarnMessagesCache} from './util.js' const debug = makeDebug('cli:yarn') @@ -89,26 +89,29 @@ export default class Yarn { } fork(modulePath: string, args: string[] = [], options: YarnExecOptions): Promise { - const cache = WarningsCache.getInstance() + const cache = YarnMessagesCache.getInstance() return new Promise((resolve, reject) => { // YARN_IGNORE_PATH=1 prevents yarn from resolving to the globally configured yarn binary. // In other words, it ensures that it resolves to the yarn binary that is available in the node_modules directory. const forked = fork(modulePath, args, {...options, env: {...process.env, YARN_IGNORE_PATH: '1'}}) forked.stderr?.on('data', (d: Buffer) => { - if (!options.silent) - cache.add( - ...d - .toString() - .split('\n') - .map((i) => - i - .trim() - .replace(/^warning/, '') - .trim(), - ) - .filter(Boolean), - ) + if (!options.silent) { + const str = d.toString() + if (str.startsWith('error')) cache.addErrors(str) + else + cache.addWarnings( + ...str + .split('\n') + .map((i) => + i + .trim() + .replace(/^warning/, '') + .trim(), + ) + .filter(Boolean), + ) + } }) forked.stdout?.setEncoding('utf8') forked.stdout?.on('data', (d) => { From 9d3a91645cdddfd208238fe02db96fc09b0baa57 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 26 Oct 2023 08:53:30 -0600 Subject: [PATCH 37/39] test: --no-install on link --- test/integration/sf.integration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/sf.integration.ts b/test/integration/sf.integration.ts index 54d34e58..eb525e86 100644 --- a/test/integration/sf.integration.ts +++ b/test/integration/sf.integration.ts @@ -50,7 +50,7 @@ describe('sf Integration', () => { } } catch {} - await exec('sf plugins link') + await exec('sf plugins link --no-install') const {stdout} = await exec('sf plugins --core') expect(stdout).to.contain('@oclif/plugin-plugins') expect(stdout).to.contain(`(link) ${process.cwd()}`) From f4bb41e4a2027f23b29dccb8f01bc23112d6c6be Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 26 Oct 2023 09:09:02 -0600 Subject: [PATCH 38/39] test: use lts --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7e3edef3..66a01be9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: latest + node-version: lts/* - name: Install sf uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd with: From a67753f0bd124562b3d6ff716ae2971395f30fc7 Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Thu, 26 Oct 2023 15:55:50 +0000 Subject: [PATCH 39/39] chore(release): 3.9.4-qa.5 [skip ci] --- README.md | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dfc8fe5d..58b9fac7 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ EXAMPLES $ mycli plugins ``` -_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/index.ts)_ +_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/3.9.5-qa.0/src/commands/plugins/index.ts)_ ## `mycli plugins:inspect PLUGIN...` @@ -143,7 +143,7 @@ EXAMPLES $ mycli plugins:inspect myplugin ``` -_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/inspect.ts)_ +_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/3.9.5-qa.0/src/commands/plugins/inspect.ts)_ ## `mycli plugins:install PLUGIN...` @@ -184,7 +184,7 @@ EXAMPLES $ mycli plugins:install someuser/someplugin ``` -_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/install.ts)_ +_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/3.9.5-qa.0/src/commands/plugins/install.ts)_ ## `mycli plugins:link PLUGIN` @@ -214,7 +214,7 @@ EXAMPLES $ mycli plugins:link myplugin ``` -_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/link.ts)_ +_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/3.9.5-qa.0/src/commands/plugins/link.ts)_ ## `mycli plugins:uninstall PLUGIN...` @@ -239,7 +239,7 @@ ALIASES $ mycli plugins remove ``` -_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/uninstall.ts)_ +_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/3.9.5-qa.0/src/commands/plugins/uninstall.ts)_ ## `mycli plugins update` @@ -257,6 +257,6 @@ DESCRIPTION Update installed plugins. ``` -_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.4-qa.4/src/commands/plugins/update.ts)_ +_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/3.9.5-qa.0/src/commands/plugins/update.ts)_ diff --git a/package.json b/package.json index 1e3cf53a..791ac9b1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@oclif/plugin-plugins", "description": "plugins plugin for oclif", - "version": "3.9.4-qa.4", + "version": "3.9.4-qa.5", "author": "Salesforce", "bugs": "https://github.com/oclif/plugin-plugins/issues", "dependencies": {