├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── build-lint-test.yml │ ├── create-release-pr.yml │ ├── publish-release.yml │ └── security-code-scanner.yml ├── .gitignore ├── .nvmrc ├── .prettierrc.js ├── .yarnrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package.json ├── src ├── ComposedStore.ts ├── MergedStore.ts ├── ObservableStore.ts ├── asStream.ts ├── index.ts ├── readable-stream.d.ts └── transform.ts ├── test ├── basic.ts ├── composed.ts ├── merged.ts ├── stream.ts └── transform.ts ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['@metamask/eslint-config'], 4 | overrides: [ 5 | { 6 | files: ['*.js'], 7 | env: { 8 | commonjs: true, 9 | }, 10 | }, 11 | { 12 | files: ['*.ts'], 13 | extends: ['@metamask/eslint-config-typescript'], 14 | }, 15 | { 16 | files: ['*.d.ts'], 17 | rules: { 18 | 'import/unambiguous': 'off', 19 | }, 20 | }, 21 | ], 22 | ignorePatterns: ['!.eslintrc.js', 'dist/'], 23 | }; 24 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | yarn.lock linguist-generated=false 4 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Lines starting with '#' are comments. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | * @MetaMask/devs 5 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Please see the documentation for all configuration options: 2 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 3 | 4 | version: 2 5 | updates: 6 | - package-ecosystem: 'npm' 7 | directory: '/' 8 | schedule: 9 | interval: 'daily' 10 | time: '06:00' 11 | allow: 12 | - dependency-name: '@metamask/*' 13 | target-branch: 'main' 14 | versioning-strategy: 'increase-if-necessary' 15 | open-pull-requests-limit: 10 16 | -------------------------------------------------------------------------------- /.github/workflows/build-lint-test.yml: -------------------------------------------------------------------------------- 1 | name: Build, Lint, and Test 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | 8 | jobs: 9 | build-lint-test: 10 | name: Build, Lint, and Test 11 | runs-on: ubuntu-latest 12 | strategy: 13 | matrix: 14 | node-version: [14.x, 16.x, 18.x, 20.x] 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Use Node.js ${{ matrix.node-version }} 18 | uses: actions/setup-node@v2 19 | with: 20 | node-version: ${{ matrix.node-version }} 21 | - name: Get Yarn cache directory 22 | run: echo "::set-output name=YARN_CACHE_DIR::$(yarn cache dir)" 23 | id: yarn-cache-dir 24 | - name: Get Yarn version 25 | run: echo "::set-output name=YARN_VERSION::$(yarn --version)" 26 | id: yarn-version 27 | - name: Cache yarn dependencies 28 | uses: actions/cache@v2 29 | with: 30 | path: ${{ steps.yarn-cache-dir.outputs.YARN_CACHE_DIR }} 31 | key: yarn-cache-${{ runner.os }}-${{ steps.yarn-version.outputs.YARN_VERSION }}-${{ hashFiles('yarn.lock') }} 32 | - run: yarn --frozen-lockfile 33 | - run: yarn allow-scripts 34 | - run: yarn build 35 | - run: yarn lint 36 | - run: yarn test 37 | - name: Validate RC changelog 38 | if: ${{ startsWith(github.ref, 'release/') }} 39 | run: yarn auto-changelog validate --rc 40 | - name: Validate changelog 41 | if: ${{ !startsWith(github.ref, 'release/') }} 42 | run: yarn auto-changelog validate 43 | all-jobs-pass: 44 | name: All jobs pass 45 | runs-on: ubuntu-latest 46 | needs: 47 | - build-lint-test 48 | steps: 49 | - run: echo "Great success!" 50 | -------------------------------------------------------------------------------- /.github/workflows/create-release-pr.yml: -------------------------------------------------------------------------------- 1 | name: Create Release Pull Request 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | base-branch: 7 | description: 'The base branch for git operations and the pull request.' 8 | default: 'main' 9 | required: true 10 | release-type: 11 | description: 'A SemVer version diff, i.e. major, minor, patch, prerelease etc. Mutually exclusive with "release-version".' 12 | required: false 13 | release-version: 14 | description: 'A specific version to bump to. Mutually exclusive with "release-type".' 15 | required: false 16 | 17 | jobs: 18 | create-release-pr: 19 | runs-on: ubuntu-latest 20 | permissions: 21 | contents: write 22 | pull-requests: write 23 | steps: 24 | - uses: actions/checkout@v2 25 | with: 26 | # This is to guarantee that the most recent tag is fetched. 27 | # This can be configured to a more reasonable value by consumers. 28 | fetch-depth: 0 29 | # We check out the specified branch, which will be used as the base 30 | # branch for all git operations and the release PR. 31 | ref: ${{ github.event.inputs.base-branch }} 32 | - name: Get Node.js version 33 | id: nvm 34 | run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc) 35 | - uses: actions/setup-node@v2 36 | with: 37 | node-version: ${{ steps.nvm.outputs.NODE_VERSION }} 38 | - uses: MetaMask/action-create-release-pr@v1 39 | env: 40 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 41 | with: 42 | release-type: ${{ github.event.inputs.release-type }} 43 | release-version: ${{ github.event.inputs.release-version }} 44 | -------------------------------------------------------------------------------- /.github/workflows/publish-release.yml: -------------------------------------------------------------------------------- 1 | name: Publish Release 2 | 3 | on: 4 | pull_request: 5 | types: [closed] 6 | 7 | jobs: 8 | publish-release: 9 | permissions: 10 | contents: write 11 | if: | 12 | github.event.pull_request.merged == true && 13 | startsWith(github.event.pull_request.head.ref, 'release/') 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v2 17 | with: 18 | # We check out the release pull request's base branch, which will be 19 | # used as the base branch for all git operations. 20 | ref: ${{ github.event.pull_request.base.ref }} 21 | - name: Get Node.js version 22 | id: nvm 23 | run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc) 24 | - uses: actions/setup-node@v2 25 | with: 26 | node-version: ${{ steps.nvm.outputs.NODE_VERSION }} 27 | - uses: MetaMask/action-publish-release@v1 28 | env: 29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | -------------------------------------------------------------------------------- /.github/workflows/security-code-scanner.yml: -------------------------------------------------------------------------------- 1 | name: MetaMask Security Code Scanner 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | workflow_dispatch: 11 | 12 | jobs: 13 | run-security-scan: 14 | runs-on: ubuntu-latest 15 | permissions: 16 | actions: read 17 | contents: read 18 | security-events: write 19 | steps: 20 | - name: MetaMask Security Code Scanner 21 | uses: MetaMask/Security-Code-Scanner@main 22 | with: 23 | repo: ${{ github.repository }} 24 | paths_ignored: | 25 | .storybook/ 26 | '**/__snapshots__/' 27 | '**/*.snap' 28 | '**/*.stories.js' 29 | '**/*.stories.tsx' 30 | '**/*.test.browser.ts*' 31 | '**/*.test.js*' 32 | '**/*.test.ts*' 33 | '**/fixtures/' 34 | '**/jest.config.js' 35 | '**/jest.environment.js' 36 | '**/mocks/' 37 | '**/test*/' 38 | docs/ 39 | e2e/ 40 | merged-packages/ 41 | node_modules 42 | storybook/ 43 | test*/ 44 | rules_excluded: example 45 | project_metrics_token: ${{ secrets.SECURITY_SCAN_METRICS_TOKEN }} 46 | slack_webhook: ${{ secrets.APPSEC_BOT_SLACK_WEBHOOK }} 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | package-lock.json 3 | 4 | # Created by https://www.gitignore.io/api/osx,node 5 | 6 | ### OSX ### 7 | *.DS_Store 8 | .AppleDouble 9 | .LSOverride 10 | 11 | # Icon must end with two \r 12 | Icon 13 | # Thumbnails 14 | ._* 15 | # Files that might appear in the root of a volume 16 | .DocumentRevisions-V100 17 | .fseventsd 18 | .Spotlight-V100 19 | .TemporaryItems 20 | .Trashes 21 | .VolumeIcon.icns 22 | .com.apple.timemachine.donotpresent 23 | # Directories potentially created on remote AFP share 24 | .AppleDB 25 | .AppleDesktop 26 | Network Trash Folder 27 | Temporary Items 28 | .apdisk 29 | 30 | 31 | ### Node ### 32 | # Logs 33 | logs 34 | *.log 35 | npm-debug.log* 36 | 37 | # Runtime data 38 | pids 39 | *.pid 40 | *.seed 41 | *.pid.lock 42 | 43 | # Directory for instrumented libs generated by jscoverage/JSCover 44 | lib-cov 45 | 46 | # Coverage directory used by tools like istanbul 47 | coverage 48 | 49 | # nyc test coverage 50 | .nyc_output 51 | 52 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 53 | .grunt 54 | 55 | # node-waf configuration 56 | .lock-wscript 57 | 58 | # Compiled binary addons (http://nodejs.org/api/addons.html) 59 | build/Release 60 | 61 | # Dependency directories 62 | node_modules 63 | jspm_packages 64 | 65 | # Optional npm cache directory 66 | .npm 67 | 68 | # Optional eslint cache 69 | .eslintcache 70 | 71 | # Optional REPL history 72 | .node_repl_history 73 | 74 | # Output of 'npm pack' 75 | *.tgz 76 | 77 | # Yarn Integrity file 78 | .yarn-integrity 79 | 80 | 81 | # End of https://www.gitignore.io/api/osx,node 82 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v18 2 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | // All of these are defaults except singleQuote, but we specify them 2 | // for explicitness 3 | module.exports = { 4 | quoteProps: 'as-needed', 5 | singleQuote: true, 6 | tabWidth: 2, 7 | trailingComma: 'all', 8 | }; 9 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | ignore-scripts true 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 | 7 | ## [Unreleased] 8 | 9 | ## [9.1.0] 10 | ### Changed 11 | - Support overriding default Stream options in ObservableStoreStream constructor, storeTransformStream, and storeAsStream ([#110](https://github.com/MetaMask/obs-store/pull/110)) 12 | 13 | ## [9.0.0] 14 | ### Changed 15 | - **BREAKING**: Bump minimum Node.js version to 14 ([#92](https://github.com/MetaMask/obs-store/pull/92)) 16 | - **BREAKING**: Use `readable-stream@^3.6.2` for streams ([#96](https://github.com/MetaMask/obs-store/pull/96)) 17 | 18 | ## [8.1.1] 19 | ### Changed 20 | - Bump `@metamask/safe-event-emitter` from `2.0.0` to `3.0.0` ([#85](https://github.com/MetaMask/obs-store/pull/85)) 21 | 22 | ## [8.1.0] 23 | ### Added 24 | - Loosen ComposedStore type so that it can be used to compose stores that hold primitives instead of objects ([#81](https://github.com/MetaMask/obs-store/pull/81)) 25 | 26 | ## [8.0.0] 27 | ### Changed 28 | - **BREAKING:** Allow falsy initial state ([#74](https://github.com/MetaMask/obs-store/pull/74)) 29 | - This fixes an accidental breaking change introduced in v6.0.2. If you're updating from a version earlier than v6.0.2, this is non-breaking. 30 | - This is only breaking if you are relying on falsy initial state being replaced with an empty object. 31 | 32 | ## [7.0.0] 33 | ### Changed 34 | - **BREAKING**: Increase minimum Node.js version to v12 ([#40](https://github.com/MetaMask/obs-store/pull/40)) 35 | - Include inline sources in source maps ([#46](https://github.com/MetaMask/obs-store/pull/46)) 36 | - Remove `readable-stream` dependency ([#45](https://github.com/MetaMask/obs-store/pull/45)) 37 | 38 | ## [6.0.2] - 2020-02-05 39 | ### Fixed 40 | - Fix `ObservableStore` constructor and `updateState` types ([#38](https://github.com/MetaMask/obs-store/pull/38)) 41 | 42 | ## [6.0.1] - 2020-02-05 43 | ### Fixed 44 | - Remove unused files by fixing build script ([#36](https://github.com/MetaMask/obs-store/pull/36)) 45 | 46 | ## [6.0.0] - 2020-02-05 47 | ### Changed 48 | - Genericize state in all classes / exports ([#33](https://github.com/MetaMask/obs-store/pull/33)) 49 | 50 | ### Removed 51 | - **(BREAKING)** Remove `LocalStorageStore` ([#34](https://github.com/MetaMask/obs-store/pull/34)) 52 | 53 | ## [5.0.0] - 2020-12-16 54 | ### Added 55 | - TypeScript types ([#27](https://github.com/MetaMask/obs-store/pull/27)) 56 | 57 | ### Changed 58 | - **(BREAKING)** Rename package to `@metamask/obs-store` ([#30](https://github.com/MetaMask/obs-store/pull/30)) 59 | - **(BREAKING)** Overhaul exports ([#29](https://github.com/MetaMask/obs-store/pull/29)) 60 | - All exports are now named, and exposed at the main entry point. 61 | - Some export names have changed, but they should still be recognizable. 62 | 63 | [Unreleased]: https://github.com/MetaMask/obs-store/compare/v9.1.0...HEAD 64 | [9.1.0]: https://github.com/MetaMask/obs-store/compare/v9.0.0...v9.1.0 65 | [9.0.0]: https://github.com/MetaMask/obs-store/compare/v8.1.1...v9.0.0 66 | [8.1.1]: https://github.com/MetaMask/obs-store/compare/v8.1.0...v8.1.1 67 | [8.1.0]: https://github.com/MetaMask/obs-store/compare/v8.0.0...v8.1.0 68 | [8.0.0]: https://github.com/MetaMask/obs-store/compare/v7.0.0...v8.0.0 69 | [7.0.0]: https://github.com/MetaMask/obs-store/compare/v6.0.2...v7.0.0 70 | [6.0.2]: https://github.com/MetaMask/obs-store/compare/v6.0.1...v6.0.2 71 | [6.0.1]: https://github.com/MetaMask/obs-store/compare/v6.0.0...v6.0.1 72 | [6.0.0]: https://github.com/MetaMask/obs-store/compare/v5.0.0...v6.0.0 73 | [5.0.0]: https://github.com/MetaMask/obs-store/releases/tag/v5.0.0 74 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2020 MetaMask 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ObservableStore 2 | 3 | `ObservableStore` is a synchronous in-memory store for a single value, 4 | that you can subscribe to updates for. 5 | 6 | Previously known as `obs-store`. 7 | 8 | ## Usage 9 | 10 | ```js 11 | import { ObservableStore } from '@metamask/obs-store'; 12 | 13 | const store = new ObservableStore(initState); 14 | store.subscribe(function showValue(value) { 15 | console.log('saw value:', value); 16 | }); 17 | 18 | store.putState(5); // "saw value: 5" 19 | store.putState(true); // "saw value: true" 20 | store.putState({ hello: 'world' }); // "saw value: { hello: 'world' }" 21 | 22 | console.log(store.getState().hello); // "world" 23 | ``` 24 | 25 | ## Streams 26 | 27 | Each `ObservableStore` can be turned into an `ObservableStoreStream`. 28 | An `ObservableStoreStream` is a duplex stream that you can pipe new values into or pipe updated values out of. 29 | 30 | Special behavior: Doesn't buffer outgoing updates, writes latest state to destination on pipe. 31 | 32 | ```js 33 | import { ObservableStore, storeAsStream } from '@metamask/obs-store'; 34 | import pump from 'pump'; 35 | 36 | const storeOne = new ObservableStore(initState); 37 | const storeTwo = new ObservableStore(); 38 | 39 | pump(storeAsStream(storeOne), transformStream, storeAsStream(storeTwo)); 40 | ``` 41 | 42 | ## Contributing 43 | 44 | ### Setup 45 | 46 | - Install [Node.js](https://nodejs.org) version 18 47 | - If you are using [nvm](https://github.com/creationix/nvm#installation) (recommended) running `nvm use` will automatically choose the right node version for you. 48 | - Install [Yarn v1](https://yarnpkg.com/en/docs/install) 49 | - Run `yarn setup` to install dependencies and run any requried post-install scripts 50 | - **Warning:** Do not use the `yarn` / `yarn install` command directly. Use `yarn setup` instead. The normal install command will skip required post-install scripts, leaving your development environment in an invalid state. 51 | 52 | ### Testing and Linting 53 | 54 | Run `yarn test` to run the tests once. 55 | 56 | Run `yarn lint` to run the linter, or run `yarn lint:fix` to run the linter and fix any automatically fixable issues. 57 | 58 | ### Release & Publishing 59 | 60 | The project follows the same release process as the other libraries in the MetaMask organization. The GitHub Actions [`action-create-release-pr`](https://github.com/MetaMask/action-create-release-pr) and [`action-publish-release`](https://github.com/MetaMask/action-publish-release) are used to automate the release process; see those repositories for more information about how they work. 61 | 62 | 1. Choose a release version. 63 | 64 | - The release version should be chosen according to SemVer. Analyze the changes to see whether they include any breaking changes, new features, or deprecations, then choose the appropriate SemVer version. See [the SemVer specification](https://semver.org/) for more information. 65 | 66 | 2. If this release is backporting changes onto a previous release, then ensure there is a major version branch for that version (e.g. `1.x` for a `v1` backport release). 67 | 68 | - The major version branch should be set to the most recent release with that major version. For example, when backporting a `v1.0.2` release, you'd want to ensure there was a `1.x` branch that was set to the `v1.0.1` tag. 69 | 70 | 3. Trigger the [`workflow_dispatch`](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch) event [manually](https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow) for the `Create Release Pull Request` action to create the release PR. 71 | 72 | - For a backport release, the base branch should be the major version branch that you ensured existed in step 2. For a normal release, the base branch should be the main branch for that repository (which should be the default value). 73 | - This should trigger the [`action-create-release-pr`](https://github.com/MetaMask/action-create-release-pr) workflow to create the release PR. 74 | 75 | 4. Update the changelog to move each change entry into the appropriate change category ([See here](https://keepachangelog.com/en/1.0.0/#types) for the full list of change categories, and the correct ordering), and edit them to be more easily understood by users of the package. 76 | 77 | - Generally any changes that don't affect consumers of the package (e.g. lockfile changes or development environment changes) are omitted. Exceptions may be made for changes that might be of interest despite not having an effect upon the published package (e.g. major test improvements, security improvements, improved documentation, etc.). 78 | - Try to explain each change in terms that users of the package would understand (e.g. avoid referencing internal variables/concepts). 79 | - Consolidate related changes into one change entry if it makes it easier to explain. 80 | - Run `yarn auto-changelog validate --rc` to check that the changelog is correctly formatted. 81 | 82 | 5. Review and QA the release. 83 | 84 | - If changes are made to the base branch, the release branch will need to be updated with these changes and review/QA will need to restart again. As such, it's probably best to avoid merging other PRs into the base branch while review is underway. 85 | 86 | 6. Squash & Merge the release. 87 | 88 | - This should trigger the [`action-publish-release`](https://github.com/MetaMask/action-publish-release) workflow to tag the final release commit and publish the release on GitHub. 89 | 90 | 7. Publish the release on npm. 91 | 92 | - Be very careful to use a clean local environment to publish the release, and follow exactly the same steps used during CI. 93 | - Use `npm publish --dry-run` to examine the release contents to ensure the correct files are included. Compare to previous releases if necessary (e.g. using `https://unpkg.com/browse/[package name]@[package version]/`). 94 | - Once you are confident the release contents are correct, publish the release using `npm publish`. 95 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@metamask/obs-store", 3 | "version": "9.1.0", 4 | "description": "`ObservableStore` is a synchronous in-memory store for a single value, that you can subscribe to updates for.", 5 | "homepage": "https://github.com/MetaMask/obs-store#readme", 6 | "bugs": { 7 | "url": "https://github.com/MetaMask/obs-store/issues" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/MetaMask/obs-store.git" 12 | }, 13 | "license": "ISC", 14 | "main": "dist/index.js", 15 | "types": "dist/index.d.ts", 16 | "files": [ 17 | "dist/" 18 | ], 19 | "scripts": { 20 | "setup": "yarn install && yarn allow-scripts", 21 | "build": "rimraf dist && tsc --project .", 22 | "test": "yarn build && tape test/**/*.js", 23 | "lint:eslint": "eslint . --cache --ext js,ts", 24 | "lint:misc": "prettier '**/*.json' '**/*.md' '!CHANGELOG.md' '**/*.yml' --ignore-path .gitignore", 25 | "lint": "yarn lint:eslint && yarn lint:misc --check", 26 | "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", 27 | "prepublishOnly": "yarn test" 28 | }, 29 | "dependencies": { 30 | "@metamask/safe-event-emitter": "^3.0.0", 31 | "readable-stream": "^3.6.2" 32 | }, 33 | "devDependencies": { 34 | "@lavamoat/allow-scripts": "^2.3.1", 35 | "@metamask/auto-changelog": "^3.4.2", 36 | "@metamask/eslint-config": "^7.0.1", 37 | "@metamask/eslint-config-typescript": "^7.0.1", 38 | "@types/node": "^14.18.63", 39 | "@types/readable-stream": "4.0.0", 40 | "@types/tape": "^4.13.4", 41 | "@typescript-eslint/eslint-plugin": "^4.28.1", 42 | "@typescript-eslint/parser": "^4.28.1", 43 | "eslint": "^7.29.0", 44 | "eslint-config-prettier": "^8.3.0", 45 | "eslint-plugin-import": "^2.23.4", 46 | "eslint-plugin-prettier": "^3.4.0", 47 | "prettier": "^2.3.2", 48 | "prettier-plugin-packagejson": "^2.2.11", 49 | "rimraf": "^3.0.2", 50 | "tape": "^4.6.3", 51 | "typescript": "^4.1.3" 52 | }, 53 | "engines": { 54 | "node": "^14.21 || ^16.20 || ^18.16 || >=20", 55 | "yarn": "^1.22.22" 56 | }, 57 | "publishConfig": { 58 | "access": "public", 59 | "registry": "https://registry.npmjs.org/" 60 | }, 61 | "lavamoat": { 62 | "allowScripts": { 63 | "@lavamoat/preinstall-always-fail": false 64 | } 65 | }, 66 | "packageManager": "yarn@1.22.22" 67 | } 68 | -------------------------------------------------------------------------------- /src/ComposedStore.ts: -------------------------------------------------------------------------------- 1 | import { ObservableStore } from './ObservableStore'; 2 | 3 | export class ComposedStore< 4 | T extends Record, 5 | > extends ObservableStore { 6 | private _children: Record>; 7 | 8 | constructor(children: Record>) { 9 | // Typecast: Preserve existing behavior 10 | super({} as unknown as T); 11 | 12 | // subscribe to children 13 | this._children = children || {}; 14 | Object.keys(this._children).forEach((childKey) => { 15 | const child = this._children[childKey]; 16 | this._addChild(childKey, child); 17 | }); 18 | } 19 | 20 | _addChild(childKey: keyof T, child: ObservableStore) { 21 | const updateFromChild = (childValue: T[keyof T]) => { 22 | const state = this.getState(); 23 | state[childKey] = childValue; 24 | this.putState(state); 25 | }; 26 | 27 | child.subscribe(updateFromChild); 28 | updateFromChild(child.getState()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/MergedStore.ts: -------------------------------------------------------------------------------- 1 | import { ObservableStore } from './ObservableStore'; 2 | 3 | export class MergedStore< 4 | T extends Record, 5 | > extends ObservableStore { 6 | private _children: ObservableStore>[]; 7 | 8 | constructor(children = []) { 9 | // Typecast: Preserve existing behavior 10 | super({} as unknown as T); 11 | 12 | this._children = children; 13 | // subscribe to children 14 | children.forEach((child) => this._addChild(child)); 15 | this._updateWholeState(); 16 | } 17 | 18 | _addChild(child: ObservableStore>): void { 19 | child.subscribe(() => this._updateWholeState()); 20 | } 21 | 22 | _updateWholeState(): void { 23 | const childStates = this._children.map((child) => child.getState()); 24 | // apply shallow merge over states 25 | const state = Object.assign({}, ...childStates); 26 | this.putState(state); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/ObservableStore.ts: -------------------------------------------------------------------------------- 1 | import SafeEventEmitter from '@metamask/safe-event-emitter'; 2 | 3 | export class ObservableStore extends SafeEventEmitter { 4 | private _state: T; 5 | 6 | constructor(initState: T) { 7 | super(); 8 | if (initState === undefined) { 9 | // Typecast/default state: Preserve existing behavior 10 | this._state = {} as unknown as T; 11 | } else { 12 | this._state = initState; 13 | } 14 | } 15 | 16 | // wrapper around internal getState 17 | getState(): T { 18 | return this._getState(); 19 | } 20 | 21 | // wrapper around internal putState 22 | putState(newState: T): void { 23 | this._putState(newState); 24 | this.emit('update', newState); 25 | } 26 | 27 | updateState(partialState: Partial): void { 28 | // if non-null object, merge 29 | if (partialState && typeof partialState === 'object') { 30 | const state = this.getState(); 31 | this.putState({ ...state, ...partialState }); 32 | // if not object, use new value 33 | } else { 34 | this.putState(partialState); 35 | } 36 | } 37 | 38 | // subscribe to changes 39 | subscribe(handler: (state: T) => void): void { 40 | this.on('update', handler); 41 | } 42 | 43 | // unsubscribe to changes 44 | unsubscribe(handler: (state: T) => void): void { 45 | this.removeListener('update', handler); 46 | } 47 | 48 | // 49 | // private 50 | // 51 | 52 | // read from persistence 53 | protected _getState(): T { 54 | return this._state; 55 | } 56 | 57 | // write to persistence 58 | protected _putState(newState: T): void { 59 | this._state = newState; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/asStream.ts: -------------------------------------------------------------------------------- 1 | import { Duplex as DuplexStream } from 'readable-stream'; 2 | import type { DuplexOptions } from 'readable-stream'; 3 | 4 | import { ObservableStore } from './ObservableStore'; 5 | 6 | class ObservableStoreStream extends DuplexStream { 7 | handler: (state: T) => void; 8 | 9 | obsStore: ObservableStore; 10 | 11 | constructor(obsStore: ObservableStore, streamOptions: DuplexOptions = {}) { 12 | super({ 13 | // pass values, not serializations 14 | objectMode: true, 15 | ...streamOptions, 16 | }); 17 | // dont buffer outgoing updates 18 | this.resume(); 19 | // save handler so we can unsubscribe later 20 | this.handler = (state: T) => this.push(state); 21 | // subscribe to obsStore changes 22 | this.obsStore = obsStore; 23 | this.obsStore.subscribe(this.handler); 24 | } 25 | 26 | // emit current state on new destination 27 | pipe( 28 | dest: U, 29 | options?: { end?: boolean }, 30 | ): U { 31 | const result = super.pipe(dest, options); 32 | dest.write(this.obsStore.getState() as any); 33 | return result; 34 | } 35 | 36 | // write from incoming stream to state 37 | _write( 38 | chunk: any, 39 | _encoding: string, 40 | callback: (error?: Error | null) => void, 41 | ): void { 42 | this.obsStore.putState(chunk); 43 | callback(); 44 | } 45 | 46 | // noop - outgoing stream is asking us if we have data we arent giving it 47 | _read(_size: number): void { 48 | return undefined; 49 | } 50 | 51 | // unsubscribe from event emitter 52 | _destroy(err: Error | null, callback: (error: Error | null) => void): void { 53 | this.obsStore.unsubscribe(this.handler); 54 | super._destroy(err, callback); 55 | } 56 | } 57 | 58 | export function storeAsStream( 59 | obsStore: ObservableStore, 60 | streamOptions: DuplexOptions = {}, 61 | ): ObservableStoreStream { 62 | return new ObservableStoreStream(obsStore, streamOptions); 63 | } 64 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './asStream'; 2 | export * from './ComposedStore'; 3 | export * from './MergedStore'; 4 | export * from './ObservableStore'; 5 | export * from './transform'; 6 | -------------------------------------------------------------------------------- /src/readable-stream.d.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable import/unambiguous 2 | declare module 'readable-stream' { 3 | export { Duplex, Transform, Writable, pipeline } from 'stream'; 4 | export type { DuplexOptions, TransformOptions } from 'stream'; 5 | } 6 | -------------------------------------------------------------------------------- /src/transform.ts: -------------------------------------------------------------------------------- 1 | import { Transform } from 'readable-stream'; 2 | import type { TransformOptions } from 'readable-stream'; 3 | 4 | export function storeTransformStream( 5 | syncTransformFn: (state: T) => U, 6 | streamOptions: TransformOptions = {}, 7 | ) { 8 | const t = new Transform({ 9 | objectMode: true, 10 | transform: ( 11 | state: T, 12 | _encoding: unknown, 13 | cb: (error?: Error | null, data?: U) => void, 14 | ) => { 15 | try { 16 | const newState = syncTransformFn(state); 17 | cb(undefined, newState); 18 | return undefined; 19 | } catch (err) { 20 | cb(err); 21 | return undefined; 22 | } 23 | }, 24 | ...streamOptions, 25 | }); 26 | return t; 27 | } 28 | -------------------------------------------------------------------------------- /test/basic.ts: -------------------------------------------------------------------------------- 1 | import test from 'tape'; 2 | import { ObservableStore } from '../src'; 3 | 4 | test('basic', function (t) { 5 | t.plan(3); 6 | 7 | const initState = 'init'; 8 | const nextState = 'next'; 9 | 10 | const store = new ObservableStore(initState); 11 | store.subscribe(valueCheck); 12 | 13 | t.equal(store.getState(), initState, 'state is provided initState'); 14 | 15 | store.putState(nextState); 16 | t.equal(store.getState(), nextState, 'state is nextState'); 17 | 18 | function valueCheck(value) { 19 | t.equal(value, nextState, 'subscribed: state is nextState'); 20 | } 21 | }); 22 | 23 | test('default state', function (t) { 24 | t.plan(3); 25 | 26 | const nextState = 'next'; 27 | 28 | // @ts-expect-error The signature for the ObservableStore constructor makes it 29 | // seem like an argument is required, but we're not passing an argument here. 30 | const store = new ObservableStore(); 31 | store.subscribe(valueCheck); 32 | 33 | t.deepEqual(store.getState(), {}, 'default state of empty object is set'); 34 | 35 | store.putState(nextState); 36 | t.equal(store.getState(), nextState, 'state is nextState'); 37 | 38 | function valueCheck(value) { 39 | t.equal(value, nextState, 'subscribed: state is nextState'); 40 | } 41 | }); 42 | 43 | test('falsy non-undefined initial state', function (t) { 44 | t.plan(3); 45 | 46 | const initState = null; 47 | const nextState = 'next'; 48 | 49 | const store = new ObservableStore(initState); 50 | store.subscribe(valueCheck); 51 | 52 | t.equal(store.getState(), initState, 'null default state is set'); 53 | 54 | store.putState(nextState); 55 | t.equal(store.getState(), nextState, 'state is nextState'); 56 | 57 | function valueCheck(value) { 58 | t.equal(value, nextState, 'subscribed: state is nextState'); 59 | } 60 | }); 61 | 62 | test('updateState', function (t) { 63 | t.plan(2); 64 | 65 | const storeOne = new ObservableStore({ a: true, b: false }); 66 | 67 | storeOne.updateState({ b: true }); 68 | const state = storeOne.getState(); 69 | 70 | t.equal(state.a, true, 'a is present'); 71 | t.equal(state.b, true, 'b was updated to true'); 72 | }); 73 | 74 | test('updateState non-obj onto obj', function (t) { 75 | t.plan(2); 76 | 77 | const storeOne = new ObservableStore({ a: true }); 78 | 79 | // @ts-expect-error We're intentionally trying to update an object state with 80 | // a non-object. 81 | storeOne.updateState(2); 82 | const state = storeOne.getState(); 83 | 84 | t.equal(state, 2, 'obj is wholly overwritten by value'); 85 | t.equal(state.a, undefined, 'property is not merged onto value'); 86 | }); 87 | 88 | test('updateState obj onto non-obj', function (t) { 89 | t.plan(2); 90 | 91 | const storeOne = new ObservableStore(2); 92 | 93 | // @ts-expect-error We're intentionally trying to update an non-object state 94 | // with an object. 95 | storeOne.updateState({ a: true }); 96 | const state = storeOne.getState(); 97 | 98 | t.equal(typeof state, 'object', 'value is wholly overwritten by object'); 99 | // @ts-expect-error The interface for `ObservableStore` does not allow 100 | // changing the type of the whole state, but `updateState` overwrites the 101 | // state object anyway. 102 | t.equal(state.a, true, 'a is present'); 103 | }); 104 | -------------------------------------------------------------------------------- /test/composed.ts: -------------------------------------------------------------------------------- 1 | import test from 'tape'; 2 | import { ComposedStore, ObservableStore } from '../src'; 3 | 4 | test('ComposedStore - unknown state', function (t) { 5 | t.plan(1); 6 | 7 | // @ts-expect-error The signature for the ObservableStore constructor makes it 8 | // seem like an argument is required, but we're not passing an argument here. 9 | const childStoreOne = new ObservableStore(); 10 | // @ts-expect-error The signature for the ObservableStore constructor makes it 11 | // seem like an argument is required, but we're not passing an argument here. 12 | const childStoreTwo = new ObservableStore(); 13 | const composedStore = new ComposedStore({ 14 | one: childStoreOne, 15 | two: childStoreTwo, 16 | }); 17 | 18 | childStoreOne.putState(1); 19 | childStoreTwo.putState(2); 20 | 21 | t.deepEqual( 22 | composedStore.getState(), 23 | { one: 1, two: 2 }, 24 | 'composedStore gets state from children', 25 | ); 26 | }); 27 | 28 | test('ComposedStore - primitive state', function (t) { 29 | t.plan(1); 30 | 31 | const childStoreOne = new ObservableStore(1); 32 | const childStoreTwo = new ObservableStore(2); 33 | const composedStore = new ComposedStore({ 34 | one: childStoreOne, 35 | two: childStoreTwo, 36 | }); 37 | 38 | childStoreOne.putState(2); 39 | childStoreTwo.putState(4); 40 | 41 | t.deepEqual( 42 | composedStore.getState(), 43 | { one: 2, two: 4 }, 44 | 'composedStore gets state from children', 45 | ); 46 | }); 47 | 48 | test('ComposedStore - non-primitive state', function (t) { 49 | t.plan(1); 50 | 51 | const childStoreOne = new ObservableStore({ foo: 'bar' }); 52 | const childStoreTwo = new ObservableStore({ baz: 'qux' }); 53 | const composedStore = new ComposedStore({ 54 | one: childStoreOne, 55 | two: childStoreTwo, 56 | }); 57 | 58 | childStoreOne.putState({ foo: 'fizz' }); 59 | childStoreTwo.putState({ baz: 'buzz' }); 60 | 61 | t.deepEqual( 62 | composedStore.getState(), 63 | { 64 | one: { foo: 'buzz' }, 65 | two: { baz: 'buzz' }, 66 | }, 67 | 'composedStore gets state from children', 68 | ); 69 | }); 70 | -------------------------------------------------------------------------------- /test/merged.ts: -------------------------------------------------------------------------------- 1 | import test from 'tape'; 2 | import { MergedStore, ObservableStore } from '../src'; 3 | 4 | test('MergedStore - basic', function (t) { 5 | t.plan(1); 6 | 7 | // @ts-expect-error The signature for the ObservableStore constructor makes it 8 | // seem like an argument is required, but we're not passing an argument here. 9 | const childStoreOne = new ObservableStore(); 10 | // @ts-expect-error The signature for the ObservableStore constructor makes it 11 | // seem like an argument is required, but we're not passing an argument here. 12 | const childStoreTwo = new ObservableStore(); 13 | const mergedStore = new MergedStore([childStoreOne, childStoreTwo]); 14 | 15 | childStoreOne.putState({ a: 1 }); 16 | childStoreTwo.putState({ b: 2 }); 17 | 18 | t.deepEqual( 19 | mergedStore.getState(), 20 | { a: 1, b: 2 }, 21 | 'mergedStore gets state from children', 22 | ); 23 | }); 24 | 25 | test('MergedStore - child initState', function (t) { 26 | t.plan(1); 27 | 28 | const childStoreOne = new ObservableStore({ a: 1 }); 29 | const childStoreTwo = new ObservableStore({ b: 2 }); 30 | const mergedStore = new MergedStore([childStoreOne, childStoreTwo]); 31 | 32 | t.deepEqual( 33 | mergedStore.getState(), 34 | { a: 1, b: 2 }, 35 | 'mergedStore gets state from children', 36 | ); 37 | }); 38 | 39 | test('MergedStore - overwrite init', function (t) { 40 | t.plan(1); 41 | 42 | const childStoreOne = new ObservableStore({ a: 1 }); 43 | const childStoreTwo = new ObservableStore({ a: 2 }); 44 | const mergedStore = new MergedStore([childStoreOne, childStoreTwo]); 45 | 46 | t.deepEqual( 47 | mergedStore.getState(), 48 | { a: 2 }, 49 | 'mergedStore overwrote state correctly', 50 | ); 51 | }); 52 | 53 | test('MergedStore - set no overwrite', function (t) { 54 | t.plan(1); 55 | 56 | const childStoreOne = new ObservableStore({ a: 1 }); 57 | const childStoreTwo = new ObservableStore({ a: 2 }); 58 | const mergedStore = new MergedStore([childStoreOne, childStoreTwo]); 59 | 60 | childStoreOne.putState({ a: 3 }); 61 | 62 | t.deepEqual( 63 | mergedStore.getState(), 64 | { a: 2 }, 65 | 'mergedStore overwrote new value with old value', 66 | ); 67 | }); 68 | 69 | test('MergedStore - overwrite init', function (t) { 70 | t.plan(1); 71 | 72 | const childStoreOne = new ObservableStore({ a: 1 }); 73 | const childStoreTwo = new ObservableStore({ a: 2 }); 74 | const mergedStore = new MergedStore([childStoreOne, childStoreTwo]); 75 | 76 | childStoreTwo.putState({ a: 3 }); 77 | 78 | t.deepEqual( 79 | mergedStore.getState(), 80 | { a: 3 }, 81 | 'mergedStore overwrote old value with new value', 82 | ); 83 | }); 84 | -------------------------------------------------------------------------------- /test/stream.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pipeline, 3 | Transform as TransformStream, 4 | Writable as WritableStream, 5 | } from 'readable-stream'; 6 | import test from 'tape'; 7 | import { ObservableStore, storeAsStream } from '../src'; 8 | 9 | const TEST_WAIT = 200; 10 | 11 | test('basic stream', function (t) { 12 | t.plan(2); 13 | 14 | const initState = 'init'; 15 | const nextState = 'next'; 16 | 17 | const storeOne = new ObservableStore(initState); 18 | // @ts-expect-error The signature for the ObservableStore constructor makes it 19 | // seem like an argument is required, but we're not passing an argument here. 20 | const storeTwo = new ObservableStore(); 21 | storeTwo.once('update', (value) => { 22 | initValueCheck(value); 23 | storeTwo.once('update', nextValueCheck); 24 | }); 25 | 26 | pipeline(storeAsStream(storeOne), storeAsStream(storeTwo)); 27 | 28 | storeOne.putState(nextState); 29 | 30 | function initValueCheck(value) { 31 | t.equal(value, initState, 'storeTwo subscribed: state is initState'); 32 | } 33 | 34 | function nextValueCheck(value) { 35 | t.equal(value, nextState, 'storeTwo subscribed: state is nextState'); 36 | } 37 | }); 38 | 39 | test('double stream', function (t) { 40 | t.plan(4); 41 | 42 | const initState = 'init'; 43 | const nextState = 'next'; 44 | 45 | const storeOne = new ObservableStore(initState); 46 | // @ts-expect-error The signature for the ObservableStore constructor makes it 47 | // seem like an argument is required, but we're not passing an argument here. 48 | const storeTwo = new ObservableStore(); 49 | storeTwo.once('update', (initValue) => { 50 | initValueCheck('storeTwo', initValue); 51 | storeTwo.once('update', (nextValue) => 52 | nextValueCheck('storeTwo', nextValue), 53 | ); 54 | }); 55 | 56 | // @ts-expect-error The signature for the ObservableStore constructor makes it 57 | // seem like an argument is required, but we're not passing an argument here. 58 | const storeThree = new ObservableStore(); 59 | storeThree.once('update', (initValue) => { 60 | initValueCheck('storeThree', initValue); 61 | storeThree.once('update', (nextValue) => 62 | nextValueCheck('storeThree', nextValue), 63 | ); 64 | }); 65 | 66 | pipeline(storeAsStream(storeOne), storeAsStream(storeTwo)); 67 | 68 | pipeline(storeAsStream(storeOne), storeAsStream(storeThree)); 69 | 70 | storeOne.putState(nextState); 71 | 72 | function initValueCheck(label, value) { 73 | t.equal(value, initState, `${label} subscribed: state is initState`); 74 | } 75 | 76 | function nextValueCheck(label, value) { 77 | t.equal(value, nextState, `${label} subscribed: state is nextState`); 78 | } 79 | }); 80 | 81 | test('transform stream', function (t) { 82 | t.plan(4); 83 | 84 | const initState = 'init'; 85 | const nextState = 'next'; 86 | 87 | const metaWrapperTransform = new TransformStream({ 88 | objectMode: true, 89 | transform(chunk, _encoding, callback) { 90 | const result = { meta: true, data: chunk }; 91 | callback(null, result); 92 | }, 93 | }); 94 | 95 | const storeOne = new ObservableStore(initState); 96 | // @ts-expect-error The signature for the ObservableStore constructor makes it 97 | // seem like an argument is required, but we're not passing an argument here. 98 | const storeTwo = new ObservableStore(); 99 | storeTwo.once('update', (value) => { 100 | initValueCheck(value); 101 | storeTwo.once('update', nextValueCheck); 102 | }); 103 | 104 | pipeline( 105 | storeAsStream(storeOne), 106 | metaWrapperTransform, 107 | storeAsStream(storeTwo), 108 | ); 109 | 110 | storeOne.putState(nextState); 111 | 112 | function initValueCheck(value) { 113 | t.equal(value.meta, true, 'storeTwo subscribed: state is wrapped in meta'); 114 | t.equal( 115 | value.data, 116 | initState, 117 | 'storeTwo subscribed: state.data is initState', 118 | ); 119 | } 120 | 121 | function nextValueCheck(value) { 122 | t.equal(value.meta, true, 'storeTwo subscribed: state is wrapped in meta'); 123 | t.equal( 124 | value.data, 125 | nextState, 126 | 'storeTwo subscribed: state.data is nextState', 127 | ); 128 | } 129 | }); 130 | 131 | test('basic - stream buffering', function (t) { 132 | t.plan(2); 133 | 134 | // @ts-expect-error The signature for the ObservableStore constructor makes it 135 | // seem like an argument is required, but we're not passing an argument here. 136 | const store = new ObservableStore(); 137 | store.putState(1); 138 | store.putState(2); 139 | store.putState(3); 140 | store.putState(4); 141 | store.putState(5); 142 | 143 | const itemsInStream = []; 144 | 145 | const sink = new WritableStream({ 146 | objectMode: true, 147 | write: (value, _encoding, cb) => { 148 | itemsInStream.push(value); 149 | cb(); 150 | }, 151 | }); 152 | 153 | setTimeout(pipeStreams, TEST_WAIT); 154 | 155 | function pipeStreams() { 156 | pipe(storeAsStream(store), sink); 157 | setTimeout(checkBuffer, TEST_WAIT); 158 | } 159 | 160 | function checkBuffer() { 161 | const lastItem = itemsInStream[itemsInStream.length - 1]; 162 | t.equal(lastItem, 5, 'item in stream is latest state'); 163 | t.equal( 164 | itemsInStream.length, 165 | 1, 166 | 'nothing extra buffered in the store stream', 167 | ); 168 | } 169 | }); 170 | 171 | test('basic - stream destroy unsubscribe', function (t) { 172 | t.plan(4); 173 | 174 | // @ts-expect-error The signature for the ObservableStore constructor makes it 175 | // seem like an argument is required, but we're not passing an argument here. 176 | const store = new ObservableStore(); 177 | t.equal(store.listenerCount('update'), 0); 178 | 179 | store.subscribe(() => undefined); 180 | t.equal(store.listenerCount('update'), 1); 181 | 182 | const storeStream = storeAsStream(store); 183 | t.equal(store.listenerCount('update'), 2); 184 | 185 | storeStream.destroy(); 186 | t.equal(store.listenerCount('update'), 1); 187 | 188 | t.end(); 189 | }); 190 | -------------------------------------------------------------------------------- /test/transform.ts: -------------------------------------------------------------------------------- 1 | import test from 'tape'; 2 | import { pipeline } from 'readable-stream'; 3 | import { ObservableStore, storeAsStream, storeTransformStream } from '../src'; 4 | 5 | test('storeTransformStream test', function (t) { 6 | t.plan(4); 7 | 8 | const initState = 'init'; 9 | const nextState = 'next'; 10 | 11 | const metaWrapperTransform = storeTransformStream((state) => { 12 | const newState = { meta: true, data: state }; 13 | return newState; 14 | }); 15 | 16 | const storeOne = new ObservableStore(initState); 17 | // @ts-expect-error The signature for the ObservableStore constructor makes it 18 | // seem like an argument is required, but we're not passing an argument here. 19 | const storeTwo = new ObservableStore(); 20 | storeTwo.once('update', (value) => { 21 | initValueCheck(value); 22 | storeTwo.once('update', nextValueCheck); 23 | }); 24 | 25 | pipeline( 26 | storeAsStream(storeOne), 27 | metaWrapperTransform, 28 | storeAsStream(storeTwo), 29 | ); 30 | 31 | storeOne.putState(nextState); 32 | 33 | function initValueCheck(value) { 34 | t.equal(value.meta, true, 'storeTwo subscribed: state is wrapped in meta'); 35 | t.equal( 36 | value.data, 37 | initState, 38 | 'storeTwo subscribed: state.data is initState', 39 | ); 40 | } 41 | 42 | function nextValueCheck(value) { 43 | t.equal(value.meta, true, 'storeTwo subscribed: state is wrapped in meta'); 44 | t.equal( 45 | value.data, 46 | nextState, 47 | 'storeTwo subscribed: state.data is nextState', 48 | ); 49 | } 50 | }); 51 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "esModuleInterop": true, 5 | "inlineSources": true, 6 | "lib": ["ES2020"], 7 | "module": "CommonJS", 8 | "moduleResolution": "node", 9 | "outDir": "dist", 10 | "rootDir": "src", 11 | "sourceMap": true, 12 | "strict": true, 13 | "target": "ES2017", 14 | "typeRoots": ["./node_modules/@types"] 15 | }, 16 | "include": ["./src/*.ts"] 17 | } 18 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.14.5": 13 | version "7.14.5" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" 15 | integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.14.5" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 20 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.14.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.2": 27 | version "0.4.2" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" 29 | integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^13.9.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@isaacs/cliui@^8.0.2": 42 | version "8.0.2" 43 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 44 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 45 | dependencies: 46 | string-width "^5.1.2" 47 | string-width-cjs "npm:string-width@^4.2.0" 48 | strip-ansi "^7.0.1" 49 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 50 | wrap-ansi "^8.1.0" 51 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 52 | 53 | "@lavamoat/aa@^3.1.1": 54 | version "3.1.2" 55 | resolved "https://registry.yarnpkg.com/@lavamoat/aa/-/aa-3.1.2.tgz#3e2c0bbff791204bb4dabe96c2486b0c910e1897" 56 | integrity sha512-oHKUcSzCDxpICm247dH28no8k0VXURPVOS6jWx7GcoW9XowObqoiWSrX90folzEaaQq9HvO4X2OWvTubUm/0Qg== 57 | dependencies: 58 | resolve "^1.20.0" 59 | 60 | "@lavamoat/allow-scripts@^2.3.1": 61 | version "2.3.1" 62 | resolved "https://registry.yarnpkg.com/@lavamoat/allow-scripts/-/allow-scripts-2.3.1.tgz#a5cbf885108b94877fd51af74176a64e2294cad6" 63 | integrity sha512-cnFaeso5cR3DOJq4WVx1tI5VFaMp7T+GxsmeGO36Ead90xRqjg2/NpKUg5QjBw40wSj5QWHVqjO4U0EqNhcqmQ== 64 | dependencies: 65 | "@lavamoat/aa" "^3.1.1" 66 | "@npmcli/run-script" "^6.0.0" 67 | bin-links "4.0.1" 68 | npm-normalize-package-bin "^3.0.0" 69 | yargs "^16.2.0" 70 | 71 | "@metamask/auto-changelog@^3.4.2": 72 | version "3.4.4" 73 | resolved "https://registry.yarnpkg.com/@metamask/auto-changelog/-/auto-changelog-3.4.4.tgz#981c3bf07f8fd0dcec0170788abdc5792018c430" 74 | integrity sha512-bA2U6JXIQpbTbiURZ4X+c0OmkzQUOAggmG7x+NL37ELL8zI5NuiRyuR1dvlmhhlOUOdj8cCuqYFOxR478kz4Lg== 75 | dependencies: 76 | diff "^5.0.0" 77 | execa "^5.1.1" 78 | prettier "^2.8.8" 79 | semver "^7.3.5" 80 | yargs "^17.0.1" 81 | 82 | "@metamask/eslint-config-typescript@^7.0.1": 83 | version "7.0.1" 84 | resolved "https://registry.yarnpkg.com/@metamask/eslint-config-typescript/-/eslint-config-typescript-7.0.1.tgz#e013f7f0505741b9321cab21351136f651abbba6" 85 | integrity sha512-nqWivz9XHjiHAE2Aqf/y+p8R3xDoN9ScX2i97vtTxNKjAqkzmUwAd8lEHEibRfPOYaRBQJ0x85wrof++PpLfZg== 86 | 87 | "@metamask/eslint-config@^7.0.1": 88 | version "7.0.1" 89 | resolved "https://registry.yarnpkg.com/@metamask/eslint-config/-/eslint-config-7.0.1.tgz#eeb87baa902965ca7931c26911d7027373706f34" 90 | integrity sha512-dMZ+iyZrHdZK0D1uStTx8UN6Q6IK9YGbqPUwxgTj63M0mZOsuqs8qpGf+9Dn7uqS+8Oe9jNqejKxozjTiJvsEw== 91 | 92 | "@metamask/safe-event-emitter@^3.0.0": 93 | version "3.1.2" 94 | resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz#bfac8c7a1a149b5bbfe98f59fbfea512dfa3bad4" 95 | integrity sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA== 96 | 97 | "@nodelib/fs.scandir@2.1.3": 98 | version "2.1.3" 99 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" 100 | integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== 101 | dependencies: 102 | "@nodelib/fs.stat" "2.0.3" 103 | run-parallel "^1.1.9" 104 | 105 | "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": 106 | version "2.0.3" 107 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" 108 | integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== 109 | 110 | "@nodelib/fs.walk@^1.2.3": 111 | version "1.2.4" 112 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" 113 | integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== 114 | dependencies: 115 | "@nodelib/fs.scandir" "2.1.3" 116 | fastq "^1.6.0" 117 | 118 | "@npmcli/fs@^3.1.0": 119 | version "3.1.0" 120 | resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" 121 | integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== 122 | dependencies: 123 | semver "^7.3.5" 124 | 125 | "@npmcli/node-gyp@^3.0.0": 126 | version "3.0.0" 127 | resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" 128 | integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== 129 | 130 | "@npmcli/promise-spawn@^6.0.0": 131 | version "6.0.2" 132 | resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" 133 | integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== 134 | dependencies: 135 | which "^3.0.0" 136 | 137 | "@npmcli/run-script@^6.0.0": 138 | version "6.0.2" 139 | resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" 140 | integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== 141 | dependencies: 142 | "@npmcli/node-gyp" "^3.0.0" 143 | "@npmcli/promise-spawn" "^6.0.0" 144 | node-gyp "^9.0.0" 145 | read-package-json-fast "^3.0.0" 146 | which "^3.0.0" 147 | 148 | "@pkgjs/parseargs@^0.11.0": 149 | version "0.11.0" 150 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 151 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 152 | 153 | "@tootallnate/once@2": 154 | version "2.0.0" 155 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" 156 | integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== 157 | 158 | "@types/glob@^7.1.1": 159 | version "7.1.3" 160 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" 161 | integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== 162 | dependencies: 163 | "@types/minimatch" "*" 164 | "@types/node" "*" 165 | 166 | "@types/json-schema@^7.0.7": 167 | version "7.0.7" 168 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" 169 | integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== 170 | 171 | "@types/json5@^0.0.29": 172 | version "0.0.29" 173 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 174 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= 175 | 176 | "@types/minimatch@*": 177 | version "3.0.4" 178 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" 179 | integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== 180 | 181 | "@types/node@*": 182 | version "20.12.12" 183 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" 184 | integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== 185 | dependencies: 186 | undici-types "~5.26.4" 187 | 188 | "@types/node@^14.18.63": 189 | version "14.18.63" 190 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" 191 | integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== 192 | 193 | "@types/readable-stream@4.0.0": 194 | version "4.0.0" 195 | resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-4.0.0.tgz#9bcb888b9c77478b02490365d3e0c34fd8b6d5ae" 196 | integrity sha512-s6YqDV111kwuFsT9SwFC+FmZ5n1SEp4H9DXGg6Zqag0lPGeEvBGP9UaLJYpX4cxY7fAFnx2avy1QVvft0LLb7g== 197 | dependencies: 198 | "@types/node" "*" 199 | safe-buffer "~5.1.1" 200 | 201 | "@types/tape@^4.13.4": 202 | version "4.13.4" 203 | resolved "https://registry.yarnpkg.com/@types/tape/-/tape-4.13.4.tgz#2fe220e9040c1721e5b1af6cd71e9e018d07cafb" 204 | integrity sha512-0Mw8/FAMheD2MvyaFYDaAix7X5GfNjl/XI+zvqJdzC6N05BmHKz6Hwn+r7+8PEXDEKrC3V/irC9z7mrl5a130g== 205 | dependencies: 206 | "@types/node" "*" 207 | "@types/through" "*" 208 | 209 | "@types/through@*": 210 | version "0.0.30" 211 | resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" 212 | integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== 213 | dependencies: 214 | "@types/node" "*" 215 | 216 | "@typescript-eslint/eslint-plugin@^4.28.1": 217 | version "4.28.1" 218 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.1.tgz#c045e440196ae45464e08e20c38aff5c3a825947" 219 | integrity sha512-9yfcNpDaNGQ6/LQOX/KhUFTR1sCKH+PBr234k6hI9XJ0VP5UqGxap0AnNwBnWFk1MNyWBylJH9ZkzBXC+5akZQ== 220 | dependencies: 221 | "@typescript-eslint/experimental-utils" "4.28.1" 222 | "@typescript-eslint/scope-manager" "4.28.1" 223 | debug "^4.3.1" 224 | functional-red-black-tree "^1.0.1" 225 | regexpp "^3.1.0" 226 | semver "^7.3.5" 227 | tsutils "^3.21.0" 228 | 229 | "@typescript-eslint/experimental-utils@4.28.1": 230 | version "4.28.1" 231 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz#3869489dcca3c18523c46018b8996e15948dbadc" 232 | integrity sha512-n8/ggadrZ+uyrfrSEchx3jgODdmcx7MzVM2sI3cTpI/YlfSm0+9HEUaWw3aQn2urL2KYlWYMDgn45iLfjDYB+Q== 233 | dependencies: 234 | "@types/json-schema" "^7.0.7" 235 | "@typescript-eslint/scope-manager" "4.28.1" 236 | "@typescript-eslint/types" "4.28.1" 237 | "@typescript-eslint/typescript-estree" "4.28.1" 238 | eslint-scope "^5.1.1" 239 | eslint-utils "^3.0.0" 240 | 241 | "@typescript-eslint/parser@^4.28.1": 242 | version "4.28.1" 243 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.1.tgz#5181b81658414f47291452c15bf6cd44a32f85bd" 244 | integrity sha512-UjrMsgnhQIIK82hXGaD+MCN8IfORS1CbMdu7VlZbYa8LCZtbZjJA26De4IPQB7XYZbL8gJ99KWNj0l6WD0guJg== 245 | dependencies: 246 | "@typescript-eslint/scope-manager" "4.28.1" 247 | "@typescript-eslint/types" "4.28.1" 248 | "@typescript-eslint/typescript-estree" "4.28.1" 249 | debug "^4.3.1" 250 | 251 | "@typescript-eslint/scope-manager@4.28.1": 252 | version "4.28.1" 253 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz#fd3c20627cdc12933f6d98b386940d8d0ce8a991" 254 | integrity sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA== 255 | dependencies: 256 | "@typescript-eslint/types" "4.28.1" 257 | "@typescript-eslint/visitor-keys" "4.28.1" 258 | 259 | "@typescript-eslint/types@4.28.1": 260 | version "4.28.1" 261 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.1.tgz#d0f2ecbef3684634db357b9bbfc97b94b828f83f" 262 | integrity sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg== 263 | 264 | "@typescript-eslint/typescript-estree@4.28.1": 265 | version "4.28.1" 266 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz#af882ae41740d1f268e38b4d0fad21e7e8d86a81" 267 | integrity sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ== 268 | dependencies: 269 | "@typescript-eslint/types" "4.28.1" 270 | "@typescript-eslint/visitor-keys" "4.28.1" 271 | debug "^4.3.1" 272 | globby "^11.0.3" 273 | is-glob "^4.0.1" 274 | semver "^7.3.5" 275 | tsutils "^3.21.0" 276 | 277 | "@typescript-eslint/visitor-keys@4.28.1": 278 | version "4.28.1" 279 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz#162a515ee255f18a6068edc26df793cdc1ec9157" 280 | integrity sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg== 281 | dependencies: 282 | "@typescript-eslint/types" "4.28.1" 283 | eslint-visitor-keys "^2.0.0" 284 | 285 | abbrev@^1.0.0: 286 | version "1.1.1" 287 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 288 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 289 | 290 | acorn-jsx@^5.3.1: 291 | version "5.3.1" 292 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 293 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 294 | 295 | acorn@^7.4.0: 296 | version "7.4.1" 297 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 298 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 299 | 300 | agent-base@6, agent-base@^6.0.2: 301 | version "6.0.2" 302 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 303 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 304 | dependencies: 305 | debug "4" 306 | 307 | agentkeepalive@^4.2.1: 308 | version "4.3.0" 309 | resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" 310 | integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== 311 | dependencies: 312 | debug "^4.1.0" 313 | depd "^2.0.0" 314 | humanize-ms "^1.2.1" 315 | 316 | aggregate-error@^3.0.0: 317 | version "3.1.0" 318 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 319 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 320 | dependencies: 321 | clean-stack "^2.0.0" 322 | indent-string "^4.0.0" 323 | 324 | ajv@^6.10.0, ajv@^6.12.4: 325 | version "6.12.6" 326 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 327 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 328 | dependencies: 329 | fast-deep-equal "^3.1.1" 330 | fast-json-stable-stringify "^2.0.0" 331 | json-schema-traverse "^0.4.1" 332 | uri-js "^4.2.2" 333 | 334 | ajv@^8.0.1: 335 | version "8.6.0" 336 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" 337 | integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== 338 | dependencies: 339 | fast-deep-equal "^3.1.1" 340 | json-schema-traverse "^1.0.0" 341 | require-from-string "^2.0.2" 342 | uri-js "^4.2.2" 343 | 344 | ansi-colors@^4.1.1: 345 | version "4.1.1" 346 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 347 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 348 | 349 | ansi-regex@^5.0.1: 350 | version "5.0.1" 351 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 352 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 353 | 354 | ansi-regex@^6.0.1: 355 | version "6.0.1" 356 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 357 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 358 | 359 | ansi-styles@^3.2.1: 360 | version "3.2.1" 361 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 362 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 363 | dependencies: 364 | color-convert "^1.9.0" 365 | 366 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 367 | version "4.3.0" 368 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 369 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 370 | dependencies: 371 | color-convert "^2.0.1" 372 | 373 | ansi-styles@^6.1.0: 374 | version "6.2.1" 375 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 376 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 377 | 378 | "aproba@^1.0.3 || ^2.0.0": 379 | version "2.0.0" 380 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" 381 | integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== 382 | 383 | are-we-there-yet@^3.0.0: 384 | version "3.0.1" 385 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" 386 | integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== 387 | dependencies: 388 | delegates "^1.0.0" 389 | readable-stream "^3.6.0" 390 | 391 | argparse@^1.0.7: 392 | version "1.0.10" 393 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 394 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 395 | dependencies: 396 | sprintf-js "~1.0.2" 397 | 398 | array-includes@^3.1.3: 399 | version "3.1.3" 400 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" 401 | integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== 402 | dependencies: 403 | call-bind "^1.0.2" 404 | define-properties "^1.1.3" 405 | es-abstract "^1.18.0-next.2" 406 | get-intrinsic "^1.1.1" 407 | is-string "^1.0.5" 408 | 409 | array-union@^2.1.0: 410 | version "2.1.0" 411 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 412 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 413 | 414 | array.prototype.flat@^1.2.4: 415 | version "1.2.4" 416 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" 417 | integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== 418 | dependencies: 419 | call-bind "^1.0.0" 420 | define-properties "^1.1.3" 421 | es-abstract "^1.18.0-next.1" 422 | 423 | astral-regex@^2.0.0: 424 | version "2.0.0" 425 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 426 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 427 | 428 | balanced-match@^1.0.0: 429 | version "1.0.2" 430 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 431 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 432 | 433 | bin-links@4.0.1: 434 | version "4.0.1" 435 | resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.1.tgz#afeb0549e642f61ff889b58ea2f8dca78fb9d8d3" 436 | integrity sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA== 437 | dependencies: 438 | cmd-shim "^6.0.0" 439 | npm-normalize-package-bin "^3.0.0" 440 | read-cmd-shim "^4.0.0" 441 | write-file-atomic "^5.0.0" 442 | 443 | brace-expansion@^1.1.7: 444 | version "1.1.11" 445 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 446 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 447 | dependencies: 448 | balanced-match "^1.0.0" 449 | concat-map "0.0.1" 450 | 451 | brace-expansion@^2.0.1: 452 | version "2.0.1" 453 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 454 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 455 | dependencies: 456 | balanced-match "^1.0.0" 457 | 458 | braces@^3.0.3: 459 | version "3.0.3" 460 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 461 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 462 | dependencies: 463 | fill-range "^7.1.1" 464 | 465 | cacache@^17.0.0: 466 | version "17.1.3" 467 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" 468 | integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== 469 | dependencies: 470 | "@npmcli/fs" "^3.1.0" 471 | fs-minipass "^3.0.0" 472 | glob "^10.2.2" 473 | lru-cache "^7.7.1" 474 | minipass "^5.0.0" 475 | minipass-collect "^1.0.2" 476 | minipass-flush "^1.0.5" 477 | minipass-pipeline "^1.2.4" 478 | p-map "^4.0.0" 479 | ssri "^10.0.0" 480 | tar "^6.1.11" 481 | unique-filename "^3.0.0" 482 | 483 | call-bind@^1.0.0, call-bind@^1.0.2: 484 | version "1.0.2" 485 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 486 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 487 | dependencies: 488 | function-bind "^1.1.1" 489 | get-intrinsic "^1.0.2" 490 | 491 | callsites@^3.0.0: 492 | version "3.1.0" 493 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 494 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 495 | 496 | chalk@^2.0.0: 497 | version "2.4.2" 498 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 499 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 500 | dependencies: 501 | ansi-styles "^3.2.1" 502 | escape-string-regexp "^1.0.5" 503 | supports-color "^5.3.0" 504 | 505 | chalk@^4.0.0: 506 | version "4.1.0" 507 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 508 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 509 | dependencies: 510 | ansi-styles "^4.1.0" 511 | supports-color "^7.1.0" 512 | 513 | chownr@^2.0.0: 514 | version "2.0.0" 515 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" 516 | integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== 517 | 518 | clean-stack@^2.0.0: 519 | version "2.2.0" 520 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 521 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 522 | 523 | cliui@^7.0.2: 524 | version "7.0.4" 525 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 526 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 527 | dependencies: 528 | string-width "^4.2.0" 529 | strip-ansi "^6.0.0" 530 | wrap-ansi "^7.0.0" 531 | 532 | cmd-shim@^6.0.0: 533 | version "6.0.1" 534 | resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" 535 | integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== 536 | 537 | color-convert@^1.9.0: 538 | version "1.9.3" 539 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 540 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 541 | dependencies: 542 | color-name "1.1.3" 543 | 544 | color-convert@^2.0.1: 545 | version "2.0.1" 546 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 547 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 548 | dependencies: 549 | color-name "~1.1.4" 550 | 551 | color-name@1.1.3: 552 | version "1.1.3" 553 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 554 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 555 | 556 | color-name@~1.1.4: 557 | version "1.1.4" 558 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 559 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 560 | 561 | color-support@^1.1.3: 562 | version "1.1.3" 563 | resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" 564 | integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== 565 | 566 | concat-map@0.0.1: 567 | version "0.0.1" 568 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 569 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 570 | 571 | console-control-strings@^1.1.0: 572 | version "1.1.0" 573 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 574 | integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== 575 | 576 | cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: 577 | version "7.0.3" 578 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 579 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 580 | dependencies: 581 | path-key "^3.1.0" 582 | shebang-command "^2.0.0" 583 | which "^2.0.1" 584 | 585 | debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: 586 | version "4.3.4" 587 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 588 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 589 | dependencies: 590 | ms "2.1.2" 591 | 592 | debug@^2.6.9: 593 | version "2.6.9" 594 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 595 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 596 | dependencies: 597 | ms "2.0.0" 598 | 599 | debug@^3.2.7: 600 | version "3.2.7" 601 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 602 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 603 | dependencies: 604 | ms "^2.1.1" 605 | 606 | deep-equal@~1.0.1: 607 | version "1.0.1" 608 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 609 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= 610 | 611 | deep-is@^0.1.3: 612 | version "0.1.3" 613 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 614 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 615 | 616 | define-properties@^1.1.2, define-properties@^1.1.3: 617 | version "1.1.3" 618 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 619 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 620 | dependencies: 621 | object-keys "^1.0.12" 622 | 623 | defined@~1.0.0: 624 | version "1.0.0" 625 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 626 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 627 | 628 | delegates@^1.0.0: 629 | version "1.0.0" 630 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 631 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 632 | 633 | depd@^2.0.0: 634 | version "2.0.0" 635 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 636 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 637 | 638 | detect-indent@^6.0.0: 639 | version "6.1.0" 640 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" 641 | integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== 642 | 643 | detect-newline@3.1.0: 644 | version "3.1.0" 645 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 646 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 647 | 648 | diff@^5.0.0: 649 | version "5.0.0" 650 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 651 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 652 | 653 | dir-glob@^3.0.1: 654 | version "3.0.1" 655 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 656 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 657 | dependencies: 658 | path-type "^4.0.0" 659 | 660 | doctrine@^2.1.0: 661 | version "2.1.0" 662 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 663 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 664 | dependencies: 665 | esutils "^2.0.2" 666 | 667 | doctrine@^3.0.0: 668 | version "3.0.0" 669 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 670 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 671 | dependencies: 672 | esutils "^2.0.2" 673 | 674 | eastasianwidth@^0.2.0: 675 | version "0.2.0" 676 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 677 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 678 | 679 | emoji-regex@^8.0.0: 680 | version "8.0.0" 681 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 682 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 683 | 684 | emoji-regex@^9.2.2: 685 | version "9.2.2" 686 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 687 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 688 | 689 | encoding@^0.1.13: 690 | version "0.1.13" 691 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" 692 | integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== 693 | dependencies: 694 | iconv-lite "^0.6.2" 695 | 696 | enquirer@^2.3.5: 697 | version "2.3.6" 698 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 699 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 700 | dependencies: 701 | ansi-colors "^4.1.1" 702 | 703 | env-paths@^2.2.0: 704 | version "2.2.1" 705 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" 706 | integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== 707 | 708 | err-code@^2.0.2: 709 | version "2.0.3" 710 | resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" 711 | integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== 712 | 713 | error-ex@^1.3.1: 714 | version "1.3.2" 715 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 716 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 717 | dependencies: 718 | is-arrayish "^0.2.1" 719 | 720 | es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2, es-abstract@^1.5.0: 721 | version "1.18.3" 722 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" 723 | integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== 724 | dependencies: 725 | call-bind "^1.0.2" 726 | es-to-primitive "^1.2.1" 727 | function-bind "^1.1.1" 728 | get-intrinsic "^1.1.1" 729 | has "^1.0.3" 730 | has-symbols "^1.0.2" 731 | is-callable "^1.2.3" 732 | is-negative-zero "^2.0.1" 733 | is-regex "^1.1.3" 734 | is-string "^1.0.6" 735 | object-inspect "^1.10.3" 736 | object-keys "^1.1.1" 737 | object.assign "^4.1.2" 738 | string.prototype.trimend "^1.0.4" 739 | string.prototype.trimstart "^1.0.4" 740 | unbox-primitive "^1.0.1" 741 | 742 | es-to-primitive@^1.2.1: 743 | version "1.2.1" 744 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 745 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 746 | dependencies: 747 | is-callable "^1.1.4" 748 | is-date-object "^1.0.1" 749 | is-symbol "^1.0.2" 750 | 751 | escalade@^3.1.1: 752 | version "3.1.1" 753 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 754 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 755 | 756 | escape-string-regexp@^1.0.5: 757 | version "1.0.5" 758 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 759 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 760 | 761 | escape-string-regexp@^4.0.0: 762 | version "4.0.0" 763 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 764 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 765 | 766 | eslint-config-prettier@^8.3.0: 767 | version "8.3.0" 768 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" 769 | integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== 770 | 771 | eslint-import-resolver-node@^0.3.4: 772 | version "0.3.4" 773 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" 774 | integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== 775 | dependencies: 776 | debug "^2.6.9" 777 | resolve "^1.13.1" 778 | 779 | eslint-module-utils@^2.6.1: 780 | version "2.6.1" 781 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" 782 | integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== 783 | dependencies: 784 | debug "^3.2.7" 785 | pkg-dir "^2.0.0" 786 | 787 | eslint-plugin-import@^2.23.4: 788 | version "2.23.4" 789 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" 790 | integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== 791 | dependencies: 792 | array-includes "^3.1.3" 793 | array.prototype.flat "^1.2.4" 794 | debug "^2.6.9" 795 | doctrine "^2.1.0" 796 | eslint-import-resolver-node "^0.3.4" 797 | eslint-module-utils "^2.6.1" 798 | find-up "^2.0.0" 799 | has "^1.0.3" 800 | is-core-module "^2.4.0" 801 | minimatch "^3.0.4" 802 | object.values "^1.1.3" 803 | pkg-up "^2.0.0" 804 | read-pkg-up "^3.0.0" 805 | resolve "^1.20.0" 806 | tsconfig-paths "^3.9.0" 807 | 808 | eslint-plugin-prettier@^3.4.0: 809 | version "3.4.0" 810 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" 811 | integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== 812 | dependencies: 813 | prettier-linter-helpers "^1.0.0" 814 | 815 | eslint-scope@^5.1.1: 816 | version "5.1.1" 817 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 818 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 819 | dependencies: 820 | esrecurse "^4.3.0" 821 | estraverse "^4.1.1" 822 | 823 | eslint-utils@^2.1.0: 824 | version "2.1.0" 825 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 826 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 827 | dependencies: 828 | eslint-visitor-keys "^1.1.0" 829 | 830 | eslint-utils@^3.0.0: 831 | version "3.0.0" 832 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 833 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 834 | dependencies: 835 | eslint-visitor-keys "^2.0.0" 836 | 837 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 838 | version "1.3.0" 839 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 840 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 841 | 842 | eslint-visitor-keys@^2.0.0: 843 | version "2.0.0" 844 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 845 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 846 | 847 | eslint@^7.29.0: 848 | version "7.29.0" 849 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.29.0.tgz#ee2a7648f2e729485e4d0bd6383ec1deabc8b3c0" 850 | integrity sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA== 851 | dependencies: 852 | "@babel/code-frame" "7.12.11" 853 | "@eslint/eslintrc" "^0.4.2" 854 | ajv "^6.10.0" 855 | chalk "^4.0.0" 856 | cross-spawn "^7.0.2" 857 | debug "^4.0.1" 858 | doctrine "^3.0.0" 859 | enquirer "^2.3.5" 860 | escape-string-regexp "^4.0.0" 861 | eslint-scope "^5.1.1" 862 | eslint-utils "^2.1.0" 863 | eslint-visitor-keys "^2.0.0" 864 | espree "^7.3.1" 865 | esquery "^1.4.0" 866 | esutils "^2.0.2" 867 | fast-deep-equal "^3.1.3" 868 | file-entry-cache "^6.0.1" 869 | functional-red-black-tree "^1.0.1" 870 | glob-parent "^5.1.2" 871 | globals "^13.6.0" 872 | ignore "^4.0.6" 873 | import-fresh "^3.0.0" 874 | imurmurhash "^0.1.4" 875 | is-glob "^4.0.0" 876 | js-yaml "^3.13.1" 877 | json-stable-stringify-without-jsonify "^1.0.1" 878 | levn "^0.4.1" 879 | lodash.merge "^4.6.2" 880 | minimatch "^3.0.4" 881 | natural-compare "^1.4.0" 882 | optionator "^0.9.1" 883 | progress "^2.0.0" 884 | regexpp "^3.1.0" 885 | semver "^7.2.1" 886 | strip-ansi "^6.0.0" 887 | strip-json-comments "^3.1.0" 888 | table "^6.0.9" 889 | text-table "^0.2.0" 890 | v8-compile-cache "^2.0.3" 891 | 892 | espree@^7.3.0, espree@^7.3.1: 893 | version "7.3.1" 894 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 895 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 896 | dependencies: 897 | acorn "^7.4.0" 898 | acorn-jsx "^5.3.1" 899 | eslint-visitor-keys "^1.3.0" 900 | 901 | esprima@^4.0.0: 902 | version "4.0.1" 903 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 904 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 905 | 906 | esquery@^1.4.0: 907 | version "1.4.0" 908 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 909 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 910 | dependencies: 911 | estraverse "^5.1.0" 912 | 913 | esrecurse@^4.3.0: 914 | version "4.3.0" 915 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 916 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 917 | dependencies: 918 | estraverse "^5.2.0" 919 | 920 | estraverse@^4.1.1: 921 | version "4.3.0" 922 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 923 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 924 | 925 | estraverse@^5.1.0, estraverse@^5.2.0: 926 | version "5.2.0" 927 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 928 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 929 | 930 | esutils@^2.0.2: 931 | version "2.0.3" 932 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 933 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 934 | 935 | execa@^5.1.1: 936 | version "5.1.1" 937 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 938 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 939 | dependencies: 940 | cross-spawn "^7.0.3" 941 | get-stream "^6.0.0" 942 | human-signals "^2.1.0" 943 | is-stream "^2.0.0" 944 | merge-stream "^2.0.0" 945 | npm-run-path "^4.0.1" 946 | onetime "^5.1.2" 947 | signal-exit "^3.0.3" 948 | strip-final-newline "^2.0.0" 949 | 950 | exponential-backoff@^3.1.1: 951 | version "3.1.1" 952 | resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" 953 | integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== 954 | 955 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 956 | version "3.1.3" 957 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 958 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 959 | 960 | fast-diff@^1.1.2: 961 | version "1.2.0" 962 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 963 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 964 | 965 | fast-glob@^3.0.3, fast-glob@^3.1.1: 966 | version "3.2.6" 967 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.6.tgz#434dd9529845176ea049acc9343e8282765c6e1a" 968 | integrity sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ== 969 | dependencies: 970 | "@nodelib/fs.stat" "^2.0.2" 971 | "@nodelib/fs.walk" "^1.2.3" 972 | glob-parent "^5.1.2" 973 | merge2 "^1.3.0" 974 | micromatch "^4.0.4" 975 | 976 | fast-json-stable-stringify@^2.0.0: 977 | version "2.1.0" 978 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 979 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 980 | 981 | fast-levenshtein@^2.0.6: 982 | version "2.0.6" 983 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 984 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 985 | 986 | fastq@^1.6.0: 987 | version "1.9.0" 988 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" 989 | integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== 990 | dependencies: 991 | reusify "^1.0.4" 992 | 993 | file-entry-cache@^6.0.1: 994 | version "6.0.1" 995 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 996 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 997 | dependencies: 998 | flat-cache "^3.0.4" 999 | 1000 | fill-range@^7.1.1: 1001 | version "7.1.1" 1002 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 1003 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1004 | dependencies: 1005 | to-regex-range "^5.0.1" 1006 | 1007 | find-up@^2.0.0, find-up@^2.1.0: 1008 | version "2.1.0" 1009 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1010 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 1011 | dependencies: 1012 | locate-path "^2.0.0" 1013 | 1014 | flat-cache@^3.0.4: 1015 | version "3.0.4" 1016 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1017 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1018 | dependencies: 1019 | flatted "^3.1.0" 1020 | rimraf "^3.0.2" 1021 | 1022 | flatted@^3.1.0: 1023 | version "3.1.1" 1024 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 1025 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== 1026 | 1027 | for-each@~0.3.2: 1028 | version "0.3.2" 1029 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" 1030 | integrity sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ= 1031 | dependencies: 1032 | is-function "~1.0.0" 1033 | 1034 | foreground-child@^3.1.0: 1035 | version "3.1.1" 1036 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" 1037 | integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 1038 | dependencies: 1039 | cross-spawn "^7.0.0" 1040 | signal-exit "^4.0.1" 1041 | 1042 | fs-minipass@^2.0.0: 1043 | version "2.1.0" 1044 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" 1045 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== 1046 | dependencies: 1047 | minipass "^3.0.0" 1048 | 1049 | fs-minipass@^3.0.0: 1050 | version "3.0.2" 1051 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" 1052 | integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== 1053 | dependencies: 1054 | minipass "^5.0.0" 1055 | 1056 | fs.realpath@^1.0.0: 1057 | version "1.0.0" 1058 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1059 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1060 | 1061 | function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0: 1062 | version "1.1.1" 1063 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1064 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1065 | 1066 | functional-red-black-tree@^1.0.1: 1067 | version "1.0.1" 1068 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1069 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1070 | 1071 | gauge@^4.0.3: 1072 | version "4.0.4" 1073 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" 1074 | integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== 1075 | dependencies: 1076 | aproba "^1.0.3 || ^2.0.0" 1077 | color-support "^1.1.3" 1078 | console-control-strings "^1.1.0" 1079 | has-unicode "^2.0.1" 1080 | signal-exit "^3.0.7" 1081 | string-width "^4.2.3" 1082 | strip-ansi "^6.0.1" 1083 | wide-align "^1.1.5" 1084 | 1085 | get-caller-file@^2.0.5: 1086 | version "2.0.5" 1087 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1088 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1089 | 1090 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: 1091 | version "1.1.1" 1092 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 1093 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 1094 | dependencies: 1095 | function-bind "^1.1.1" 1096 | has "^1.0.3" 1097 | has-symbols "^1.0.1" 1098 | 1099 | get-stream@^6.0.0: 1100 | version "6.0.1" 1101 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1102 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1103 | 1104 | git-hooks-list@1.0.3: 1105 | version "1.0.3" 1106 | resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-1.0.3.tgz#be5baaf78203ce342f2f844a9d2b03dba1b45156" 1107 | integrity sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ== 1108 | 1109 | glob-parent@^5.1.2: 1110 | version "5.1.2" 1111 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1112 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1113 | dependencies: 1114 | is-glob "^4.0.1" 1115 | 1116 | glob@^10.2.2: 1117 | version "10.3.3" 1118 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" 1119 | integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== 1120 | dependencies: 1121 | foreground-child "^3.1.0" 1122 | jackspeak "^2.0.3" 1123 | minimatch "^9.0.1" 1124 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1125 | path-scurry "^1.10.1" 1126 | 1127 | glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: 1128 | version "7.1.7" 1129 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 1130 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 1131 | dependencies: 1132 | fs.realpath "^1.0.0" 1133 | inflight "^1.0.4" 1134 | inherits "2" 1135 | minimatch "^3.0.4" 1136 | once "^1.3.0" 1137 | path-is-absolute "^1.0.0" 1138 | 1139 | globals@^13.6.0, globals@^13.9.0: 1140 | version "13.9.0" 1141 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" 1142 | integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== 1143 | dependencies: 1144 | type-fest "^0.20.2" 1145 | 1146 | globby@10.0.0: 1147 | version "10.0.0" 1148 | resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.0.tgz#abfcd0630037ae174a88590132c2f6804e291072" 1149 | integrity sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw== 1150 | dependencies: 1151 | "@types/glob" "^7.1.1" 1152 | array-union "^2.1.0" 1153 | dir-glob "^3.0.1" 1154 | fast-glob "^3.0.3" 1155 | glob "^7.1.3" 1156 | ignore "^5.1.1" 1157 | merge2 "^1.2.3" 1158 | slash "^3.0.0" 1159 | 1160 | globby@^11.0.3: 1161 | version "11.0.4" 1162 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" 1163 | integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== 1164 | dependencies: 1165 | array-union "^2.1.0" 1166 | dir-glob "^3.0.1" 1167 | fast-glob "^3.1.1" 1168 | ignore "^5.1.4" 1169 | merge2 "^1.3.0" 1170 | slash "^3.0.0" 1171 | 1172 | graceful-fs@^4.1.2, graceful-fs@^4.2.6: 1173 | version "4.2.11" 1174 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 1175 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 1176 | 1177 | has-bigints@^1.0.1: 1178 | version "1.0.1" 1179 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 1180 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 1181 | 1182 | has-flag@^3.0.0: 1183 | version "3.0.0" 1184 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1185 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1186 | 1187 | has-flag@^4.0.0: 1188 | version "4.0.0" 1189 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1190 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1191 | 1192 | has-symbols@^1.0.1, has-symbols@^1.0.2: 1193 | version "1.0.2" 1194 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 1195 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 1196 | 1197 | has-unicode@^2.0.1: 1198 | version "2.0.1" 1199 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1200 | integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== 1201 | 1202 | has@^1.0.3, has@~1.0.1: 1203 | version "1.0.3" 1204 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1205 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1206 | dependencies: 1207 | function-bind "^1.1.1" 1208 | 1209 | hosted-git-info@^2.1.4: 1210 | version "2.8.9" 1211 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 1212 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 1213 | 1214 | http-cache-semantics@^4.1.1: 1215 | version "4.1.1" 1216 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" 1217 | integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== 1218 | 1219 | http-proxy-agent@^5.0.0: 1220 | version "5.0.0" 1221 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" 1222 | integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== 1223 | dependencies: 1224 | "@tootallnate/once" "2" 1225 | agent-base "6" 1226 | debug "4" 1227 | 1228 | https-proxy-agent@^5.0.0: 1229 | version "5.0.1" 1230 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1231 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1232 | dependencies: 1233 | agent-base "6" 1234 | debug "4" 1235 | 1236 | human-signals@^2.1.0: 1237 | version "2.1.0" 1238 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1239 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1240 | 1241 | humanize-ms@^1.2.1: 1242 | version "1.2.1" 1243 | resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" 1244 | integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== 1245 | dependencies: 1246 | ms "^2.0.0" 1247 | 1248 | iconv-lite@^0.6.2: 1249 | version "0.6.3" 1250 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 1251 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 1252 | dependencies: 1253 | safer-buffer ">= 2.1.2 < 3.0.0" 1254 | 1255 | ignore@^4.0.6: 1256 | version "4.0.6" 1257 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1258 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1259 | 1260 | ignore@^5.1.1, ignore@^5.1.4: 1261 | version "5.1.8" 1262 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 1263 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 1264 | 1265 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1266 | version "3.2.1" 1267 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1268 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 1269 | dependencies: 1270 | parent-module "^1.0.0" 1271 | resolve-from "^4.0.0" 1272 | 1273 | imurmurhash@^0.1.4: 1274 | version "0.1.4" 1275 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1276 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1277 | 1278 | indent-string@^4.0.0: 1279 | version "4.0.0" 1280 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 1281 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 1282 | 1283 | inflight@^1.0.4: 1284 | version "1.0.6" 1285 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1286 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1287 | dependencies: 1288 | once "^1.3.0" 1289 | wrappy "1" 1290 | 1291 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 1292 | version "2.0.3" 1293 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1294 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1295 | 1296 | ip@^2.0.0: 1297 | version "2.0.1" 1298 | resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" 1299 | integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== 1300 | 1301 | is-arrayish@^0.2.1: 1302 | version "0.2.1" 1303 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1304 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1305 | 1306 | is-bigint@^1.0.1: 1307 | version "1.0.2" 1308 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" 1309 | integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== 1310 | 1311 | is-boolean-object@^1.1.0: 1312 | version "1.1.1" 1313 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" 1314 | integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== 1315 | dependencies: 1316 | call-bind "^1.0.2" 1317 | 1318 | is-callable@^1.1.4, is-callable@^1.2.3: 1319 | version "1.2.3" 1320 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" 1321 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== 1322 | 1323 | is-core-module@^2.2.0, is-core-module@^2.4.0: 1324 | version "2.4.0" 1325 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" 1326 | integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== 1327 | dependencies: 1328 | has "^1.0.3" 1329 | 1330 | is-date-object@^1.0.1: 1331 | version "1.0.1" 1332 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1333 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1334 | 1335 | is-extglob@^2.1.1: 1336 | version "2.1.1" 1337 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1338 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1339 | 1340 | is-fullwidth-code-point@^3.0.0: 1341 | version "3.0.0" 1342 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1343 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1344 | 1345 | is-function@~1.0.0: 1346 | version "1.0.1" 1347 | resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" 1348 | integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= 1349 | 1350 | is-glob@^4.0.0, is-glob@^4.0.1: 1351 | version "4.0.1" 1352 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1353 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1354 | dependencies: 1355 | is-extglob "^2.1.1" 1356 | 1357 | is-lambda@^1.0.1: 1358 | version "1.0.1" 1359 | resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" 1360 | integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== 1361 | 1362 | is-negative-zero@^2.0.1: 1363 | version "2.0.1" 1364 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 1365 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 1366 | 1367 | is-number-object@^1.0.4: 1368 | version "1.0.5" 1369 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" 1370 | integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== 1371 | 1372 | is-number@^7.0.0: 1373 | version "7.0.0" 1374 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1375 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1376 | 1377 | is-plain-obj@2.1.0: 1378 | version "2.1.0" 1379 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1380 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1381 | 1382 | is-regex@^1.1.3: 1383 | version "1.1.3" 1384 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" 1385 | integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== 1386 | dependencies: 1387 | call-bind "^1.0.2" 1388 | has-symbols "^1.0.2" 1389 | 1390 | is-stream@^2.0.0: 1391 | version "2.0.0" 1392 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 1393 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 1394 | 1395 | is-string@^1.0.5, is-string@^1.0.6: 1396 | version "1.0.6" 1397 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" 1398 | integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== 1399 | 1400 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1401 | version "1.0.4" 1402 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 1403 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 1404 | dependencies: 1405 | has-symbols "^1.0.2" 1406 | 1407 | isexe@^2.0.0: 1408 | version "2.0.0" 1409 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1410 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1411 | 1412 | jackspeak@^2.0.3: 1413 | version "2.2.2" 1414 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" 1415 | integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== 1416 | dependencies: 1417 | "@isaacs/cliui" "^8.0.2" 1418 | optionalDependencies: 1419 | "@pkgjs/parseargs" "^0.11.0" 1420 | 1421 | js-tokens@^4.0.0: 1422 | version "4.0.0" 1423 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1424 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1425 | 1426 | js-yaml@^3.13.1: 1427 | version "3.13.1" 1428 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1429 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1430 | dependencies: 1431 | argparse "^1.0.7" 1432 | esprima "^4.0.0" 1433 | 1434 | json-parse-better-errors@^1.0.1: 1435 | version "1.0.2" 1436 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1437 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1438 | 1439 | json-parse-even-better-errors@^3.0.0: 1440 | version "3.0.0" 1441 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" 1442 | integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== 1443 | 1444 | json-schema-traverse@^0.4.1: 1445 | version "0.4.1" 1446 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1447 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1448 | 1449 | json-schema-traverse@^1.0.0: 1450 | version "1.0.0" 1451 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1452 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1453 | 1454 | json-stable-stringify-without-jsonify@^1.0.1: 1455 | version "1.0.1" 1456 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1457 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1458 | 1459 | json5@^1.0.1: 1460 | version "1.0.2" 1461 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" 1462 | integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== 1463 | dependencies: 1464 | minimist "^1.2.0" 1465 | 1466 | levn@^0.4.1: 1467 | version "0.4.1" 1468 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1469 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1470 | dependencies: 1471 | prelude-ls "^1.2.1" 1472 | type-check "~0.4.0" 1473 | 1474 | load-json-file@^4.0.0: 1475 | version "4.0.0" 1476 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1477 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 1478 | dependencies: 1479 | graceful-fs "^4.1.2" 1480 | parse-json "^4.0.0" 1481 | pify "^3.0.0" 1482 | strip-bom "^3.0.0" 1483 | 1484 | locate-path@^2.0.0: 1485 | version "2.0.0" 1486 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1487 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1488 | dependencies: 1489 | p-locate "^2.0.0" 1490 | path-exists "^3.0.0" 1491 | 1492 | lodash.clonedeep@^4.5.0: 1493 | version "4.5.0" 1494 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1495 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 1496 | 1497 | lodash.merge@^4.6.2: 1498 | version "4.6.2" 1499 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1500 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1501 | 1502 | lodash.truncate@^4.4.2: 1503 | version "4.4.2" 1504 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 1505 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 1506 | 1507 | lru-cache@^6.0.0: 1508 | version "6.0.0" 1509 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1510 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1511 | dependencies: 1512 | yallist "^4.0.0" 1513 | 1514 | lru-cache@^7.7.1: 1515 | version "7.18.3" 1516 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" 1517 | integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== 1518 | 1519 | "lru-cache@^9.1.1 || ^10.0.0": 1520 | version "10.0.0" 1521 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" 1522 | integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== 1523 | 1524 | make-fetch-happen@^11.0.3: 1525 | version "11.1.1" 1526 | resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" 1527 | integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== 1528 | dependencies: 1529 | agentkeepalive "^4.2.1" 1530 | cacache "^17.0.0" 1531 | http-cache-semantics "^4.1.1" 1532 | http-proxy-agent "^5.0.0" 1533 | https-proxy-agent "^5.0.0" 1534 | is-lambda "^1.0.1" 1535 | lru-cache "^7.7.1" 1536 | minipass "^5.0.0" 1537 | minipass-fetch "^3.0.0" 1538 | minipass-flush "^1.0.5" 1539 | minipass-pipeline "^1.2.4" 1540 | negotiator "^0.6.3" 1541 | promise-retry "^2.0.1" 1542 | socks-proxy-agent "^7.0.0" 1543 | ssri "^10.0.0" 1544 | 1545 | merge-stream@^2.0.0: 1546 | version "2.0.0" 1547 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1548 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1549 | 1550 | merge2@^1.2.3, merge2@^1.3.0: 1551 | version "1.4.1" 1552 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1553 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1554 | 1555 | micromatch@^4.0.4: 1556 | version "4.0.8" 1557 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1558 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1559 | dependencies: 1560 | braces "^3.0.3" 1561 | picomatch "^2.3.1" 1562 | 1563 | mimic-fn@^2.1.0: 1564 | version "2.1.0" 1565 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1566 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1567 | 1568 | minimatch@^3.0.4: 1569 | version "3.1.2" 1570 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1571 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1572 | dependencies: 1573 | brace-expansion "^1.1.7" 1574 | 1575 | minimatch@^9.0.1: 1576 | version "9.0.3" 1577 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" 1578 | integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== 1579 | dependencies: 1580 | brace-expansion "^2.0.1" 1581 | 1582 | minimist@^1.2.0, minimist@~1.2.0: 1583 | version "1.2.7" 1584 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 1585 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 1586 | 1587 | minipass-collect@^1.0.2: 1588 | version "1.0.2" 1589 | resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" 1590 | integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== 1591 | dependencies: 1592 | minipass "^3.0.0" 1593 | 1594 | minipass-fetch@^3.0.0: 1595 | version "3.0.3" 1596 | resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" 1597 | integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== 1598 | dependencies: 1599 | minipass "^5.0.0" 1600 | minipass-sized "^1.0.3" 1601 | minizlib "^2.1.2" 1602 | optionalDependencies: 1603 | encoding "^0.1.13" 1604 | 1605 | minipass-flush@^1.0.5: 1606 | version "1.0.5" 1607 | resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" 1608 | integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== 1609 | dependencies: 1610 | minipass "^3.0.0" 1611 | 1612 | minipass-pipeline@^1.2.4: 1613 | version "1.2.4" 1614 | resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" 1615 | integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== 1616 | dependencies: 1617 | minipass "^3.0.0" 1618 | 1619 | minipass-sized@^1.0.3: 1620 | version "1.0.3" 1621 | resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" 1622 | integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== 1623 | dependencies: 1624 | minipass "^3.0.0" 1625 | 1626 | minipass@^3.0.0: 1627 | version "3.1.3" 1628 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" 1629 | integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== 1630 | dependencies: 1631 | yallist "^4.0.0" 1632 | 1633 | minipass@^5.0.0: 1634 | version "5.0.0" 1635 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" 1636 | integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== 1637 | 1638 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": 1639 | version "7.0.2" 1640 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" 1641 | integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== 1642 | 1643 | minizlib@^2.1.1, minizlib@^2.1.2: 1644 | version "2.1.2" 1645 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" 1646 | integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== 1647 | dependencies: 1648 | minipass "^3.0.0" 1649 | yallist "^4.0.0" 1650 | 1651 | mkdirp@^1.0.3: 1652 | version "1.0.4" 1653 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1654 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1655 | 1656 | ms@2.0.0: 1657 | version "2.0.0" 1658 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1659 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1660 | 1661 | ms@2.1.2: 1662 | version "2.1.2" 1663 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1664 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1665 | 1666 | ms@^2.0.0, ms@^2.1.1: 1667 | version "2.1.3" 1668 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1669 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1670 | 1671 | natural-compare@^1.4.0: 1672 | version "1.4.0" 1673 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1674 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1675 | 1676 | negotiator@^0.6.3: 1677 | version "0.6.3" 1678 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1679 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1680 | 1681 | node-gyp@^9.0.0: 1682 | version "9.4.0" 1683 | resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" 1684 | integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== 1685 | dependencies: 1686 | env-paths "^2.2.0" 1687 | exponential-backoff "^3.1.1" 1688 | glob "^7.1.4" 1689 | graceful-fs "^4.2.6" 1690 | make-fetch-happen "^11.0.3" 1691 | nopt "^6.0.0" 1692 | npmlog "^6.0.0" 1693 | rimraf "^3.0.2" 1694 | semver "^7.3.5" 1695 | tar "^6.1.2" 1696 | which "^2.0.2" 1697 | 1698 | nopt@^6.0.0: 1699 | version "6.0.0" 1700 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" 1701 | integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== 1702 | dependencies: 1703 | abbrev "^1.0.0" 1704 | 1705 | normalize-package-data@^2.3.2: 1706 | version "2.5.0" 1707 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1708 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1709 | dependencies: 1710 | hosted-git-info "^2.1.4" 1711 | resolve "^1.10.0" 1712 | semver "2 || 3 || 4 || 5" 1713 | validate-npm-package-license "^3.0.1" 1714 | 1715 | npm-normalize-package-bin@^3.0.0: 1716 | version "3.0.1" 1717 | resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" 1718 | integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== 1719 | 1720 | npm-run-path@^4.0.1: 1721 | version "4.0.1" 1722 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1723 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1724 | dependencies: 1725 | path-key "^3.0.0" 1726 | 1727 | npmlog@^6.0.0: 1728 | version "6.0.2" 1729 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" 1730 | integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== 1731 | dependencies: 1732 | are-we-there-yet "^3.0.0" 1733 | console-control-strings "^1.1.0" 1734 | gauge "^4.0.3" 1735 | set-blocking "^2.0.0" 1736 | 1737 | object-inspect@^1.10.3: 1738 | version "1.10.3" 1739 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" 1740 | integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== 1741 | 1742 | object-inspect@~1.2.1: 1743 | version "1.2.1" 1744 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.2.1.tgz#3b62226eb8f6d441751c7d8f22a20ff80ac9dc3f" 1745 | integrity sha1-O2Iibrj21EF1HH2PIqIP+ArJ3D8= 1746 | 1747 | object-keys@^1.0.12, object-keys@^1.1.1: 1748 | version "1.1.1" 1749 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1750 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1751 | 1752 | object.assign@^4.1.2: 1753 | version "4.1.2" 1754 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1755 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1756 | dependencies: 1757 | call-bind "^1.0.0" 1758 | define-properties "^1.1.3" 1759 | has-symbols "^1.0.1" 1760 | object-keys "^1.1.1" 1761 | 1762 | object.values@^1.1.3: 1763 | version "1.1.4" 1764 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" 1765 | integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== 1766 | dependencies: 1767 | call-bind "^1.0.2" 1768 | define-properties "^1.1.3" 1769 | es-abstract "^1.18.2" 1770 | 1771 | once@^1.3.0: 1772 | version "1.4.0" 1773 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1774 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1775 | dependencies: 1776 | wrappy "1" 1777 | 1778 | onetime@^5.1.2: 1779 | version "5.1.2" 1780 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1781 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1782 | dependencies: 1783 | mimic-fn "^2.1.0" 1784 | 1785 | optionator@^0.9.1: 1786 | version "0.9.1" 1787 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1788 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1789 | dependencies: 1790 | deep-is "^0.1.3" 1791 | fast-levenshtein "^2.0.6" 1792 | levn "^0.4.1" 1793 | prelude-ls "^1.2.1" 1794 | type-check "^0.4.0" 1795 | word-wrap "^1.2.3" 1796 | 1797 | p-limit@^1.1.0: 1798 | version "1.3.0" 1799 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1800 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1801 | dependencies: 1802 | p-try "^1.0.0" 1803 | 1804 | p-locate@^2.0.0: 1805 | version "2.0.0" 1806 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1807 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1808 | dependencies: 1809 | p-limit "^1.1.0" 1810 | 1811 | p-map@^4.0.0: 1812 | version "4.0.0" 1813 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 1814 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1815 | dependencies: 1816 | aggregate-error "^3.0.0" 1817 | 1818 | p-try@^1.0.0: 1819 | version "1.0.0" 1820 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1821 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1822 | 1823 | parent-module@^1.0.0: 1824 | version "1.0.1" 1825 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1826 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1827 | dependencies: 1828 | callsites "^3.0.0" 1829 | 1830 | parse-json@^4.0.0: 1831 | version "4.0.0" 1832 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1833 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1834 | dependencies: 1835 | error-ex "^1.3.1" 1836 | json-parse-better-errors "^1.0.1" 1837 | 1838 | path-exists@^3.0.0: 1839 | version "3.0.0" 1840 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1841 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1842 | 1843 | path-is-absolute@^1.0.0: 1844 | version "1.0.1" 1845 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1846 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1847 | 1848 | path-key@^3.0.0, path-key@^3.1.0: 1849 | version "3.1.1" 1850 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1851 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1852 | 1853 | path-parse@^1.0.6: 1854 | version "1.0.7" 1855 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1856 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1857 | 1858 | path-scurry@^1.10.1: 1859 | version "1.10.1" 1860 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" 1861 | integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== 1862 | dependencies: 1863 | lru-cache "^9.1.1 || ^10.0.0" 1864 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1865 | 1866 | path-type@^3.0.0: 1867 | version "3.0.0" 1868 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1869 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1870 | dependencies: 1871 | pify "^3.0.0" 1872 | 1873 | path-type@^4.0.0: 1874 | version "4.0.0" 1875 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1876 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1877 | 1878 | picomatch@^2.3.1: 1879 | version "2.3.1" 1880 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1881 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1882 | 1883 | pify@^3.0.0: 1884 | version "3.0.0" 1885 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1886 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1887 | 1888 | pkg-dir@^2.0.0: 1889 | version "2.0.0" 1890 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1891 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1892 | dependencies: 1893 | find-up "^2.1.0" 1894 | 1895 | pkg-up@^2.0.0: 1896 | version "2.0.0" 1897 | resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" 1898 | integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= 1899 | dependencies: 1900 | find-up "^2.1.0" 1901 | 1902 | prelude-ls@^1.2.1: 1903 | version "1.2.1" 1904 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1905 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1906 | 1907 | prettier-linter-helpers@^1.0.0: 1908 | version "1.0.0" 1909 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 1910 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 1911 | dependencies: 1912 | fast-diff "^1.1.2" 1913 | 1914 | prettier-plugin-packagejson@^2.2.11: 1915 | version "2.2.11" 1916 | resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.11.tgz#640b6301da3a58c489889b3d315255e18153daf0" 1917 | integrity sha512-oJCBCEkHIKScEv6qNQC47S39NXlevbzwvoJE3gflmBB8/3BEsC6ZRi+hwFVajw32b4tDI9hFXPIzmVd/T8Rm9w== 1918 | dependencies: 1919 | sort-package-json "1.50.0" 1920 | 1921 | prettier@^2.3.2, prettier@^2.8.8: 1922 | version "2.8.8" 1923 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" 1924 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== 1925 | 1926 | progress@^2.0.0: 1927 | version "2.0.3" 1928 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1929 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1930 | 1931 | promise-retry@^2.0.1: 1932 | version "2.0.1" 1933 | resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" 1934 | integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== 1935 | dependencies: 1936 | err-code "^2.0.2" 1937 | retry "^0.12.0" 1938 | 1939 | punycode@^2.1.0: 1940 | version "2.1.1" 1941 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1942 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1943 | 1944 | read-cmd-shim@^4.0.0: 1945 | version "4.0.0" 1946 | resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" 1947 | integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== 1948 | 1949 | read-package-json-fast@^3.0.0: 1950 | version "3.0.2" 1951 | resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" 1952 | integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== 1953 | dependencies: 1954 | json-parse-even-better-errors "^3.0.0" 1955 | npm-normalize-package-bin "^3.0.0" 1956 | 1957 | read-pkg-up@^3.0.0: 1958 | version "3.0.0" 1959 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" 1960 | integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= 1961 | dependencies: 1962 | find-up "^2.0.0" 1963 | read-pkg "^3.0.0" 1964 | 1965 | read-pkg@^3.0.0: 1966 | version "3.0.0" 1967 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1968 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 1969 | dependencies: 1970 | load-json-file "^4.0.0" 1971 | normalize-package-data "^2.3.2" 1972 | path-type "^3.0.0" 1973 | 1974 | readable-stream@^3.6.0, readable-stream@^3.6.2: 1975 | version "3.6.2" 1976 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 1977 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 1978 | dependencies: 1979 | inherits "^2.0.3" 1980 | string_decoder "^1.1.1" 1981 | util-deprecate "^1.0.1" 1982 | 1983 | regexpp@^3.1.0: 1984 | version "3.1.0" 1985 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1986 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1987 | 1988 | require-directory@^2.1.1: 1989 | version "2.1.1" 1990 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1991 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1992 | 1993 | require-from-string@^2.0.2: 1994 | version "2.0.2" 1995 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1996 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1997 | 1998 | resolve-from@^4.0.0: 1999 | version "4.0.0" 2000 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2001 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2002 | 2003 | resolve@^1.10.0, resolve@^1.13.1, resolve@^1.20.0: 2004 | version "1.20.0" 2005 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 2006 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 2007 | dependencies: 2008 | is-core-module "^2.2.0" 2009 | path-parse "^1.0.6" 2010 | 2011 | resolve@~1.1.7: 2012 | version "1.1.7" 2013 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 2014 | integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= 2015 | 2016 | resumer@~0.0.0: 2017 | version "0.0.0" 2018 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 2019 | integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= 2020 | dependencies: 2021 | through "~2.3.4" 2022 | 2023 | retry@^0.12.0: 2024 | version "0.12.0" 2025 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" 2026 | integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== 2027 | 2028 | reusify@^1.0.4: 2029 | version "1.0.4" 2030 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 2031 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 2032 | 2033 | rimraf@^3.0.2: 2034 | version "3.0.2" 2035 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2036 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2037 | dependencies: 2038 | glob "^7.1.3" 2039 | 2040 | run-parallel@^1.1.9: 2041 | version "1.1.10" 2042 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" 2043 | integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== 2044 | 2045 | safe-buffer@~5.1.1: 2046 | version "5.1.2" 2047 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2048 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2049 | 2050 | safe-buffer@~5.2.0: 2051 | version "5.2.1" 2052 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2053 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2054 | 2055 | "safer-buffer@>= 2.1.2 < 3.0.0": 2056 | version "2.1.2" 2057 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2058 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2059 | 2060 | "semver@2 || 3 || 4 || 5": 2061 | version "5.7.2" 2062 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" 2063 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 2064 | 2065 | semver@^7.2.1, semver@^7.3.5: 2066 | version "7.5.4" 2067 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 2068 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 2069 | dependencies: 2070 | lru-cache "^6.0.0" 2071 | 2072 | set-blocking@^2.0.0: 2073 | version "2.0.0" 2074 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2075 | integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== 2076 | 2077 | shebang-command@^2.0.0: 2078 | version "2.0.0" 2079 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2080 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2081 | dependencies: 2082 | shebang-regex "^3.0.0" 2083 | 2084 | shebang-regex@^3.0.0: 2085 | version "3.0.0" 2086 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2087 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2088 | 2089 | signal-exit@^3.0.3, signal-exit@^3.0.7: 2090 | version "3.0.7" 2091 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2092 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2093 | 2094 | signal-exit@^4.0.1: 2095 | version "4.0.2" 2096 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" 2097 | integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== 2098 | 2099 | slash@^3.0.0: 2100 | version "3.0.0" 2101 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2102 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2103 | 2104 | slice-ansi@^4.0.0: 2105 | version "4.0.0" 2106 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 2107 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 2108 | dependencies: 2109 | ansi-styles "^4.0.0" 2110 | astral-regex "^2.0.0" 2111 | is-fullwidth-code-point "^3.0.0" 2112 | 2113 | smart-buffer@^4.2.0: 2114 | version "4.2.0" 2115 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" 2116 | integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== 2117 | 2118 | socks-proxy-agent@^7.0.0: 2119 | version "7.0.0" 2120 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" 2121 | integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== 2122 | dependencies: 2123 | agent-base "^6.0.2" 2124 | debug "^4.3.3" 2125 | socks "^2.6.2" 2126 | 2127 | socks@^2.6.2: 2128 | version "2.7.1" 2129 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" 2130 | integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== 2131 | dependencies: 2132 | ip "^2.0.0" 2133 | smart-buffer "^4.2.0" 2134 | 2135 | sort-object-keys@^1.1.3: 2136 | version "1.1.3" 2137 | resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" 2138 | integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== 2139 | 2140 | sort-package-json@1.50.0: 2141 | version "1.50.0" 2142 | resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.50.0.tgz#19fc109fe23bd157bd03c8e572fa3251a52467d8" 2143 | integrity sha512-qZpqhMU9XTntebgAgc4hv/D6Fzhh7kFnwvV6a7+q8y8J5JoaDqPYQnvXPf7BBqG95tdE8X6JVNo7/jDzcbdfUg== 2144 | dependencies: 2145 | detect-indent "^6.0.0" 2146 | detect-newline "3.1.0" 2147 | git-hooks-list "1.0.3" 2148 | globby "10.0.0" 2149 | is-plain-obj "2.1.0" 2150 | sort-object-keys "^1.1.3" 2151 | 2152 | spdx-correct@^3.0.0: 2153 | version "3.1.0" 2154 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 2155 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 2156 | dependencies: 2157 | spdx-expression-parse "^3.0.0" 2158 | spdx-license-ids "^3.0.0" 2159 | 2160 | spdx-exceptions@^2.1.0: 2161 | version "2.3.0" 2162 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 2163 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 2164 | 2165 | spdx-expression-parse@^3.0.0: 2166 | version "3.0.0" 2167 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 2168 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 2169 | dependencies: 2170 | spdx-exceptions "^2.1.0" 2171 | spdx-license-ids "^3.0.0" 2172 | 2173 | spdx-license-ids@^3.0.0: 2174 | version "3.0.5" 2175 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 2176 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 2177 | 2178 | sprintf-js@~1.0.2: 2179 | version "1.0.3" 2180 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2181 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2182 | 2183 | ssri@^10.0.0: 2184 | version "10.0.4" 2185 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" 2186 | integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== 2187 | dependencies: 2188 | minipass "^5.0.0" 2189 | 2190 | "string-width-cjs@npm:string-width@^4.2.0": 2191 | version "4.2.3" 2192 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2193 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2194 | dependencies: 2195 | emoji-regex "^8.0.0" 2196 | is-fullwidth-code-point "^3.0.0" 2197 | strip-ansi "^6.0.1" 2198 | 2199 | "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 2200 | version "4.2.3" 2201 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2202 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2203 | dependencies: 2204 | emoji-regex "^8.0.0" 2205 | is-fullwidth-code-point "^3.0.0" 2206 | strip-ansi "^6.0.1" 2207 | 2208 | string-width@^5.0.1, string-width@^5.1.2: 2209 | version "5.1.2" 2210 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 2211 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 2212 | dependencies: 2213 | eastasianwidth "^0.2.0" 2214 | emoji-regex "^9.2.2" 2215 | strip-ansi "^7.0.1" 2216 | 2217 | string.prototype.trim@~1.1.2: 2218 | version "1.1.2" 2219 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" 2220 | integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= 2221 | dependencies: 2222 | define-properties "^1.1.2" 2223 | es-abstract "^1.5.0" 2224 | function-bind "^1.0.2" 2225 | 2226 | string.prototype.trimend@^1.0.4: 2227 | version "1.0.4" 2228 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 2229 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 2230 | dependencies: 2231 | call-bind "^1.0.2" 2232 | define-properties "^1.1.3" 2233 | 2234 | string.prototype.trimstart@^1.0.4: 2235 | version "1.0.4" 2236 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 2237 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 2238 | dependencies: 2239 | call-bind "^1.0.2" 2240 | define-properties "^1.1.3" 2241 | 2242 | string_decoder@^1.1.1: 2243 | version "1.3.0" 2244 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2245 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2246 | dependencies: 2247 | safe-buffer "~5.2.0" 2248 | 2249 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1": 2250 | version "6.0.1" 2251 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2252 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2253 | dependencies: 2254 | ansi-regex "^5.0.1" 2255 | 2256 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2257 | version "6.0.1" 2258 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2259 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2260 | dependencies: 2261 | ansi-regex "^5.0.1" 2262 | 2263 | strip-ansi@^7.0.1: 2264 | version "7.1.0" 2265 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 2266 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 2267 | dependencies: 2268 | ansi-regex "^6.0.1" 2269 | 2270 | strip-bom@^3.0.0: 2271 | version "3.0.0" 2272 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2273 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2274 | 2275 | strip-final-newline@^2.0.0: 2276 | version "2.0.0" 2277 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2278 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2279 | 2280 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 2281 | version "3.1.1" 2282 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2283 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2284 | 2285 | supports-color@^5.3.0: 2286 | version "5.5.0" 2287 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2288 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2289 | dependencies: 2290 | has-flag "^3.0.0" 2291 | 2292 | supports-color@^7.1.0: 2293 | version "7.1.0" 2294 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 2295 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 2296 | dependencies: 2297 | has-flag "^4.0.0" 2298 | 2299 | table@^6.0.9: 2300 | version "6.7.1" 2301 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" 2302 | integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== 2303 | dependencies: 2304 | ajv "^8.0.1" 2305 | lodash.clonedeep "^4.5.0" 2306 | lodash.truncate "^4.4.2" 2307 | slice-ansi "^4.0.0" 2308 | string-width "^4.2.0" 2309 | strip-ansi "^6.0.0" 2310 | 2311 | tape@^4.6.3: 2312 | version "4.6.3" 2313 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.6.3.tgz#637e77581e9ab2ce17577e9bd4ce4f575806d8b6" 2314 | integrity sha1-Y353WB6ass4XV36b1M5PV1gG2LY= 2315 | dependencies: 2316 | deep-equal "~1.0.1" 2317 | defined "~1.0.0" 2318 | for-each "~0.3.2" 2319 | function-bind "~1.1.0" 2320 | glob "~7.1.1" 2321 | has "~1.0.1" 2322 | inherits "~2.0.3" 2323 | minimist "~1.2.0" 2324 | object-inspect "~1.2.1" 2325 | resolve "~1.1.7" 2326 | resumer "~0.0.0" 2327 | string.prototype.trim "~1.1.2" 2328 | through "~2.3.8" 2329 | 2330 | tar@^6.1.11, tar@^6.1.2: 2331 | version "6.2.1" 2332 | resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" 2333 | integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== 2334 | dependencies: 2335 | chownr "^2.0.0" 2336 | fs-minipass "^2.0.0" 2337 | minipass "^5.0.0" 2338 | minizlib "^2.1.1" 2339 | mkdirp "^1.0.3" 2340 | yallist "^4.0.0" 2341 | 2342 | text-table@^0.2.0: 2343 | version "0.2.0" 2344 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2345 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2346 | 2347 | through@~2.3.4, through@~2.3.8: 2348 | version "2.3.8" 2349 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2350 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2351 | 2352 | to-regex-range@^5.0.1: 2353 | version "5.0.1" 2354 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2355 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2356 | dependencies: 2357 | is-number "^7.0.0" 2358 | 2359 | tsconfig-paths@^3.9.0: 2360 | version "3.9.0" 2361 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" 2362 | integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== 2363 | dependencies: 2364 | "@types/json5" "^0.0.29" 2365 | json5 "^1.0.1" 2366 | minimist "^1.2.0" 2367 | strip-bom "^3.0.0" 2368 | 2369 | tslib@^1.8.1: 2370 | version "1.14.1" 2371 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2372 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2373 | 2374 | tsutils@^3.21.0: 2375 | version "3.21.0" 2376 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 2377 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 2378 | dependencies: 2379 | tslib "^1.8.1" 2380 | 2381 | type-check@^0.4.0, type-check@~0.4.0: 2382 | version "0.4.0" 2383 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2384 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2385 | dependencies: 2386 | prelude-ls "^1.2.1" 2387 | 2388 | type-fest@^0.20.2: 2389 | version "0.20.2" 2390 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2391 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2392 | 2393 | typescript@^4.1.3: 2394 | version "4.1.3" 2395 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" 2396 | integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== 2397 | 2398 | unbox-primitive@^1.0.1: 2399 | version "1.0.1" 2400 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 2401 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 2402 | dependencies: 2403 | function-bind "^1.1.1" 2404 | has-bigints "^1.0.1" 2405 | has-symbols "^1.0.2" 2406 | which-boxed-primitive "^1.0.2" 2407 | 2408 | undici-types@~5.26.4: 2409 | version "5.26.5" 2410 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 2411 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 2412 | 2413 | unique-filename@^3.0.0: 2414 | version "3.0.0" 2415 | resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" 2416 | integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== 2417 | dependencies: 2418 | unique-slug "^4.0.0" 2419 | 2420 | unique-slug@^4.0.0: 2421 | version "4.0.0" 2422 | resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" 2423 | integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== 2424 | dependencies: 2425 | imurmurhash "^0.1.4" 2426 | 2427 | uri-js@^4.2.2: 2428 | version "4.4.1" 2429 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2430 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2431 | dependencies: 2432 | punycode "^2.1.0" 2433 | 2434 | util-deprecate@^1.0.1: 2435 | version "1.0.2" 2436 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2437 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2438 | 2439 | v8-compile-cache@^2.0.3: 2440 | version "2.1.0" 2441 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 2442 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 2443 | 2444 | validate-npm-package-license@^3.0.1: 2445 | version "3.0.4" 2446 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2447 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2448 | dependencies: 2449 | spdx-correct "^3.0.0" 2450 | spdx-expression-parse "^3.0.0" 2451 | 2452 | which-boxed-primitive@^1.0.2: 2453 | version "1.0.2" 2454 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 2455 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 2456 | dependencies: 2457 | is-bigint "^1.0.1" 2458 | is-boolean-object "^1.1.0" 2459 | is-number-object "^1.0.4" 2460 | is-string "^1.0.5" 2461 | is-symbol "^1.0.3" 2462 | 2463 | which@^2.0.1, which@^2.0.2: 2464 | version "2.0.2" 2465 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2466 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2467 | dependencies: 2468 | isexe "^2.0.0" 2469 | 2470 | which@^3.0.0: 2471 | version "3.0.1" 2472 | resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" 2473 | integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== 2474 | dependencies: 2475 | isexe "^2.0.0" 2476 | 2477 | wide-align@^1.1.5: 2478 | version "1.1.5" 2479 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" 2480 | integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== 2481 | dependencies: 2482 | string-width "^1.0.2 || 2 || 3 || 4" 2483 | 2484 | word-wrap@^1.2.3: 2485 | version "1.2.4" 2486 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" 2487 | integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== 2488 | 2489 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 2490 | version "7.0.0" 2491 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2492 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2493 | dependencies: 2494 | ansi-styles "^4.0.0" 2495 | string-width "^4.1.0" 2496 | strip-ansi "^6.0.0" 2497 | 2498 | wrap-ansi@^7.0.0: 2499 | version "7.0.0" 2500 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2501 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2502 | dependencies: 2503 | ansi-styles "^4.0.0" 2504 | string-width "^4.1.0" 2505 | strip-ansi "^6.0.0" 2506 | 2507 | wrap-ansi@^8.1.0: 2508 | version "8.1.0" 2509 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 2510 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 2511 | dependencies: 2512 | ansi-styles "^6.1.0" 2513 | string-width "^5.0.1" 2514 | strip-ansi "^7.0.1" 2515 | 2516 | wrappy@1: 2517 | version "1.0.2" 2518 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2519 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2520 | 2521 | write-file-atomic@^5.0.0: 2522 | version "5.0.1" 2523 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" 2524 | integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== 2525 | dependencies: 2526 | imurmurhash "^0.1.4" 2527 | signal-exit "^4.0.1" 2528 | 2529 | y18n@^5.0.5: 2530 | version "5.0.8" 2531 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2532 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2533 | 2534 | yallist@^4.0.0: 2535 | version "4.0.0" 2536 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2537 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2538 | 2539 | yargs-parser@^20.2.2: 2540 | version "20.2.9" 2541 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 2542 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 2543 | 2544 | yargs@^16.2.0: 2545 | version "16.2.0" 2546 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2547 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2548 | dependencies: 2549 | cliui "^7.0.2" 2550 | escalade "^3.1.1" 2551 | get-caller-file "^2.0.5" 2552 | require-directory "^2.1.1" 2553 | string-width "^4.2.0" 2554 | y18n "^5.0.5" 2555 | yargs-parser "^20.2.2" 2556 | 2557 | yargs@^17.0.1: 2558 | version "17.0.1" 2559 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" 2560 | integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== 2561 | dependencies: 2562 | cliui "^7.0.2" 2563 | escalade "^3.1.1" 2564 | get-caller-file "^2.0.5" 2565 | require-directory "^2.1.1" 2566 | string-width "^4.2.0" 2567 | y18n "^5.0.5" 2568 | yargs-parser "^20.2.2" 2569 | --------------------------------------------------------------------------------