├── .github └── workflows │ ├── release-preview.yml │ ├── release.yml │ └── tests.yml ├── .gitignore ├── LICENSE ├── README.md ├── package.json ├── src ├── git-utils.js ├── index.js ├── lens-utils.js ├── log-plugin-version.js ├── only-package-commits.js ├── only-package-commits.spec.js ├── options-transforms.js ├── options-transforms.spec.js ├── version-to-git-tag.js └── version-to-git-tag.spec.js ├── vitest.config.js └── yarn.lock /.github/workflows/release-preview.yml: -------------------------------------------------------------------------------- 1 | name: Release preview 2 | on: [pull_request] 3 | jobs: 4 | release-preview: 5 | runs-on: ubuntu-latest 6 | env: 7 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 8 | steps: 9 | - uses: actions/checkout@v3 10 | - uses: actions/setup-node@v3 11 | with: 12 | node-version: 20 13 | # semantic-release dry-run workaround https://github.com/semantic-release/semantic-release/issues/1890#issuecomment-974512960 14 | - run: git checkout -b ${{ github.head_ref }} 15 | - run: unset GITHUB_ACTIONS && npx semantic-release-github-pr --debug -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | env: 12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 13 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 14 | steps: 15 | - uses: actions/checkout@v3 16 | - uses: actions/setup-node@v3 17 | with: 18 | node-version: 20 19 | - run: npx semantic-release --debug 20 | -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | on: [pull_request] 3 | jobs: 4 | run-tests: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v3 8 | - uses: actions/setup-node@v3 9 | with: 10 | node-version: 20 11 | - name: Git credentials need to be set when testing git utils 12 | run: git config --global user.email user@test.com && git config --global user.name "Test user" 13 | - run: yarn && yarn test 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Patrick Mowrer Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # semantic-release-monorepo 2 | 3 | ![Tests workflow](https://github.com/pmowrer/semantic-release-monorepo/actions/workflows/tests.yml/badge.svg) [![npm](https://img.shields.io/npm/v/semantic-release-monorepo.svg)](https://www.npmjs.com/package/semantic-release-monorepo) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) 4 | 5 | Apply [`semantic-release`'s](https://github.com/semantic-release/semantic-release) automatic publishing to a monorepo. 6 | 7 | ## Why 8 | 9 | The default configuration of `semantic-release` assumes a one-to-one relationship between a GitHub repository and an `npm` package. 10 | 11 | This library allows using `semantic-release` with a single GitHub repository containing many `npm` packages. 12 | 13 | ## How 14 | 15 | Instead of attributing all commits to a single package, commits are assigned to packages based on the files that a commit touched. 16 | 17 | If a commit touched a file in or below a package's root, it will be considered for that package's next release. A single commit can belong to multiple packages and may trigger the release of multiple packages. 18 | 19 | In order to avoid version collisions, generated git tags are namespaced using the given package's name: `-`. 20 | 21 | ## Install 22 | 23 | Both `semantic-release` and `semantic-release-monorepo` must be accessible in each monorepo package. 24 | 25 | ```bash 26 | npm install -D semantic-release semantic-release-monorepo 27 | ``` 28 | 29 | ## Usage 30 | 31 | Run `semantic-release` in an **individual monorepo package** and apply `semantic-release-monorepo` via the [`extends`](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#extends) option. 32 | 33 | On the command line: 34 | 35 | ```bash 36 | $ npm run semantic-release -e semantic-release-monorepo 37 | ``` 38 | 39 | Or in the [release config](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration-file): 40 | 41 | ```json 42 | { 43 | "extends": "semantic-release-monorepo" 44 | } 45 | ``` 46 | 47 | NOTE: This library **CAN'T** be applied via the `plugins` option. 48 | 49 | ```json 50 | { 51 | "plugins": [ 52 | "semantic-release-monorepo" // This WON'T work 53 | ] 54 | } 55 | ``` 56 | 57 | ### With Yarn Workspaces 58 | 59 | ```bash 60 | $ yarn workspaces run semantic-release -e semantic-release-monorepo 61 | ``` 62 | 63 | ### With Lerna 64 | 65 | The monorepo management tool [`lerna`](https://github.com/lerna/lerna) can be used to run `semantic-release-monorepo` across all packages in a monorepo with a single command: 66 | 67 | ```bash 68 | lerna exec --concurrency 1 -- npx --no-install semantic-release -e semantic-release-monorepo 69 | ``` 70 | 71 | ### With pnpm 72 | 73 | [pnpm](https://pnpm.io/) has built-in [workspace](https://pnpm.io/workspaces) functionality for monorepos. Similarly to the above, you can use pnpm to make release in all packages: 74 | 75 | ```bash 76 | pnpm -r --workspace-concurrency=1 exec -- npx --no-install semantic-release -e semantic-release-monorepo 77 | ``` 78 | 79 | Thanks to how [`npx's package resolution works`](https://github.com/npm/npx#description), if the repository root is in `$PATH` (typically true on CI), `semantic-release` and `semantic-release-monorepo` can be installed once in the repo root instead of in each individual package, likely saving both time and disk space. 80 | 81 | ## Advanced 82 | 83 | This library modifies the `context` object passed to `semantic-release` plugins in the following way to make them compatible with a monorepo. 84 | 85 | | Step | Description | 86 | | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 87 | | `analyzeCommits` | Filters `context.commits` to only include the given monorepo package's commits. | 88 | | `generateNotes` | | 89 | 90 | ### tagFormat 91 | 92 | Pre-configures the [`tagFormat` option](https://github.com/semantic-release/semantic-release/blob/caribou/docs/usage/configuration.md#tagformat) to use the [monorepo git tag format](#how). 93 | 94 | If you are using Lerna, you can customize the format using the following command: 95 | 96 | ``` 97 | "semantic-release": "lerna exec --concurrency 1 -- semantic-release -e semantic-release-monorepo --tag-format='${LERNA_PACKAGE_NAME}-v\\${version}'" 98 | ``` 99 | 100 | Where `'${LERNA_PACKAGE_NAME}-v\\${version}'` is the string you want to customize. By default it will be `-v` (e.g. `foobar-v1.2.3`). 101 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semantic-release-monorepo", 3 | "version": "0.0.0-development", 4 | "description": "Plugins for `semantic-release` allowing it to be used with a monorepo.", 5 | "main": "src/index.js", 6 | "type": "module", 7 | "files": [ 8 | "src" 9 | ], 10 | "scripts": { 11 | "format": "prettier --write --single-quote --trailing-comma es5", 12 | "format:all": "yarn format \"./**/*.js\"", 13 | "test": "vitest run --no-threads" 14 | }, 15 | "license": "MIT", 16 | "peerDependencies": { 17 | "semantic-release": ">=22.0.7" 18 | }, 19 | "dependencies": { 20 | "debug": "^4.3.4", 21 | "execa": "^5.1.1", 22 | "file-url": "^3.0.0", 23 | "fs-extra": "^10.0.1", 24 | "get-stream": "^6.0.1", 25 | "git-log-parser": "^1.2.0", 26 | "p-each-series": "^2.1.0", 27 | "p-limit": "^3.1.0", 28 | "pkg-up": "^3.1.0", 29 | "ramda": "^0.27.2", 30 | "read-pkg": "^5.2.0", 31 | "semantic-release-plugin-decorators": "^4.0.0", 32 | "tempy": "1.0.1" 33 | }, 34 | "devDependencies": { 35 | "husky": "^8.0.1", 36 | "lint-staged": "^13.0.3", 37 | "prettier": "^3.2.4", 38 | "vitest": "0.34.6" 39 | }, 40 | "husky": { 41 | "hooks": { 42 | "pre-commit": "lint-staged" 43 | } 44 | }, 45 | "lint-staged": { 46 | "*.js": [ 47 | "yarn format" 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/git-utils.js: -------------------------------------------------------------------------------- 1 | import execa from 'execa'; 2 | import { pipeP, split } from 'ramda'; 3 | import fse from 'fs-extra'; 4 | import path from 'path'; 5 | import tempy from 'tempy'; 6 | import fileUrl from 'file-url'; 7 | import gitLogParser from 'git-log-parser'; 8 | import pEachSeries from 'p-each-series'; 9 | import getStream from 'get-stream'; 10 | 11 | const git = async (args, options = {}) => { 12 | const { stdout } = await execa('git', args, options); 13 | return stdout; 14 | }; 15 | 16 | /** 17 | * // https://stackoverflow.com/questions/424071/how-to-list-all-the-files-in-a-commit 18 | * @async 19 | * @param hash Git commit hash. 20 | * @return {Promise} List of modified files in a commit. 21 | */ 22 | const getCommitFiles = pipeP( 23 | hash => 24 | git(['diff-tree', '--root', '--no-commit-id', '--name-only', '-r', hash]), 25 | split('\n') 26 | ); 27 | 28 | /** 29 | * https://stackoverflow.com/a/957978/89594 30 | * @async 31 | * @return {Promise} System path of the git repository. 32 | */ 33 | const getRoot = () => git(['rev-parse', '--show-toplevel']); 34 | 35 | /** 36 | * Create commits on the current git repository. 37 | * 38 | * @param {Array} messages Commit messages. 39 | * @param {Object} [execaOpts] Options to pass to `execa`. 40 | * 41 | * @returns {Array} The created commits, in reverse order (to match `git log` order). 42 | */ 43 | const gitCommitsWithFiles = async commits => { 44 | for (const commit of commits) { 45 | for (const file of commit.files) { 46 | const filePath = path.join(process.cwd(), file.name); 47 | if (file.body === undefined) { 48 | file.body = commit.message; 49 | } 50 | await fse.outputFile(filePath, file.body); 51 | await execa('git', ['add', filePath]); 52 | } 53 | await execa('git', [ 54 | 'commit', 55 | '-m', 56 | commit.message, 57 | '--allow-empty', 58 | '--no-gpg-sign', 59 | ]); 60 | } 61 | return (await gitGetCommits(undefined)).slice(0, commits.length); 62 | }; 63 | 64 | /** 65 | * Initialize git repository 66 | * If `withRemote` is `true`, creates a bare repository and initialize it. 67 | * If `withRemote` is `false`, creates a regular repository and initialize it. 68 | * 69 | * @param {Boolean} withRemote `true` to create a shallow clone of a bare repository. 70 | * @return {{cwd: string, repositoryUrl: string}} The path of the repository 71 | */ 72 | const initGit = async withRemote => { 73 | const cwd = tempy.directory(); 74 | const args = withRemote 75 | ? ['--bare', '--initial-branch=master'] 76 | : ['--initial-branch=master']; 77 | 78 | await execa('git', ['init', ...args], { cwd }).catch(async () => { 79 | const args = withRemote ? ['--bare'] : []; 80 | return await execa('git', ['init', ...args], { cwd }); 81 | }); 82 | const repositoryUrl = fileUrl(cwd); 83 | return { cwd, repositoryUrl }; 84 | }; 85 | 86 | /** 87 | * Create commits on the current git repository. 88 | * 89 | * @param {Array} messages Commit messages. 90 | * @param {Object} [execaOpts] Options to pass to `execa`. 91 | * 92 | * @returns {Array} The created commits, in reverse order (to match `git log` order). 93 | */ 94 | const gitCommits = async (messages, execaOptions) => { 95 | await pEachSeries( 96 | messages, 97 | async message => 98 | ( 99 | await execa( 100 | 'git', 101 | ['commit', '-m', message, '--allow-empty', '--no-gpg-sign'], 102 | execaOptions 103 | ) 104 | ).stdout 105 | ); 106 | return (await gitGetCommits(undefined, execaOptions)).slice( 107 | 0, 108 | messages.length 109 | ); 110 | }; 111 | 112 | /** 113 | * Get the list of parsed commits since a git reference. 114 | * 115 | * @param {String} [from] Git reference from which to seach commits. 116 | * @param {Object} [execaOpts] Options to pass to `execa`. 117 | * 118 | * @return {Array} The list of parsed commits. 119 | */ 120 | const gitGetCommits = async from => { 121 | Object.assign(gitLogParser.fields, { 122 | hash: 'H', 123 | message: 'B', 124 | gitTags: 'd', 125 | committerDate: { key: 'ci', type: Date }, 126 | }); 127 | return ( 128 | await getStream.array( 129 | gitLogParser.parse( 130 | { _: `${from ? `${from}..` : ''}HEAD` }, 131 | { env: { ...process.env } } 132 | ) 133 | ) 134 | ).map(commit => { 135 | commit.message = commit.message.trim(); 136 | commit.gitTags = commit.gitTags.trim(); 137 | return commit; 138 | }); 139 | }; 140 | 141 | /** 142 | * Initialize an existing bare repository: 143 | * - Clone the repository 144 | * - Change the current working directory to the clone root 145 | * - Create a default branch 146 | * - Create an initial commits 147 | * - Push to origin 148 | * 149 | * @param {String} repositoryUrl The URL of the bare repository. 150 | * @param {String} [branch='master'] the branch to initialize. 151 | */ 152 | const initBareRepo = async (repositoryUrl, branch = 'master') => { 153 | const cwd = tempy.directory(); 154 | await execa('git', ['clone', '--no-hardlinks', repositoryUrl, cwd], { cwd }); 155 | await gitCheckout(branch, true, { cwd }); 156 | gitCommits(['Initial commit'], { cwd }); 157 | await execa('git', ['push', repositoryUrl, branch], { cwd }); 158 | }; 159 | 160 | /** 161 | * Create a temporary git repository. 162 | * If `withRemote` is `true`, creates a shallow clone. Change the current working directory to the clone root. 163 | * If `withRemote` is `false`, just change the current working directory to the repository root. 164 | * 165 | * 166 | * @param {Boolean} withRemote `true` to create a shallow clone of a bare repository. 167 | * @param {String} [branch='master'] The branch to initialize. 168 | * @return {String} The path of the clone if `withRemote` is `true`, the path of the repository otherwise. 169 | */ 170 | const initGitRepo = async (withRemote, branch = 'master') => { 171 | let { cwd, repositoryUrl } = await initGit(withRemote); 172 | if (withRemote) { 173 | await initBareRepo(repositoryUrl, branch); 174 | cwd = gitShallowClone(repositoryUrl, branch); 175 | } else { 176 | await gitCheckout(branch, true, { cwd }); 177 | } 178 | 179 | await execa('git', ['config', 'commit.gpgsign', false], { cwd }); 180 | 181 | return { cwd, repositoryUrl }; 182 | }; 183 | 184 | /** 185 | * Create a shallow clone of a git repository and change the current working directory to the cloned repository root. 186 | * The shallow will contain a limited number of commit and no tags. 187 | * 188 | * @param {String} repositoryUrl The path of the repository to clone. 189 | * @param {String} [branch='master'] the branch to clone. 190 | * @param {Number} [depth=1] The number of commit to clone. 191 | * @return {String} The path of the cloned repository. 192 | */ 193 | const gitShallowClone = (repositoryUrl, branch = 'master', depth = 1) => { 194 | const cwd = tempy.directory(); 195 | 196 | execa( 197 | 'git', 198 | [ 199 | 'clone', 200 | '--no-hardlinks', 201 | '--no-tags', 202 | '-b', 203 | branch, 204 | '--depth', 205 | depth, 206 | repositoryUrl, 207 | cwd, 208 | ], 209 | { 210 | cwd, 211 | } 212 | ); 213 | return cwd; 214 | }; 215 | 216 | /** 217 | * Checkout a branch on the current git repository. 218 | * 219 | * @param {String} branch Branch name. 220 | * @param {Boolean} create to create the branch, `false` to checkout an existing branch. 221 | * @param {Object} [execaOptions] Options to pass to `execa`. 222 | */ 223 | const gitCheckout = async (branch, create, execaOptions) => { 224 | await execa( 225 | 'git', 226 | create ? ['checkout', '-b', branch] : ['checkout', branch], 227 | execaOptions 228 | ); 229 | }; 230 | 231 | export { 232 | getCommitFiles, 233 | getRoot, 234 | gitCommitsWithFiles, 235 | initGitRepo, 236 | initGit, 237 | initBareRepo, 238 | }; 239 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import readPkg from 'read-pkg'; 2 | import { compose } from 'ramda'; 3 | import { wrapStep } from 'semantic-release-plugin-decorators'; 4 | import { withOnlyPackageCommits } from './only-package-commits.js'; 5 | import versionToGitTag from './version-to-git-tag.js'; 6 | import logPluginVersion from './log-plugin-version.js'; 7 | import { 8 | mapNextReleaseVersion, 9 | withOptionsTransforms, 10 | } from './options-transforms.js'; 11 | 12 | const analyzeCommits = wrapStep( 13 | 'analyzeCommits', 14 | compose(logPluginVersion('analyzeCommits'), withOnlyPackageCommits), 15 | { 16 | wrapperName: 'semantic-release-monorepo', 17 | } 18 | ); 19 | 20 | const generateNotes = wrapStep( 21 | 'generateNotes', 22 | compose( 23 | logPluginVersion('generateNotes'), 24 | withOnlyPackageCommits, 25 | withOptionsTransforms([mapNextReleaseVersion(versionToGitTag)]) 26 | ), 27 | { 28 | wrapperName: 'semantic-release-monorepo', 29 | } 30 | ); 31 | 32 | const success = wrapStep( 33 | 'success', 34 | compose( 35 | logPluginVersion('success'), 36 | withOnlyPackageCommits, 37 | withOptionsTransforms([mapNextReleaseVersion(versionToGitTag)]) 38 | ), 39 | { 40 | wrapperName: 'semantic-release-monorepo', 41 | } 42 | ); 43 | 44 | const fail = wrapStep( 45 | 'fail', 46 | compose( 47 | logPluginVersion('fail'), 48 | withOnlyPackageCommits, 49 | withOptionsTransforms([mapNextReleaseVersion(versionToGitTag)]) 50 | ), 51 | { 52 | wrapperName: 'semantic-release-monorepo', 53 | } 54 | ); 55 | 56 | const tagFormat = `${readPkg.sync().name}-v\${version}`; 57 | 58 | export { analyzeCommits, generateNotes, success, fail, tagFormat }; 59 | -------------------------------------------------------------------------------- /src/lens-utils.js: -------------------------------------------------------------------------------- 1 | import { curry, set, view } from 'ramda'; 2 | 3 | /** 4 | * Async version of Ramda's `over` lens utility. 5 | */ 6 | const overA = curry(async (lens, f, x) => { 7 | const value = await f(view(lens, x)); 8 | return set(lens, value, x); 9 | }); 10 | 11 | export { overA }; 12 | -------------------------------------------------------------------------------- /src/log-plugin-version.js: -------------------------------------------------------------------------------- 1 | import { resolve, dirname } from 'path'; 2 | import { fileURLToPath } from 'url'; 3 | import readPkg from 'read-pkg'; 4 | import createDebug from 'debug'; 5 | 6 | const debug = createDebug('semantic-release:monorepo'); 7 | 8 | const logPluginVersion = type => plugin => async (pluginConfig, config) => { 9 | if (config.options.debug) { 10 | const __dirname = dirname(fileURLToPath(import.meta.url)); 11 | const { version } = await readPkg(resolve(__dirname, '../')); 12 | debug('Running %o version %o', type, version); 13 | } 14 | 15 | return plugin(pluginConfig, config); 16 | }; 17 | 18 | export default logPluginVersion; 19 | -------------------------------------------------------------------------------- /src/only-package-commits.js: -------------------------------------------------------------------------------- 1 | import { identity, memoizeWith, pipeP } from 'ramda'; 2 | import pkgUp from 'pkg-up'; 3 | import readPkg from 'read-pkg'; 4 | import path from 'path'; 5 | import pLimit from 'p-limit'; 6 | import createDebug from 'debug'; 7 | import { getCommitFiles, getRoot } from './git-utils.js'; 8 | import { mapCommits } from './options-transforms.js'; 9 | 10 | const debug = createDebug('semantic-release:monorepo'); 11 | const memoizedGetCommitFiles = memoizeWith(identity, getCommitFiles); 12 | 13 | /** 14 | * Get the normalized PACKAGE root path, relative to the git PROJECT root. 15 | */ 16 | const getPackagePath = async () => { 17 | const packagePath = await pkgUp(); 18 | const gitRoot = await getRoot(); 19 | 20 | return path.relative(gitRoot, path.resolve(packagePath, '..')); 21 | }; 22 | 23 | const withFiles = async commits => { 24 | const limit = pLimit(Number(process.env.SRM_MAX_THREADS) || 500); 25 | return Promise.all( 26 | commits.map(commit => 27 | limit(async () => { 28 | const files = await memoizedGetCommitFiles(commit.hash); 29 | return { ...commit, files }; 30 | }) 31 | ) 32 | ); 33 | }; 34 | 35 | const onlyPackageCommits = async commits => { 36 | const packagePath = await getPackagePath(); 37 | debug('Filter commits by package path: "%s"', packagePath); 38 | const commitsWithFiles = await withFiles(commits); 39 | // Convert package root path into segments - one for each folder 40 | const packageSegments = packagePath.split(path.sep); 41 | 42 | return commitsWithFiles.filter(({ files, subject }) => { 43 | // Normalise paths and check if any changed files' path segments start 44 | // with that of the package root. 45 | const packageFile = files.find(file => { 46 | const fileSegments = path.normalize(file).split(path.sep); 47 | // Check the file is a *direct* descendent of the package folder (or the folder itself) 48 | return packageSegments.every( 49 | (packageSegment, i) => packageSegment === fileSegments[i] 50 | ); 51 | }); 52 | 53 | if (packageFile) { 54 | debug( 55 | 'Including commit "%s" because it modified package file "%s".', 56 | subject, 57 | packageFile 58 | ); 59 | } 60 | 61 | return !!packageFile; 62 | }); 63 | }; 64 | 65 | // Async version of Ramda's `tap` 66 | const tapA = fn => async x => { 67 | await fn(x); 68 | return x; 69 | }; 70 | 71 | const logFilteredCommitCount = logger => async ({ commits }) => { 72 | const { name } = await readPkg(); 73 | 74 | logger.log( 75 | 'Found %s commits for package %s since last release', 76 | commits.length, 77 | name 78 | ); 79 | }; 80 | 81 | const withOnlyPackageCommits = plugin => async (pluginConfig, config) => { 82 | const { logger } = config; 83 | 84 | return plugin( 85 | pluginConfig, 86 | await pipeP( 87 | mapCommits(onlyPackageCommits), 88 | tapA(logFilteredCommitCount(logger)) 89 | )(config) 90 | ); 91 | }; 92 | 93 | export { withOnlyPackageCommits, onlyPackageCommits, withFiles }; 94 | -------------------------------------------------------------------------------- /src/only-package-commits.spec.js: -------------------------------------------------------------------------------- 1 | import { gitCommitsWithFiles, initGitRepo } from './git-utils.js'; 2 | import { onlyPackageCommits, withFiles } from './only-package-commits.js'; 3 | import path from 'path'; 4 | import { describe, it, expect } from 'vitest'; 5 | async function getCommitWithFileFromMessage(commits, message) { 6 | const commitsWithFiles = await withFiles( 7 | Array.of(commits.find(obj => obj.subject === message)) 8 | ); 9 | if (commitsWithFiles.length !== 0) { 10 | return commitsWithFiles[0]; 11 | } else { 12 | return null; 13 | } 14 | } 15 | 16 | describe('filter commits', () => { 17 | it('should filter 0 commits (no root folder support) ', async () => { 18 | const gitRepo = await initGitRepo(false); 19 | const commitsToCreate = [ 20 | { message: 'init1', files: [{ name: 'package.json' }] }, 21 | { message: 'message1', files: [{ name: 'readme.md' }] }, 22 | { message: 'message2', files: [{ name: 'module1/readme.md' }] }, 23 | { 24 | message: 'message3', 25 | files: [{ name: 'readme1.md' }, { name: 'module1/readme2.md' }], 26 | }, 27 | ]; 28 | process.chdir(gitRepo.cwd); 29 | const commits = await gitCommitsWithFiles(commitsToCreate); 30 | const result = await onlyPackageCommits(commits); 31 | expect(result).toHaveLength(0); 32 | }); 33 | 34 | it('should filter 3 commits (folder module1) ', async () => { 35 | const gitRepo = await initGitRepo(false); 36 | const commitsToCreate = [ 37 | { 38 | message: 'init1', 39 | files: [{ name: 'package.json' }, { name: 'module1/package.json' }], 40 | }, 41 | { message: 'message1', files: [{ name: 'readme.md' }] }, 42 | { message: 'message2', files: [{ name: 'module1/readme.md' }] }, 43 | { 44 | message: 'message3', 45 | files: [{ name: 'readme1.md' }, { name: 'module1/readme2.md' }], 46 | }, 47 | ]; 48 | process.chdir(gitRepo.cwd); 49 | const commits = await gitCommitsWithFiles(commitsToCreate); 50 | process.chdir(path.join(gitRepo.cwd, 'module1')); 51 | const result = await onlyPackageCommits(commits); 52 | 53 | expect(result).toHaveLength(3); 54 | expect(result).toContainEqual( 55 | await getCommitWithFileFromMessage(commits, 'init1') 56 | ); 57 | expect(result).not.toContainEqual( 58 | await getCommitWithFileFromMessage(commits, 'message1') 59 | ); 60 | expect(result).toContainEqual( 61 | await getCommitWithFileFromMessage(commits, 'message2') 62 | ); 63 | expect(result).toContainEqual( 64 | await getCommitWithFileFromMessage(commits, 'message3') 65 | ); 66 | }); 67 | 68 | it('should filter 2 commits (folder module2) ', async () => { 69 | const gitRepo = await initGitRepo(false); 70 | const commitsToCreate = [ 71 | { 72 | message: 'init1', 73 | files: [{ name: 'package.json' }, { name: 'module1/package.json' }], 74 | }, 75 | { 76 | message: 'message1', 77 | files: [{ name: 'readme.md' }, { name: 'module2/package.json' }], 78 | }, 79 | { message: 'message2', files: [{ name: 'module1/readme.md' }] }, 80 | { 81 | message: 'message3', 82 | files: [ 83 | { name: 'readme1.md' }, 84 | { name: 'module1/readme2.md' }, 85 | { name: 'module2/readme.md' }, 86 | ], 87 | }, 88 | ]; 89 | process.chdir(gitRepo.cwd); 90 | const commits = await gitCommitsWithFiles(commitsToCreate); 91 | process.chdir(path.join(gitRepo.cwd, 'module2')); 92 | const result = await onlyPackageCommits(commits); 93 | 94 | expect(result).toHaveLength(2); 95 | expect(result).not.toContainEqual( 96 | await getCommitWithFileFromMessage(commits, 'init1') 97 | ); 98 | expect(result).toContainEqual( 99 | await getCommitWithFileFromMessage(commits, 'message1') 100 | ); 101 | expect(result).not.toContainEqual( 102 | await getCommitWithFileFromMessage(commits, 'message2') 103 | ); 104 | expect(result).toContainEqual( 105 | await getCommitWithFileFromMessage(commits, 'message3') 106 | ); 107 | }); 108 | }); 109 | -------------------------------------------------------------------------------- /src/options-transforms.js: -------------------------------------------------------------------------------- 1 | import { compose, composeP, lensProp } from 'ramda'; 2 | import { overA } from './lens-utils.js'; 3 | 4 | const commits = lensProp('commits'); 5 | const nextRelease = lensProp('nextRelease'); 6 | const version = lensProp('version'); 7 | 8 | const mapCommits = fn => overA(commits, async commits => await fn(commits)); 9 | 10 | const mapNextReleaseVersion = overA(compose(nextRelease, version)); 11 | 12 | const withOptionsTransforms = transforms => plugin => async ( 13 | pluginConfig, 14 | config 15 | ) => { 16 | return plugin(pluginConfig, await composeP(...transforms)(config)); 17 | }; 18 | 19 | export { mapCommits, mapNextReleaseVersion, withOptionsTransforms }; 20 | -------------------------------------------------------------------------------- /src/options-transforms.spec.js: -------------------------------------------------------------------------------- 1 | import { mapNextReleaseVersion, mapCommits } from './options-transforms.js'; 2 | import { describe, it, expect } from 'vitest'; 3 | 4 | const OPTIONS = { 5 | commits: [1, 2, 3, 4], 6 | lastRelease: { 7 | version: '1.2.3', 8 | }, 9 | nextRelease: { 10 | version: '4.5.6', 11 | }, 12 | }; 13 | 14 | const even = n => n % 2 === 0; 15 | const toTag = x => `tag-${x}`; 16 | 17 | describe('semantic-release plugin options transforms', () => { 18 | describe('#mapCommits', () => { 19 | it('allows mapping the "commits" option', async () => { 20 | const fn = commits => commits.filter(even); 21 | 22 | expect(await mapCommits(fn)(OPTIONS)).toEqual({ 23 | ...OPTIONS, 24 | commits: [2, 4], 25 | }); 26 | }); 27 | }); 28 | 29 | describe('#mapNextReleaseVersion', () => { 30 | it('maps the nextRelease.version option', async () => { 31 | expect(await mapNextReleaseVersion(toTag)(OPTIONS)).toEqual({ 32 | ...OPTIONS, 33 | nextRelease: { 34 | version: 'tag-4.5.6', 35 | }, 36 | }); 37 | }); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /src/version-to-git-tag.js: -------------------------------------------------------------------------------- 1 | import readPkg from 'read-pkg'; 2 | 3 | export default async function(version) { 4 | if (!version) { 5 | return null; 6 | } 7 | 8 | const { name } = await readPkg(); 9 | return `${name}-v${version}`; 10 | } 11 | -------------------------------------------------------------------------------- /src/version-to-git-tag.spec.js: -------------------------------------------------------------------------------- 1 | import versionToGitTag from './version-to-git-tag.js'; 2 | import { describe, it, expect } from 'vitest'; 3 | 4 | describe('#versionToGitTag', () => { 5 | describe('if passed a falsy version', () => { 6 | it('returns null rather than creating a bad git-tag', () => async () => { 7 | expect(await versionToGitTag('')).toBe(null); 8 | expect(await versionToGitTag(undefined)).toBe(null); 9 | expect(await versionToGitTag(null)).toBe(null); 10 | }); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /vitest.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | include: ["./src/*.spec.js"], 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /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.0.0": 6 | version "7.18.6" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" 8 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== 9 | dependencies: 10 | "@babel/highlight" "^7.18.6" 11 | 12 | "@babel/helper-validator-identifier@^7.18.6": 13 | version "7.18.6" 14 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" 15 | integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== 16 | 17 | "@babel/highlight@^7.18.6": 18 | version "7.18.6" 19 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" 20 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.18.6" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@esbuild/aix-ppc64@0.19.11": 27 | version "0.19.11" 28 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" 29 | integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g== 30 | 31 | "@esbuild/android-arm64@0.19.11": 32 | version "0.19.11" 33 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220" 34 | integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q== 35 | 36 | "@esbuild/android-arm@0.19.11": 37 | version "0.19.11" 38 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c" 39 | integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw== 40 | 41 | "@esbuild/android-x64@0.19.11": 42 | version "0.19.11" 43 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2" 44 | integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg== 45 | 46 | "@esbuild/darwin-arm64@0.19.11": 47 | version "0.19.11" 48 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf" 49 | integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ== 50 | 51 | "@esbuild/darwin-x64@0.19.11": 52 | version "0.19.11" 53 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e" 54 | integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g== 55 | 56 | "@esbuild/freebsd-arm64@0.19.11": 57 | version "0.19.11" 58 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a" 59 | integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA== 60 | 61 | "@esbuild/freebsd-x64@0.19.11": 62 | version "0.19.11" 63 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2" 64 | integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw== 65 | 66 | "@esbuild/linux-arm64@0.19.11": 67 | version "0.19.11" 68 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545" 69 | integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg== 70 | 71 | "@esbuild/linux-arm@0.19.11": 72 | version "0.19.11" 73 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3" 74 | integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q== 75 | 76 | "@esbuild/linux-ia32@0.19.11": 77 | version "0.19.11" 78 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4" 79 | integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA== 80 | 81 | "@esbuild/linux-loong64@0.19.11": 82 | version "0.19.11" 83 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121" 84 | integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg== 85 | 86 | "@esbuild/linux-mips64el@0.19.11": 87 | version "0.19.11" 88 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9" 89 | integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg== 90 | 91 | "@esbuild/linux-ppc64@0.19.11": 92 | version "0.19.11" 93 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912" 94 | integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA== 95 | 96 | "@esbuild/linux-riscv64@0.19.11": 97 | version "0.19.11" 98 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916" 99 | integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ== 100 | 101 | "@esbuild/linux-s390x@0.19.11": 102 | version "0.19.11" 103 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8" 104 | integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q== 105 | 106 | "@esbuild/linux-x64@0.19.11": 107 | version "0.19.11" 108 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766" 109 | integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA== 110 | 111 | "@esbuild/netbsd-x64@0.19.11": 112 | version "0.19.11" 113 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d" 114 | integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ== 115 | 116 | "@esbuild/openbsd-x64@0.19.11": 117 | version "0.19.11" 118 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2" 119 | integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw== 120 | 121 | "@esbuild/sunos-x64@0.19.11": 122 | version "0.19.11" 123 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767" 124 | integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ== 125 | 126 | "@esbuild/win32-arm64@0.19.11": 127 | version "0.19.11" 128 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee" 129 | integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ== 130 | 131 | "@esbuild/win32-ia32@0.19.11": 132 | version "0.19.11" 133 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c" 134 | integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg== 135 | 136 | "@esbuild/win32-x64@0.19.11": 137 | version "0.19.11" 138 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" 139 | integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== 140 | 141 | "@jest/schemas@^29.6.3": 142 | version "29.6.3" 143 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" 144 | integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== 145 | dependencies: 146 | "@sinclair/typebox" "^0.27.8" 147 | 148 | "@jridgewell/sourcemap-codec@^1.4.15": 149 | version "1.4.15" 150 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 151 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 152 | 153 | "@nodelib/fs.scandir@2.1.5": 154 | version "2.1.5" 155 | resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" 156 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 157 | dependencies: 158 | "@nodelib/fs.stat" "2.0.5" 159 | run-parallel "^1.1.9" 160 | 161 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 162 | version "2.0.5" 163 | resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" 164 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 165 | 166 | "@nodelib/fs.walk@^1.2.3": 167 | version "1.2.8" 168 | resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" 169 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 170 | dependencies: 171 | "@nodelib/fs.scandir" "2.1.5" 172 | fastq "^1.6.0" 173 | 174 | "@rollup/rollup-android-arm-eabi@4.9.5": 175 | version "4.9.5" 176 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz#b752b6c88a14ccfcbdf3f48c577ccc3a7f0e66b9" 177 | integrity sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA== 178 | 179 | "@rollup/rollup-android-arm64@4.9.5": 180 | version "4.9.5" 181 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz#33757c3a448b9ef77b6f6292d8b0ec45c87e9c1a" 182 | integrity sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg== 183 | 184 | "@rollup/rollup-darwin-arm64@4.9.5": 185 | version "4.9.5" 186 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz#5234ba62665a3f443143bc8bcea9df2cc58f55fb" 187 | integrity sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w== 188 | 189 | "@rollup/rollup-darwin-x64@4.9.5": 190 | version "4.9.5" 191 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz#981256c054d3247b83313724938d606798a919d1" 192 | integrity sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA== 193 | 194 | "@rollup/rollup-linux-arm-gnueabihf@4.9.5": 195 | version "4.9.5" 196 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz#120678a5a2b3a283a548dbb4d337f9187a793560" 197 | integrity sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g== 198 | 199 | "@rollup/rollup-linux-arm64-gnu@4.9.5": 200 | version "4.9.5" 201 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz#c99d857e2372ece544b6f60b85058ad259f64114" 202 | integrity sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA== 203 | 204 | "@rollup/rollup-linux-arm64-musl@4.9.5": 205 | version "4.9.5" 206 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz#3064060f568a5718c2a06858cd6e6d24f2ff8632" 207 | integrity sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ== 208 | 209 | "@rollup/rollup-linux-riscv64-gnu@4.9.5": 210 | version "4.9.5" 211 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz#987d30b5d2b992fff07d055015991a57ff55fbad" 212 | integrity sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA== 213 | 214 | "@rollup/rollup-linux-x64-gnu@4.9.5": 215 | version "4.9.5" 216 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz#85946ee4d068bd12197aeeec2c6f679c94978a49" 217 | integrity sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA== 218 | 219 | "@rollup/rollup-linux-x64-musl@4.9.5": 220 | version "4.9.5" 221 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz#fe0b20f9749a60eb1df43d20effa96c756ddcbd4" 222 | integrity sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg== 223 | 224 | "@rollup/rollup-win32-arm64-msvc@4.9.5": 225 | version "4.9.5" 226 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz#422661ef0e16699a234465d15b2c1089ef963b2a" 227 | integrity sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ== 228 | 229 | "@rollup/rollup-win32-ia32-msvc@4.9.5": 230 | version "4.9.5" 231 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz#7b73a145891c202fbcc08759248983667a035d85" 232 | integrity sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA== 233 | 234 | "@rollup/rollup-win32-x64-msvc@4.9.5": 235 | version "4.9.5" 236 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz#10491ccf4f63c814d4149e0316541476ea603602" 237 | integrity sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ== 238 | 239 | "@sinclair/typebox@^0.27.8": 240 | version "0.27.8" 241 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" 242 | integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== 243 | 244 | "@types/chai-subset@^1.3.3": 245 | version "1.3.5" 246 | resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.5.tgz#3fc044451f26985f45625230a7f22284808b0a9a" 247 | integrity sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A== 248 | dependencies: 249 | "@types/chai" "*" 250 | 251 | "@types/chai@*", "@types/chai@^4.3.5": 252 | version "4.3.11" 253 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.11.tgz#e95050bf79a932cb7305dd130254ccdf9bde671c" 254 | integrity sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ== 255 | 256 | "@types/estree@1.0.5": 257 | version "1.0.5" 258 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" 259 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 260 | 261 | "@types/node@*": 262 | version "18.7.17" 263 | resolved "https://registry.npmjs.org/@types/node/-/node-18.7.17.tgz" 264 | integrity sha512-0UyfUnt02zIuqp7yC8RYtDkp/vo8bFaQ13KkSEvUAohPOAlnVNbj5Fi3fgPSuwzakS+EvvnnZ4x9y7i6ASaSPQ== 265 | 266 | "@types/normalize-package-data@^2.4.0": 267 | version "2.4.1" 268 | resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" 269 | integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== 270 | 271 | "@vitest/expect@0.34.6": 272 | version "0.34.6" 273 | resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.34.6.tgz#608a7b7a9aa3de0919db99b4cc087340a03ea77e" 274 | integrity sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw== 275 | dependencies: 276 | "@vitest/spy" "0.34.6" 277 | "@vitest/utils" "0.34.6" 278 | chai "^4.3.10" 279 | 280 | "@vitest/runner@0.34.6": 281 | version "0.34.6" 282 | resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.34.6.tgz#6f43ca241fc96b2edf230db58bcde5b974b8dcaf" 283 | integrity sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ== 284 | dependencies: 285 | "@vitest/utils" "0.34.6" 286 | p-limit "^4.0.0" 287 | pathe "^1.1.1" 288 | 289 | "@vitest/snapshot@0.34.6": 290 | version "0.34.6" 291 | resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.34.6.tgz#b4528cf683b60a3e8071cacbcb97d18b9d5e1d8b" 292 | integrity sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w== 293 | dependencies: 294 | magic-string "^0.30.1" 295 | pathe "^1.1.1" 296 | pretty-format "^29.5.0" 297 | 298 | "@vitest/spy@0.34.6": 299 | version "0.34.6" 300 | resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.34.6.tgz#b5e8642a84aad12896c915bce9b3cc8cdaf821df" 301 | integrity sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ== 302 | dependencies: 303 | tinyspy "^2.1.1" 304 | 305 | "@vitest/utils@0.34.6": 306 | version "0.34.6" 307 | resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.6.tgz#38a0a7eedddb8e7291af09a2409cb8a189516968" 308 | integrity sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A== 309 | dependencies: 310 | diff-sequences "^29.4.3" 311 | loupe "^2.3.6" 312 | pretty-format "^29.5.0" 313 | 314 | acorn-walk@^8.2.0: 315 | version "8.3.2" 316 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" 317 | integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== 318 | 319 | acorn@^8.10.0, acorn@^8.11.3, acorn@^8.9.0: 320 | version "8.11.3" 321 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" 322 | integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== 323 | 324 | aggregate-error@^3.0.0: 325 | version "3.1.0" 326 | resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" 327 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 328 | dependencies: 329 | clean-stack "^2.0.0" 330 | indent-string "^4.0.0" 331 | 332 | ansi-escapes@^4.3.0: 333 | version "4.3.2" 334 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" 335 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 336 | dependencies: 337 | type-fest "^0.21.3" 338 | 339 | ansi-regex@^5.0.1: 340 | version "5.0.1" 341 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 342 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 343 | 344 | ansi-regex@^6.0.1: 345 | version "6.0.1" 346 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" 347 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 348 | 349 | ansi-styles@^3.2.1: 350 | version "3.2.1" 351 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 352 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 353 | dependencies: 354 | color-convert "^1.9.0" 355 | 356 | ansi-styles@^4.0.0: 357 | version "4.3.0" 358 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 359 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 360 | dependencies: 361 | color-convert "^2.0.1" 362 | 363 | ansi-styles@^5.0.0: 364 | version "5.2.0" 365 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" 366 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 367 | 368 | ansi-styles@^6.0.0: 369 | version "6.1.1" 370 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.1.tgz" 371 | integrity sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg== 372 | 373 | argv-formatter@~1.0.0: 374 | version "1.0.0" 375 | resolved "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz" 376 | integrity sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw== 377 | 378 | array-union@^2.1.0: 379 | version "2.1.0" 380 | resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" 381 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 382 | 383 | assertion-error@^1.1.0: 384 | version "1.1.0" 385 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 386 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 387 | 388 | astral-regex@^2.0.0: 389 | version "2.0.0" 390 | resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" 391 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 392 | 393 | balanced-match@^1.0.0: 394 | version "1.0.2" 395 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 396 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 397 | 398 | brace-expansion@^1.1.7: 399 | version "1.1.11" 400 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 401 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 402 | dependencies: 403 | balanced-match "^1.0.0" 404 | concat-map "0.0.1" 405 | 406 | braces@^3.0.2: 407 | version "3.0.2" 408 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 409 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 410 | dependencies: 411 | fill-range "^7.0.1" 412 | 413 | cac@^6.7.14: 414 | version "6.7.14" 415 | resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" 416 | integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== 417 | 418 | chai@^4.3.10: 419 | version "4.4.1" 420 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" 421 | integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== 422 | dependencies: 423 | assertion-error "^1.1.0" 424 | check-error "^1.0.3" 425 | deep-eql "^4.1.3" 426 | get-func-name "^2.0.2" 427 | loupe "^2.3.6" 428 | pathval "^1.1.1" 429 | type-detect "^4.0.8" 430 | 431 | chalk@^2.0.0: 432 | version "2.4.2" 433 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" 434 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 435 | dependencies: 436 | ansi-styles "^3.2.1" 437 | escape-string-regexp "^1.0.5" 438 | supports-color "^5.3.0" 439 | 440 | check-error@^1.0.3: 441 | version "1.0.3" 442 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" 443 | integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== 444 | dependencies: 445 | get-func-name "^2.0.2" 446 | 447 | clean-stack@^2.0.0: 448 | version "2.2.0" 449 | resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" 450 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 451 | 452 | cli-cursor@^3.1.0: 453 | version "3.1.0" 454 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" 455 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 456 | dependencies: 457 | restore-cursor "^3.1.0" 458 | 459 | cli-truncate@^2.1.0: 460 | version "2.1.0" 461 | resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" 462 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 463 | dependencies: 464 | slice-ansi "^3.0.0" 465 | string-width "^4.2.0" 466 | 467 | cli-truncate@^3.1.0: 468 | version "3.1.0" 469 | resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" 470 | integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== 471 | dependencies: 472 | slice-ansi "^5.0.0" 473 | string-width "^5.0.0" 474 | 475 | color-convert@^1.9.0: 476 | version "1.9.3" 477 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 478 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 479 | dependencies: 480 | color-name "1.1.3" 481 | 482 | color-convert@^2.0.1: 483 | version "2.0.1" 484 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 485 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 486 | dependencies: 487 | color-name "~1.1.4" 488 | 489 | color-name@1.1.3: 490 | version "1.1.3" 491 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 492 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 493 | 494 | color-name@~1.1.4: 495 | version "1.1.4" 496 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 497 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 498 | 499 | colorette@^2.0.16, colorette@^2.0.17: 500 | version "2.0.19" 501 | resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" 502 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== 503 | 504 | commander@^9.3.0: 505 | version "9.4.0" 506 | resolved "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz" 507 | integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== 508 | 509 | concat-map@0.0.1: 510 | version "0.0.1" 511 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 512 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 513 | 514 | core-util-is@~1.0.0: 515 | version "1.0.3" 516 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" 517 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 518 | 519 | cross-spawn@^7.0.3: 520 | version "7.0.3" 521 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" 522 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 523 | dependencies: 524 | path-key "^3.1.0" 525 | shebang-command "^2.0.0" 526 | which "^2.0.1" 527 | 528 | crypto-random-string@^2.0.0: 529 | version "2.0.0" 530 | resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" 531 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 532 | 533 | debug@^4.3.4: 534 | version "4.3.4" 535 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 536 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 537 | dependencies: 538 | ms "2.1.2" 539 | 540 | deep-eql@^4.1.3: 541 | version "4.1.3" 542 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" 543 | integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== 544 | dependencies: 545 | type-detect "^4.0.0" 546 | 547 | del@^6.0.0: 548 | version "6.1.1" 549 | resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz" 550 | integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== 551 | dependencies: 552 | globby "^11.0.1" 553 | graceful-fs "^4.2.4" 554 | is-glob "^4.0.1" 555 | is-path-cwd "^2.2.0" 556 | is-path-inside "^3.0.2" 557 | p-map "^4.0.0" 558 | rimraf "^3.0.2" 559 | slash "^3.0.0" 560 | 561 | diff-sequences@^29.4.3: 562 | version "29.6.3" 563 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" 564 | integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== 565 | 566 | dir-glob@^3.0.1: 567 | version "3.0.1" 568 | resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" 569 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 570 | dependencies: 571 | path-type "^4.0.0" 572 | 573 | duplexer2@~0.1.0: 574 | version "0.1.4" 575 | resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" 576 | integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== 577 | dependencies: 578 | readable-stream "^2.0.2" 579 | 580 | eastasianwidth@^0.2.0: 581 | version "0.2.0" 582 | resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" 583 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 584 | 585 | emoji-regex@^8.0.0: 586 | version "8.0.0" 587 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 588 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 589 | 590 | emoji-regex@^9.2.2: 591 | version "9.2.2" 592 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" 593 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 594 | 595 | error-ex@^1.3.1: 596 | version "1.3.2" 597 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 598 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 599 | dependencies: 600 | is-arrayish "^0.2.1" 601 | 602 | esbuild@^0.19.3: 603 | version "0.19.11" 604 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.11.tgz#4a02dca031e768b5556606e1b468fe72e3325d96" 605 | integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA== 606 | optionalDependencies: 607 | "@esbuild/aix-ppc64" "0.19.11" 608 | "@esbuild/android-arm" "0.19.11" 609 | "@esbuild/android-arm64" "0.19.11" 610 | "@esbuild/android-x64" "0.19.11" 611 | "@esbuild/darwin-arm64" "0.19.11" 612 | "@esbuild/darwin-x64" "0.19.11" 613 | "@esbuild/freebsd-arm64" "0.19.11" 614 | "@esbuild/freebsd-x64" "0.19.11" 615 | "@esbuild/linux-arm" "0.19.11" 616 | "@esbuild/linux-arm64" "0.19.11" 617 | "@esbuild/linux-ia32" "0.19.11" 618 | "@esbuild/linux-loong64" "0.19.11" 619 | "@esbuild/linux-mips64el" "0.19.11" 620 | "@esbuild/linux-ppc64" "0.19.11" 621 | "@esbuild/linux-riscv64" "0.19.11" 622 | "@esbuild/linux-s390x" "0.19.11" 623 | "@esbuild/linux-x64" "0.19.11" 624 | "@esbuild/netbsd-x64" "0.19.11" 625 | "@esbuild/openbsd-x64" "0.19.11" 626 | "@esbuild/sunos-x64" "0.19.11" 627 | "@esbuild/win32-arm64" "0.19.11" 628 | "@esbuild/win32-ia32" "0.19.11" 629 | "@esbuild/win32-x64" "0.19.11" 630 | 631 | escape-string-regexp@^1.0.5: 632 | version "1.0.5" 633 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 634 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 635 | 636 | execa@^5.1.1: 637 | version "5.1.1" 638 | resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" 639 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 640 | dependencies: 641 | cross-spawn "^7.0.3" 642 | get-stream "^6.0.0" 643 | human-signals "^2.1.0" 644 | is-stream "^2.0.0" 645 | merge-stream "^2.0.0" 646 | npm-run-path "^4.0.1" 647 | onetime "^5.1.2" 648 | signal-exit "^3.0.3" 649 | strip-final-newline "^2.0.0" 650 | 651 | execa@^6.1.0: 652 | version "6.1.0" 653 | resolved "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz" 654 | integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== 655 | dependencies: 656 | cross-spawn "^7.0.3" 657 | get-stream "^6.0.1" 658 | human-signals "^3.0.1" 659 | is-stream "^3.0.0" 660 | merge-stream "^2.0.0" 661 | npm-run-path "^5.1.0" 662 | onetime "^6.0.0" 663 | signal-exit "^3.0.7" 664 | strip-final-newline "^3.0.0" 665 | 666 | fast-glob@^3.2.9: 667 | version "3.2.12" 668 | resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" 669 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 670 | dependencies: 671 | "@nodelib/fs.stat" "^2.0.2" 672 | "@nodelib/fs.walk" "^1.2.3" 673 | glob-parent "^5.1.2" 674 | merge2 "^1.3.0" 675 | micromatch "^4.0.4" 676 | 677 | fastq@^1.6.0: 678 | version "1.13.0" 679 | resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" 680 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 681 | dependencies: 682 | reusify "^1.0.4" 683 | 684 | file-url@^3.0.0: 685 | version "3.0.0" 686 | resolved "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz" 687 | integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== 688 | 689 | fill-range@^7.0.1: 690 | version "7.0.1" 691 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 692 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 693 | dependencies: 694 | to-regex-range "^5.0.1" 695 | 696 | find-up@^3.0.0: 697 | version "3.0.0" 698 | resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" 699 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 700 | dependencies: 701 | locate-path "^3.0.0" 702 | 703 | fs-extra@^10.0.1: 704 | version "10.1.0" 705 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 706 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== 707 | dependencies: 708 | graceful-fs "^4.2.0" 709 | jsonfile "^6.0.1" 710 | universalify "^2.0.0" 711 | 712 | fs.realpath@^1.0.0: 713 | version "1.0.0" 714 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 715 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 716 | 717 | fsevents@~2.3.2, fsevents@~2.3.3: 718 | version "2.3.3" 719 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 720 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 721 | 722 | function-bind@^1.1.1: 723 | version "1.1.1" 724 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 725 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 726 | 727 | get-func-name@^2.0.1, get-func-name@^2.0.2: 728 | version "2.0.2" 729 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" 730 | integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== 731 | 732 | get-stream@^6.0.0, get-stream@^6.0.1: 733 | version "6.0.1" 734 | resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" 735 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 736 | 737 | git-log-parser@^1.2.0: 738 | version "1.2.0" 739 | resolved "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz" 740 | integrity sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA== 741 | dependencies: 742 | argv-formatter "~1.0.0" 743 | spawn-error-forwarder "~1.0.0" 744 | split2 "~1.0.0" 745 | stream-combiner2 "~1.1.1" 746 | through2 "~2.0.0" 747 | traverse "~0.6.6" 748 | 749 | glob-parent@^5.1.2: 750 | version "5.1.2" 751 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 752 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 753 | dependencies: 754 | is-glob "^4.0.1" 755 | 756 | glob@^7.1.3: 757 | version "7.2.3" 758 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 759 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 760 | dependencies: 761 | fs.realpath "^1.0.0" 762 | inflight "^1.0.4" 763 | inherits "2" 764 | minimatch "^3.1.1" 765 | once "^1.3.0" 766 | path-is-absolute "^1.0.0" 767 | 768 | globby@^11.0.1: 769 | version "11.1.0" 770 | resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" 771 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 772 | dependencies: 773 | array-union "^2.1.0" 774 | dir-glob "^3.0.1" 775 | fast-glob "^3.2.9" 776 | ignore "^5.2.0" 777 | merge2 "^1.4.1" 778 | slash "^3.0.0" 779 | 780 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 781 | version "4.2.11" 782 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 783 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 784 | 785 | graceful-fs@^4.2.4: 786 | version "4.2.10" 787 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" 788 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 789 | 790 | has-flag@^3.0.0: 791 | version "3.0.0" 792 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 793 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 794 | 795 | has@^1.0.3: 796 | version "1.0.3" 797 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 798 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 799 | dependencies: 800 | function-bind "^1.1.1" 801 | 802 | hosted-git-info@^2.1.4: 803 | version "2.8.9" 804 | resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" 805 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 806 | 807 | human-signals@^2.1.0: 808 | version "2.1.0" 809 | resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" 810 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 811 | 812 | human-signals@^3.0.1: 813 | version "3.0.1" 814 | resolved "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz" 815 | integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== 816 | 817 | husky@^8.0.1: 818 | version "8.0.1" 819 | resolved "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz" 820 | integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== 821 | 822 | ignore@^5.2.0: 823 | version "5.2.0" 824 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" 825 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 826 | 827 | indent-string@^4.0.0: 828 | version "4.0.0" 829 | resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" 830 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 831 | 832 | inflight@^1.0.4: 833 | version "1.0.6" 834 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 835 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 836 | dependencies: 837 | once "^1.3.0" 838 | wrappy "1" 839 | 840 | inherits@2, inherits@~2.0.3: 841 | version "2.0.4" 842 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 843 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 844 | 845 | is-arrayish@^0.2.1: 846 | version "0.2.1" 847 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 848 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 849 | 850 | is-core-module@^2.9.0: 851 | version "2.10.0" 852 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" 853 | integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== 854 | dependencies: 855 | has "^1.0.3" 856 | 857 | is-extglob@^2.1.1: 858 | version "2.1.1" 859 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 860 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 861 | 862 | is-fullwidth-code-point@^3.0.0: 863 | version "3.0.0" 864 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 865 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 866 | 867 | is-fullwidth-code-point@^4.0.0: 868 | version "4.0.0" 869 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" 870 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 871 | 872 | is-glob@^4.0.1: 873 | version "4.0.3" 874 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 875 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 876 | dependencies: 877 | is-extglob "^2.1.1" 878 | 879 | is-number@^7.0.0: 880 | version "7.0.0" 881 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 882 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 883 | 884 | is-path-cwd@^2.2.0: 885 | version "2.2.0" 886 | resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" 887 | integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== 888 | 889 | is-path-inside@^3.0.2: 890 | version "3.0.3" 891 | resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" 892 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 893 | 894 | is-stream@^2.0.0: 895 | version "2.0.1" 896 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" 897 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 898 | 899 | is-stream@^3.0.0: 900 | version "3.0.0" 901 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" 902 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 903 | 904 | isarray@~1.0.0: 905 | version "1.0.0" 906 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 907 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 908 | 909 | isexe@^2.0.0: 910 | version "2.0.0" 911 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 912 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 913 | 914 | js-tokens@^4.0.0: 915 | version "4.0.0" 916 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 917 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 918 | 919 | json-parse-even-better-errors@^2.3.0: 920 | version "2.3.1" 921 | resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" 922 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 923 | 924 | jsonc-parser@^3.2.0: 925 | version "3.2.0" 926 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" 927 | integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== 928 | 929 | jsonfile@^6.0.1: 930 | version "6.1.0" 931 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 932 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 933 | dependencies: 934 | universalify "^2.0.0" 935 | optionalDependencies: 936 | graceful-fs "^4.1.6" 937 | 938 | lilconfig@2.0.5: 939 | version "2.0.5" 940 | resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" 941 | integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== 942 | 943 | lines-and-columns@^1.1.6: 944 | version "1.2.4" 945 | resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" 946 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 947 | 948 | lint-staged@^13.0.3: 949 | version "13.0.3" 950 | resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.3.tgz" 951 | integrity sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug== 952 | dependencies: 953 | cli-truncate "^3.1.0" 954 | colorette "^2.0.17" 955 | commander "^9.3.0" 956 | debug "^4.3.4" 957 | execa "^6.1.0" 958 | lilconfig "2.0.5" 959 | listr2 "^4.0.5" 960 | micromatch "^4.0.5" 961 | normalize-path "^3.0.0" 962 | object-inspect "^1.12.2" 963 | pidtree "^0.6.0" 964 | string-argv "^0.3.1" 965 | yaml "^2.1.1" 966 | 967 | listr2@^4.0.5: 968 | version "4.0.5" 969 | resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz" 970 | integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== 971 | dependencies: 972 | cli-truncate "^2.1.0" 973 | colorette "^2.0.16" 974 | log-update "^4.0.0" 975 | p-map "^4.0.0" 976 | rfdc "^1.3.0" 977 | rxjs "^7.5.5" 978 | through "^2.3.8" 979 | wrap-ansi "^7.0.0" 980 | 981 | local-pkg@^0.4.3: 982 | version "0.4.3" 983 | resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" 984 | integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== 985 | 986 | locate-path@^3.0.0: 987 | version "3.0.0" 988 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" 989 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 990 | dependencies: 991 | p-locate "^3.0.0" 992 | path-exists "^3.0.0" 993 | 994 | log-update@^4.0.0: 995 | version "4.0.0" 996 | resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" 997 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 998 | dependencies: 999 | ansi-escapes "^4.3.0" 1000 | cli-cursor "^3.1.0" 1001 | slice-ansi "^4.0.0" 1002 | wrap-ansi "^6.2.0" 1003 | 1004 | loupe@^2.3.6: 1005 | version "2.3.7" 1006 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" 1007 | integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== 1008 | dependencies: 1009 | get-func-name "^2.0.1" 1010 | 1011 | magic-string@^0.30.1: 1012 | version "0.30.5" 1013 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" 1014 | integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== 1015 | dependencies: 1016 | "@jridgewell/sourcemap-codec" "^1.4.15" 1017 | 1018 | merge-stream@^2.0.0: 1019 | version "2.0.0" 1020 | resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" 1021 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1022 | 1023 | merge2@^1.3.0, merge2@^1.4.1: 1024 | version "1.4.1" 1025 | resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" 1026 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1027 | 1028 | micromatch@^4.0.4, micromatch@^4.0.5: 1029 | version "4.0.5" 1030 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" 1031 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1032 | dependencies: 1033 | braces "^3.0.2" 1034 | picomatch "^2.3.1" 1035 | 1036 | mimic-fn@^2.1.0: 1037 | version "2.1.0" 1038 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" 1039 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1040 | 1041 | mimic-fn@^4.0.0: 1042 | version "4.0.0" 1043 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" 1044 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 1045 | 1046 | minimatch@^3.1.1: 1047 | version "3.1.2" 1048 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 1049 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1050 | dependencies: 1051 | brace-expansion "^1.1.7" 1052 | 1053 | mlly@^1.2.0, mlly@^1.4.0: 1054 | version "1.5.0" 1055 | resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" 1056 | integrity sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ== 1057 | dependencies: 1058 | acorn "^8.11.3" 1059 | pathe "^1.1.2" 1060 | pkg-types "^1.0.3" 1061 | ufo "^1.3.2" 1062 | 1063 | ms@2.1.2: 1064 | version "2.1.2" 1065 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1066 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1067 | 1068 | nanoid@^3.3.7: 1069 | version "3.3.7" 1070 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" 1071 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== 1072 | 1073 | normalize-package-data@^2.5.0: 1074 | version "2.5.0" 1075 | resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" 1076 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1077 | dependencies: 1078 | hosted-git-info "^2.1.4" 1079 | resolve "^1.10.0" 1080 | semver "2 || 3 || 4 || 5" 1081 | validate-npm-package-license "^3.0.1" 1082 | 1083 | normalize-path@^3.0.0: 1084 | version "3.0.0" 1085 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1086 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1087 | 1088 | npm-run-path@^4.0.1: 1089 | version "4.0.1" 1090 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" 1091 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1092 | dependencies: 1093 | path-key "^3.0.0" 1094 | 1095 | npm-run-path@^5.1.0: 1096 | version "5.1.0" 1097 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" 1098 | integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== 1099 | dependencies: 1100 | path-key "^4.0.0" 1101 | 1102 | object-inspect@^1.12.2: 1103 | version "1.12.2" 1104 | resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" 1105 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 1106 | 1107 | once@^1.3.0: 1108 | version "1.4.0" 1109 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1110 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1111 | dependencies: 1112 | wrappy "1" 1113 | 1114 | onetime@^5.1.0, onetime@^5.1.2: 1115 | version "5.1.2" 1116 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" 1117 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1118 | dependencies: 1119 | mimic-fn "^2.1.0" 1120 | 1121 | onetime@^6.0.0: 1122 | version "6.0.0" 1123 | resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" 1124 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 1125 | dependencies: 1126 | mimic-fn "^4.0.0" 1127 | 1128 | p-each-series@^2.1.0: 1129 | version "2.2.0" 1130 | resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz" 1131 | integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== 1132 | 1133 | p-limit@^2.0.0: 1134 | version "2.3.0" 1135 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" 1136 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1137 | dependencies: 1138 | p-try "^2.0.0" 1139 | 1140 | p-limit@^3.1.0: 1141 | version "3.1.0" 1142 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 1143 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1144 | dependencies: 1145 | yocto-queue "^0.1.0" 1146 | 1147 | p-limit@^4.0.0: 1148 | version "4.0.0" 1149 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" 1150 | integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== 1151 | dependencies: 1152 | yocto-queue "^1.0.0" 1153 | 1154 | p-locate@^3.0.0: 1155 | version "3.0.0" 1156 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" 1157 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1158 | dependencies: 1159 | p-limit "^2.0.0" 1160 | 1161 | p-map@^4.0.0: 1162 | version "4.0.0" 1163 | resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" 1164 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1165 | dependencies: 1166 | aggregate-error "^3.0.0" 1167 | 1168 | p-try@^2.0.0: 1169 | version "2.2.0" 1170 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" 1171 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1172 | 1173 | parse-json@^5.0.0: 1174 | version "5.2.0" 1175 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" 1176 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1177 | dependencies: 1178 | "@babel/code-frame" "^7.0.0" 1179 | error-ex "^1.3.1" 1180 | json-parse-even-better-errors "^2.3.0" 1181 | lines-and-columns "^1.1.6" 1182 | 1183 | path-exists@^3.0.0: 1184 | version "3.0.0" 1185 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" 1186 | integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== 1187 | 1188 | path-is-absolute@^1.0.0: 1189 | version "1.0.1" 1190 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1191 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1192 | 1193 | path-key@^3.0.0, path-key@^3.1.0: 1194 | version "3.1.1" 1195 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 1196 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1197 | 1198 | path-key@^4.0.0: 1199 | version "4.0.0" 1200 | resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" 1201 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 1202 | 1203 | path-parse@^1.0.7: 1204 | version "1.0.7" 1205 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1206 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1207 | 1208 | path-type@^4.0.0: 1209 | version "4.0.0" 1210 | resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" 1211 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1212 | 1213 | pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: 1214 | version "1.1.2" 1215 | resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" 1216 | integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== 1217 | 1218 | pathval@^1.1.1: 1219 | version "1.1.1" 1220 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 1221 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1222 | 1223 | picocolors@^1.0.0: 1224 | version "1.0.0" 1225 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" 1226 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1227 | 1228 | picomatch@^2.3.1: 1229 | version "2.3.1" 1230 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1231 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1232 | 1233 | pidtree@^0.6.0: 1234 | version "0.6.0" 1235 | resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" 1236 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== 1237 | 1238 | pkg-types@^1.0.3: 1239 | version "1.0.3" 1240 | resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" 1241 | integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== 1242 | dependencies: 1243 | jsonc-parser "^3.2.0" 1244 | mlly "^1.2.0" 1245 | pathe "^1.1.0" 1246 | 1247 | pkg-up@^3.1.0: 1248 | version "3.1.0" 1249 | resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" 1250 | integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== 1251 | dependencies: 1252 | find-up "^3.0.0" 1253 | 1254 | postcss@^8.4.32: 1255 | version "8.4.33" 1256 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" 1257 | integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== 1258 | dependencies: 1259 | nanoid "^3.3.7" 1260 | picocolors "^1.0.0" 1261 | source-map-js "^1.0.2" 1262 | 1263 | prettier@^3.2.4: 1264 | version "3.2.4" 1265 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" 1266 | integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== 1267 | 1268 | pretty-format@^29.5.0: 1269 | version "29.7.0" 1270 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" 1271 | integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== 1272 | dependencies: 1273 | "@jest/schemas" "^29.6.3" 1274 | ansi-styles "^5.0.0" 1275 | react-is "^18.0.0" 1276 | 1277 | process-nextick-args@~2.0.0: 1278 | version "2.0.1" 1279 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1280 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1281 | 1282 | queue-microtask@^1.2.2: 1283 | version "1.2.3" 1284 | resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" 1285 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1286 | 1287 | ramda@^0.27.2: 1288 | version "0.27.2" 1289 | resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz" 1290 | integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== 1291 | 1292 | react-is@^18.0.0: 1293 | version "18.2.0" 1294 | resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" 1295 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 1296 | 1297 | read-pkg@^5.2.0: 1298 | version "5.2.0" 1299 | resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" 1300 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 1301 | dependencies: 1302 | "@types/normalize-package-data" "^2.4.0" 1303 | normalize-package-data "^2.5.0" 1304 | parse-json "^5.0.0" 1305 | type-fest "^0.6.0" 1306 | 1307 | readable-stream@^2.0.2, readable-stream@~2.3.6: 1308 | version "2.3.7" 1309 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" 1310 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1311 | dependencies: 1312 | core-util-is "~1.0.0" 1313 | inherits "~2.0.3" 1314 | isarray "~1.0.0" 1315 | process-nextick-args "~2.0.0" 1316 | safe-buffer "~5.1.1" 1317 | string_decoder "~1.1.1" 1318 | util-deprecate "~1.0.1" 1319 | 1320 | resolve@^1.10.0: 1321 | version "1.22.1" 1322 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" 1323 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1324 | dependencies: 1325 | is-core-module "^2.9.0" 1326 | path-parse "^1.0.7" 1327 | supports-preserve-symlinks-flag "^1.0.0" 1328 | 1329 | restore-cursor@^3.1.0: 1330 | version "3.1.0" 1331 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" 1332 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1333 | dependencies: 1334 | onetime "^5.1.0" 1335 | signal-exit "^3.0.2" 1336 | 1337 | reusify@^1.0.4: 1338 | version "1.0.4" 1339 | resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" 1340 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1341 | 1342 | rfdc@^1.3.0: 1343 | version "1.3.0" 1344 | resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" 1345 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 1346 | 1347 | rimraf@^3.0.2: 1348 | version "3.0.2" 1349 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" 1350 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1351 | dependencies: 1352 | glob "^7.1.3" 1353 | 1354 | rollup@^4.2.0: 1355 | version "4.9.5" 1356 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.5.tgz#62999462c90f4c8b5d7c38fc7161e63b29101b05" 1357 | integrity sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ== 1358 | dependencies: 1359 | "@types/estree" "1.0.5" 1360 | optionalDependencies: 1361 | "@rollup/rollup-android-arm-eabi" "4.9.5" 1362 | "@rollup/rollup-android-arm64" "4.9.5" 1363 | "@rollup/rollup-darwin-arm64" "4.9.5" 1364 | "@rollup/rollup-darwin-x64" "4.9.5" 1365 | "@rollup/rollup-linux-arm-gnueabihf" "4.9.5" 1366 | "@rollup/rollup-linux-arm64-gnu" "4.9.5" 1367 | "@rollup/rollup-linux-arm64-musl" "4.9.5" 1368 | "@rollup/rollup-linux-riscv64-gnu" "4.9.5" 1369 | "@rollup/rollup-linux-x64-gnu" "4.9.5" 1370 | "@rollup/rollup-linux-x64-musl" "4.9.5" 1371 | "@rollup/rollup-win32-arm64-msvc" "4.9.5" 1372 | "@rollup/rollup-win32-ia32-msvc" "4.9.5" 1373 | "@rollup/rollup-win32-x64-msvc" "4.9.5" 1374 | fsevents "~2.3.2" 1375 | 1376 | run-parallel@^1.1.9: 1377 | version "1.2.0" 1378 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" 1379 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1380 | dependencies: 1381 | queue-microtask "^1.2.2" 1382 | 1383 | rxjs@^7.5.5: 1384 | version "7.5.6" 1385 | resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" 1386 | integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== 1387 | dependencies: 1388 | tslib "^2.1.0" 1389 | 1390 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1391 | version "5.1.2" 1392 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 1393 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1394 | 1395 | semantic-release-plugin-decorators@^4.0.0: 1396 | version "4.0.0" 1397 | resolved "https://registry.yarnpkg.com/semantic-release-plugin-decorators/-/semantic-release-plugin-decorators-4.0.0.tgz#f2309ccbeca7dc27c136267752bc13f2c9af9dbe" 1398 | integrity sha512-5eqaITbgGJu7AWCqY/ZwDh3TCS84Q9i470AImwP9vw3YcFRyR8sEb499Zbnqa076bv02yFUn88GtloQMXQsBrg== 1399 | 1400 | "semver@2 || 3 || 4 || 5": 1401 | version "5.7.1" 1402 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 1403 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1404 | 1405 | shebang-command@^2.0.0: 1406 | version "2.0.0" 1407 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1408 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1409 | dependencies: 1410 | shebang-regex "^3.0.0" 1411 | 1412 | shebang-regex@^3.0.0: 1413 | version "3.0.0" 1414 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1415 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1416 | 1417 | siginfo@^2.0.0: 1418 | version "2.0.0" 1419 | resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" 1420 | integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== 1421 | 1422 | signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: 1423 | version "3.0.7" 1424 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" 1425 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 1426 | 1427 | slash@^3.0.0: 1428 | version "3.0.0" 1429 | resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" 1430 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1431 | 1432 | slice-ansi@^3.0.0: 1433 | version "3.0.0" 1434 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" 1435 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 1436 | dependencies: 1437 | ansi-styles "^4.0.0" 1438 | astral-regex "^2.0.0" 1439 | is-fullwidth-code-point "^3.0.0" 1440 | 1441 | slice-ansi@^4.0.0: 1442 | version "4.0.0" 1443 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" 1444 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1445 | dependencies: 1446 | ansi-styles "^4.0.0" 1447 | astral-regex "^2.0.0" 1448 | is-fullwidth-code-point "^3.0.0" 1449 | 1450 | slice-ansi@^5.0.0: 1451 | version "5.0.0" 1452 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" 1453 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 1454 | dependencies: 1455 | ansi-styles "^6.0.0" 1456 | is-fullwidth-code-point "^4.0.0" 1457 | 1458 | source-map-js@^1.0.2: 1459 | version "1.0.2" 1460 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1461 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1462 | 1463 | spawn-error-forwarder@~1.0.0: 1464 | version "1.0.0" 1465 | resolved "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz" 1466 | integrity sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g== 1467 | 1468 | spdx-correct@^3.0.0: 1469 | version "3.1.1" 1470 | resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" 1471 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1472 | dependencies: 1473 | spdx-expression-parse "^3.0.0" 1474 | spdx-license-ids "^3.0.0" 1475 | 1476 | spdx-exceptions@^2.1.0: 1477 | version "2.3.0" 1478 | resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" 1479 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1480 | 1481 | spdx-expression-parse@^3.0.0: 1482 | version "3.0.1" 1483 | resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" 1484 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1485 | dependencies: 1486 | spdx-exceptions "^2.1.0" 1487 | spdx-license-ids "^3.0.0" 1488 | 1489 | spdx-license-ids@^3.0.0: 1490 | version "3.0.12" 1491 | resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" 1492 | integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== 1493 | 1494 | split2@~1.0.0: 1495 | version "1.0.0" 1496 | resolved "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz" 1497 | integrity sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg== 1498 | dependencies: 1499 | through2 "~2.0.0" 1500 | 1501 | stackback@0.0.2: 1502 | version "0.0.2" 1503 | resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" 1504 | integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== 1505 | 1506 | std-env@^3.3.3: 1507 | version "3.7.0" 1508 | resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" 1509 | integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== 1510 | 1511 | stream-combiner2@~1.1.1: 1512 | version "1.1.1" 1513 | resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz" 1514 | integrity sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw== 1515 | dependencies: 1516 | duplexer2 "~0.1.0" 1517 | readable-stream "^2.0.2" 1518 | 1519 | string-argv@^0.3.1: 1520 | version "0.3.1" 1521 | resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" 1522 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1523 | 1524 | string-width@^4.1.0, string-width@^4.2.0: 1525 | version "4.2.3" 1526 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1527 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1528 | dependencies: 1529 | emoji-regex "^8.0.0" 1530 | is-fullwidth-code-point "^3.0.0" 1531 | strip-ansi "^6.0.1" 1532 | 1533 | string-width@^5.0.0: 1534 | version "5.1.2" 1535 | resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" 1536 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1537 | dependencies: 1538 | eastasianwidth "^0.2.0" 1539 | emoji-regex "^9.2.2" 1540 | strip-ansi "^7.0.1" 1541 | 1542 | string_decoder@~1.1.1: 1543 | version "1.1.1" 1544 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 1545 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1546 | dependencies: 1547 | safe-buffer "~5.1.0" 1548 | 1549 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1550 | version "6.0.1" 1551 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1552 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1553 | dependencies: 1554 | ansi-regex "^5.0.1" 1555 | 1556 | strip-ansi@^7.0.1: 1557 | version "7.0.1" 1558 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" 1559 | integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== 1560 | dependencies: 1561 | ansi-regex "^6.0.1" 1562 | 1563 | strip-final-newline@^2.0.0: 1564 | version "2.0.0" 1565 | resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" 1566 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1567 | 1568 | strip-final-newline@^3.0.0: 1569 | version "3.0.0" 1570 | resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" 1571 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 1572 | 1573 | strip-literal@^1.0.1: 1574 | version "1.3.0" 1575 | resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07" 1576 | integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== 1577 | dependencies: 1578 | acorn "^8.10.0" 1579 | 1580 | supports-color@^5.3.0: 1581 | version "5.5.0" 1582 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 1583 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1584 | dependencies: 1585 | has-flag "^3.0.0" 1586 | 1587 | supports-preserve-symlinks-flag@^1.0.0: 1588 | version "1.0.0" 1589 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 1590 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1591 | 1592 | temp-dir@^2.0.0: 1593 | version "2.0.0" 1594 | resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" 1595 | integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== 1596 | 1597 | tempy@1.0.1: 1598 | version "1.0.1" 1599 | resolved "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz" 1600 | integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== 1601 | dependencies: 1602 | del "^6.0.0" 1603 | is-stream "^2.0.0" 1604 | temp-dir "^2.0.0" 1605 | type-fest "^0.16.0" 1606 | unique-string "^2.0.0" 1607 | 1608 | through2@~2.0.0: 1609 | version "2.0.5" 1610 | resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" 1611 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 1612 | dependencies: 1613 | readable-stream "~2.3.6" 1614 | xtend "~4.0.1" 1615 | 1616 | through@^2.3.8: 1617 | version "2.3.8" 1618 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1619 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 1620 | 1621 | tinybench@^2.5.0: 1622 | version "2.6.0" 1623 | resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" 1624 | integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA== 1625 | 1626 | tinypool@^0.7.0: 1627 | version "0.7.0" 1628 | resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.7.0.tgz#88053cc99b4a594382af23190c609d93fddf8021" 1629 | integrity sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww== 1630 | 1631 | tinyspy@^2.1.1: 1632 | version "2.2.0" 1633 | resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.0.tgz#9dc04b072746520b432f77ea2c2d17933de5d6ce" 1634 | integrity sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg== 1635 | 1636 | to-regex-range@^5.0.1: 1637 | version "5.0.1" 1638 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1639 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1640 | dependencies: 1641 | is-number "^7.0.0" 1642 | 1643 | traverse@~0.6.6: 1644 | version "0.6.6" 1645 | resolved "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz" 1646 | integrity sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw== 1647 | 1648 | tslib@^2.1.0: 1649 | version "2.4.0" 1650 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" 1651 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1652 | 1653 | type-detect@^4.0.0, type-detect@^4.0.8: 1654 | version "4.0.8" 1655 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1656 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1657 | 1658 | type-fest@^0.16.0: 1659 | version "0.16.0" 1660 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" 1661 | integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== 1662 | 1663 | type-fest@^0.21.3: 1664 | version "0.21.3" 1665 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" 1666 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1667 | 1668 | type-fest@^0.6.0: 1669 | version "0.6.0" 1670 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" 1671 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 1672 | 1673 | ufo@^1.3.2: 1674 | version "1.3.2" 1675 | resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" 1676 | integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== 1677 | 1678 | unique-string@^2.0.0: 1679 | version "2.0.0" 1680 | resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" 1681 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1682 | dependencies: 1683 | crypto-random-string "^2.0.0" 1684 | 1685 | universalify@^2.0.0: 1686 | version "2.0.1" 1687 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" 1688 | integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== 1689 | 1690 | util-deprecate@~1.0.1: 1691 | version "1.0.2" 1692 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1693 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1694 | 1695 | validate-npm-package-license@^3.0.1: 1696 | version "3.0.4" 1697 | resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" 1698 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1699 | dependencies: 1700 | spdx-correct "^3.0.0" 1701 | spdx-expression-parse "^3.0.0" 1702 | 1703 | vite-node@0.34.6: 1704 | version "0.34.6" 1705 | resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.34.6.tgz#34d19795de1498562bf21541a58edcd106328a17" 1706 | integrity sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA== 1707 | dependencies: 1708 | cac "^6.7.14" 1709 | debug "^4.3.4" 1710 | mlly "^1.4.0" 1711 | pathe "^1.1.1" 1712 | picocolors "^1.0.0" 1713 | vite "^3.0.0 || ^4.0.0 || ^5.0.0-0" 1714 | 1715 | "vite@^3.0.0 || ^4.0.0 || ^5.0.0-0", "vite@^3.1.0 || ^4.0.0 || ^5.0.0-0": 1716 | version "5.0.11" 1717 | resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.11.tgz#31562e41e004cb68e1d51f5d2c641ab313b289e4" 1718 | integrity sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA== 1719 | dependencies: 1720 | esbuild "^0.19.3" 1721 | postcss "^8.4.32" 1722 | rollup "^4.2.0" 1723 | optionalDependencies: 1724 | fsevents "~2.3.3" 1725 | 1726 | vitest@0.34.6: 1727 | version "0.34.6" 1728 | resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.6.tgz#44880feeeef493c04b7f795ed268f24a543250d7" 1729 | integrity sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q== 1730 | dependencies: 1731 | "@types/chai" "^4.3.5" 1732 | "@types/chai-subset" "^1.3.3" 1733 | "@types/node" "*" 1734 | "@vitest/expect" "0.34.6" 1735 | "@vitest/runner" "0.34.6" 1736 | "@vitest/snapshot" "0.34.6" 1737 | "@vitest/spy" "0.34.6" 1738 | "@vitest/utils" "0.34.6" 1739 | acorn "^8.9.0" 1740 | acorn-walk "^8.2.0" 1741 | cac "^6.7.14" 1742 | chai "^4.3.10" 1743 | debug "^4.3.4" 1744 | local-pkg "^0.4.3" 1745 | magic-string "^0.30.1" 1746 | pathe "^1.1.1" 1747 | picocolors "^1.0.0" 1748 | std-env "^3.3.3" 1749 | strip-literal "^1.0.1" 1750 | tinybench "^2.5.0" 1751 | tinypool "^0.7.0" 1752 | vite "^3.1.0 || ^4.0.0 || ^5.0.0-0" 1753 | vite-node "0.34.6" 1754 | why-is-node-running "^2.2.2" 1755 | 1756 | which@^2.0.1: 1757 | version "2.0.2" 1758 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1759 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1760 | dependencies: 1761 | isexe "^2.0.0" 1762 | 1763 | why-is-node-running@^2.2.2: 1764 | version "2.2.2" 1765 | resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" 1766 | integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== 1767 | dependencies: 1768 | siginfo "^2.0.0" 1769 | stackback "0.0.2" 1770 | 1771 | wrap-ansi@^6.2.0: 1772 | version "6.2.0" 1773 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" 1774 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1775 | dependencies: 1776 | ansi-styles "^4.0.0" 1777 | string-width "^4.1.0" 1778 | strip-ansi "^6.0.0" 1779 | 1780 | wrap-ansi@^7.0.0: 1781 | version "7.0.0" 1782 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1783 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1784 | dependencies: 1785 | ansi-styles "^4.0.0" 1786 | string-width "^4.1.0" 1787 | strip-ansi "^6.0.0" 1788 | 1789 | wrappy@1: 1790 | version "1.0.2" 1791 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1792 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1793 | 1794 | xtend@~4.0.1: 1795 | version "4.0.2" 1796 | resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" 1797 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1798 | 1799 | yaml@^2.1.1: 1800 | version "2.1.1" 1801 | resolved "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz" 1802 | integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== 1803 | 1804 | yocto-queue@^0.1.0: 1805 | version "0.1.0" 1806 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 1807 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1808 | 1809 | yocto-queue@^1.0.0: 1810 | version "1.0.0" 1811 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" 1812 | integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== 1813 | --------------------------------------------------------------------------------