├── .DS_Store ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ └── npm-publish.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .npmignore ├── .prettierrc.js ├── LICENSE ├── README.md ├── __tests__ ├── full-cycle.test.js └── monoRepo │ ├── package.json │ ├── packages │ ├── root-workspace │ │ ├── no.js │ │ ├── package.json │ │ └── src.js │ ├── workspace-1 │ │ ├── nestedFolder │ │ │ └── nestedFile.js │ │ ├── package.json │ │ └── src.js │ ├── workspace-2 │ │ ├── package.json │ │ └── src.js │ ├── workspace-4 │ │ ├── package.json │ │ └── src.js │ ├── workspace11 │ │ ├── package.json │ │ └── src.js │ ├── workspace12 │ │ ├── package.json │ │ └── src.js │ ├── workspace13 │ │ ├── package.json │ │ └── src.js │ ├── workspace14 │ │ ├── package.json │ │ └── src.js │ ├── workspace15 │ │ ├── package.json │ │ └── src.js │ ├── workspace16 │ │ ├── package.json │ │ └── src.js │ ├── workspace17 │ │ ├── package.json │ │ └── src.js │ └── workspace3 │ │ ├── package.json │ │ └── src.js │ ├── pnpm-lock.yaml │ └── pnpm-workspace.yaml ├── jest.config.js ├── package.json ├── packages ├── workspace1 │ └── package.json └── workspace2 │ └── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── src ├── index.js └── params.js └── vitest.config.js /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/.DS_Store -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/dist 2 | **/node_modules -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | export default { 2 | extends: ['eslint:recommended'], 3 | rules: { 4 | // Formatting rules 5 | 'indent': ['error', 2], 6 | 'quotes': ['error', 'single', { 'avoidEscape': true }], 7 | 'semi': ['error', true], 8 | 'comma-dangle': ['error', 'always-multiline'], 9 | 'arrow-parens': ['error', 'avoid'], 10 | 'max-len': ['error', { 'code': 131 }], 11 | 'object-curly-spacing': ['error', true], 12 | 'linebreak-style': ['error', 'unix'], 13 | 'eol-last': ['error', 'always'], 14 | 'no-trailing-spaces': 'error', 15 | 'key-spacing': ['error', { 'beforeColon': false, 'afterColon': true }], 16 | 'comma-spacing': ['error', { 'before': false, 'after': true }], 17 | 18 | // Code quality rules from previous config 19 | 'no-unused-vars': ['error', { ignoreRestSiblings: true }], 20 | }, 21 | parserOptions: { 22 | ecmaVersion: 2020, 23 | sourceType: 'module', 24 | }, 25 | env: { 26 | es6: true, 27 | browser: true, 28 | node: true, 29 | }, 30 | }; 31 | -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | name: test & lint 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - uses: pnpm/action-setup@v2.0.1 11 | with: 12 | version: 6.2.5 13 | - run: pnpm install 14 | - run: pnpm run lint 15 | - run: pnpm run test 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/dist 3 | packages/test/* 4 | .vscode 5 | .yarn 6 | .env 7 | **/_isolated_/ 8 | **/_isolated_other_/ 9 | **/.DS_Store 10 | .DS_Store -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | pnpm run lint && pnpm run test 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | ** 2 | !**/package.json 3 | !**/dist/** -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | trailingComma: 'all', 3 | arrowParens: 'avoid', 4 | bracketSpacing: true, 5 | singleQuote: true, 6 | printWidth: 131, 7 | useTabs: false, 8 | tabWidth: 2, 9 | semi: true 10 | }; 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # Released under MIT License 2 | 3 | Copyright (c) 2020 Logz.io™. 4 | 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pnpm-isolate-workspace 2 | 3 | ![npm](https://img.shields.io/npm/v/pnpm-isolate-workspace) 4 | 5 | **Isolate a workspace in pnpm workspaces project** 6 | when working in pnpm workspaces environment 7 | sometimes some workspaces depend on other workspaces. 8 | this behavior makes it hard to prepare a workspace for a production environment, 9 | since we need to copy all related workspaces along with it. 10 | 11 | This tool helps you isolate the workspace. 12 | It will copy all related workspaces to a destination folder under the workspace. 13 | And will make it a root workspace to all the other copied workspaces. 14 | that way, you end up with an isolated project that has everything it needs under one folder 15 | 16 | ### motivation 17 | 18 | using CI/CD to get your project ready for production is extremely tricky with monorepos. 19 | When your monorepo gets too big, and you want to dockerized each service independently, 20 | you want to prevent your docker context scope from the root of the monorepo. 21 | And make the scope for the folder of your workspace/project/service folder. 22 | To achieve it, you need to copy all project dependence workspaces to this folder. 23 | 24 | ### example 25 | 26 | if we have a monorepo workspaces tree that looks like this: 27 | 28 | ``` 29 | ├── workspace-1 30 | ├ ├── package.json 31 | ├ ├── src-code 32 | ├── workspace-2 33 | ├ ├── package.json 34 | ├ ├── src-code 35 | ├── package.json 36 | ├── pnpm-lock.yaml 37 | ├── pnpm-workspace.yaml 38 | ``` 39 | 40 | and workspace-1 depend on workspace-2 41 | after running 42 | `npx pnpm-isolate-workspace workspace-1` 43 | or 44 | `npx pnpm-isolate-workspace` from the workspace folder 45 | the tree will look like this: 46 | 47 | ``` 48 | ├── workspace-1 49 | ├── _isolated_ 50 | ├── workspaces 51 | ├── workspace-2 52 | ├── package.json 53 | ├── src-code 54 | ├── workspaces-src-less 55 | ├── workspace-2 56 | ├── package.json 57 | ├── workspaces-src-less-prod 58 | ├── workspace-2 59 | ├── package.json 60 | ├── package.json 61 | ├── package-prod.json 62 | ├── pnpm-lock.yaml 63 | ├── pnpm-workspace.yaml 64 | ├── package.json 65 | ├── src-code 66 | ├── workspace-2 67 | ├── package.json 68 | ├── src-code 69 | ├── package.json 70 | ├── pnpm-lock.yaml 71 | ├── pnpm-workspace.yaml 72 | ``` 73 | 74 | ### what did you get? 75 | 76 | the tool created a folder (with default name _isolated_) 77 | this folder contains: 78 | 79 | 1. `workspaces` folder - include all the related workspaces and their source code (in the example workspace 2) 80 | 2. `workspaces-src-less` folder - contain all related workspaces by only package.json files. 81 | *** a folder contains all the workspaces package.json (same tree as the workspaces folder). 82 | Usually, when building an image with docker, you want to take advantage of the Docker cache layering. 83 | And to do so, you want to copy all package.json before copying all source code. To create a layer 84 | for all the node_modules. This folder contains only those pacakge.json, 85 | so instead of COPY all package.json one by one, you can COPY this all folder. 86 | 3. `workspaces-src-less-prod` folder - contain all related workspaces that are not in devDependencies and 87 | *** same as the previous folder but each package.json filters out the devDependencis. 88 | same as before if you run pnpm install with the --prod flag 89 | 4. `package.json` file - duplication of the main package.json just with an extra key: `workspaces.` 90 | and all related workspaces are listed there so it could resolve them. 91 | 5. `package-prod.json` file - duplication of the main package.json just with an extra key: `workspaces.` 92 | and without the devDependencies. 93 | 6. `.pnpmrc` - copy if the root scope .pnpmrc if exist if not generate the file with workspaces enable flag 94 | 7. `pnpm.lock` - if there is a 'pnpm.lock' file in the root of the project, 95 | it will copy all relevant dependencies from it 96 | 97 | ## Supported cli flags 98 | 99 | we can configure the behavior of the isolated script with some params 100 | you want to make sure you treat the depended workspaces as 'installed modules' so filter out from them 101 | their dev-dependencies and test files. 102 | 103 | ``` 104 | #### pnpm-isolate [options] [workspace name to isolate] 105 | * [--pnpmrc-disable] disable copy .npmrc file 106 | * [--pnpm-lock-file] disable generate pnpm-lock.yaml file 107 | 108 | [--src-less-disable] disable create of the src-less folders 109 | [--src-less-glob={value}] glob pattern to include files with the src-less folder 110 | [--src-less-sub-dev-deps] include sub workspaces dev dependencies 111 | 112 | [--src-less-prod-disable] disable create the prod src-less folder 113 | [--src-less-prod-glob={value}] glob pattern to include files with the src-less-prod folder 114 | 115 | [--json-file-disable] disable create json file 116 | [--json-file-prod-disable] disable create json prod json file 117 | [--output-folder] folder to create all generated files (default to _isolated_) 118 | [--include-root-deps] include root workspaces package.json dependencies and dev dependencies 119 | [--disable-root-config] disable root package.json pnpm config (like overrides) 120 | 121 | [--src-files-enable] copy all src file of main workspace to the isolated folder 122 | [--src-files-exclude-glob={value}] glob pattern to exclude files from the main workspace copied files 123 | [--src-files-include-glob={value}] glob pattern to include files from the main workspace copied files 124 | [--workspaces-exclude-glob={value}] glob pattern to exclude files when copy workspaces 125 | 126 | [--max-depth] by default we search recursively project-root 5 folder 127 | [--project-folder={value}] absolute path to project-root (default will look for the root) 128 | ``` 129 | 130 | * `--src-less-glob/--src-less-prod-glob` - if you have bin files or any other files, you need to run pnpm install in the workspace. For example, one of our workspaces have a bin script that warps lint command. 131 | * `--src-files-enable` - in case you want to create docker context of the isolated folder. 132 | * `--workspaces-exclude-glob` - filter files from workspaces you don't need test folders, etc. 133 | -------------------------------------------------------------------------------- /__tests__/full-cycle.test.js: -------------------------------------------------------------------------------- 1 | import { execSync } from 'child_process'; 2 | import fse from 'fs-extra'; 3 | import path from 'path'; 4 | import { fileURLToPath } from 'url'; 5 | import lockfile from '@pnpm/lockfile.fs'; 6 | import YAML from 'yaml'; 7 | import { afterEach, describe, expect, test } from 'vitest'; 8 | 9 | const __filename = fileURLToPath(import.meta.url); 10 | const __dirname = path.dirname(__filename); 11 | 12 | const rootFolder = path.join(__dirname, 'monoRepo'); 13 | const workspaceFolder = path.join(__dirname, 'monoRepo/packages/root-workspace'); 14 | const workspaceFolder1 = path.join(__dirname, 'monoRepo/packages/workspace-1'); 15 | 16 | const runWithParam = (params = '', workspace = 'root-workspace') => { 17 | execSync( 18 | `node ${path.join(__dirname, '../src/index.js')} --project-folder=${path.join(__dirname, 'monoRepo')} ${workspace} ${params}`, 19 | { stdio: 'inherit' }, 20 | ); 21 | }; 22 | 23 | const clean = () => { 24 | execSync( 25 | ` rm -rf ${workspaceFolder}/_isolated_ ${workspaceFolder}/_isolated-other_ ${workspaceFolder1}/_isolated_ ${workspaceFolder1}/_isolated-other_`, 26 | ); 27 | }; 28 | 29 | describe('full cycle of isolated', () => { 30 | afterEach(clean); 31 | 32 | test('should create all files', async () => { 33 | runWithParam(); 34 | 35 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 36 | expect(folder).toEqual([ 37 | 'package-prod.json', 38 | 'package.json', 39 | 'pnpm-lock.yaml', 40 | 'pnpm-workspace.yaml', 41 | 'workspaces', 42 | 'workspaces-src-less', 43 | 'workspaces-src-less-prod', 44 | ]); 45 | 46 | const workspaceYaml = [ 47 | 'workspaces/packages/workspace-1', 48 | 'workspaces/packages/workspace-2', 49 | 'workspaces/packages/workspace3', 50 | 'workspaces/packages/workspace-4', 51 | 'workspaces/packages/workspace11', 52 | 'workspaces/packages/workspace12', 53 | 'workspaces/packages/workspace13', 54 | 'workspaces/packages/workspace16', 55 | ]; 56 | 57 | const currentYaml = YAML.parse(fse.readFileSync(`${workspaceFolder}/_isolated_/pnpm-workspace.yaml`).toString()); 58 | 59 | expect(currentYaml.packages).toEqual(workspaceYaml); 60 | 61 | const listOfAllWorkspaces = [ 62 | 'workspace-1', 63 | 'workspace-2', 64 | 'workspace-4', 65 | 'workspace11', 66 | 'workspace12', 67 | 'workspace13', 68 | 'workspace16', 69 | 'workspace3', 70 | ]; 71 | 72 | expect(fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces/packages`)).toEqual(listOfAllWorkspaces); 73 | 74 | expect(fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages`)).toEqual(listOfAllWorkspaces); 75 | 76 | expect(fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces-src-less-prod/packages`)).toEqual([ 77 | 'workspace-1', 78 | 'workspace-2', 79 | 'workspace-4', 80 | 'workspace3', 81 | ]); 82 | 83 | expect(fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces/packages/workspace-1`)).toEqual([ 84 | 'nestedFolder', 85 | 'package.json', 86 | 'src.js', 87 | ]); 88 | 89 | expect(fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages/workspace-1`)).toEqual(['package.json']); 90 | 91 | expect(fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces-src-less-prod/packages/workspace-1`)).toEqual([ 92 | 'package.json', 93 | ]); 94 | 95 | const rootPackageJSON = JSON.parse(fse.readFileSync(`${rootFolder}/package.json`).toString()); 96 | const mainPackageJSON = JSON.parse(fse.readFileSync(`${workspaceFolder}/package.json`).toString()); 97 | const generatedPackageJSON = JSON.parse(fse.readFileSync(`${workspaceFolder}/_isolated_/package.json`).toString()); 98 | 99 | expect(mainPackageJSON.dependencies).toEqual(generatedPackageJSON.dependencies); 100 | expect(mainPackageJSON.devDependencies).toEqual(generatedPackageJSON.devDependencies); 101 | expect(rootPackageJSON.pnpm).toEqual(generatedPackageJSON.pnpm); 102 | 103 | const generatedProdPackageJSON = JSON.parse(fse.readFileSync(`${workspaceFolder}/_isolated_/package-prod.json`).toString()); 104 | 105 | expect(mainPackageJSON.dependencies).toEqual(generatedPackageJSON.dependencies); 106 | expect(generatedProdPackageJSON.devDependencies).toEqual({}); 107 | expect(rootPackageJSON.pnpm).toEqual(generatedProdPackageJSON.pnpm); 108 | 109 | let lfData = await lockfile.readWantedLockfile(`${workspaceFolder}/_isolated_`, 'utf8'); 110 | 111 | expect(lfData.importers['.'].specifiers).toEqual({ 112 | 'in-root-dep-1': '1.0.0', 113 | 'in-root-dep-2': '2.0.0', 114 | 'in-root-dev-dep-1': '1.0.0', 115 | 'in-root-dev-dep-2': '2.0.0', 116 | 'workspace-1': 'workspace:1.0.0', 117 | 'workspace-11': 'workspace:1.0.0', 118 | 'workspace-12': 'workspace:1.0.0', 119 | 'workspace-2': 'workspace:1.0.0', 120 | }); 121 | 122 | expect(lfData.importers['.'].dependencies).toEqual({ 123 | 'in-root-dep-1': '1.0.0', 124 | 'in-root-dep-2': '2.0.0', 125 | 'workspace-1': 'link:workspaces/packages/workspace-1', 126 | 'workspace-2': 'link:workspaces/packages/workspace-2', 127 | }); 128 | 129 | expect(lfData.importers['.'].devDependencies).toEqual({ 130 | 'in-root-dev-dep-1': '1.0.0', 131 | 'in-root-dev-dep-2': '2.0.0', 132 | 'workspace-11': 'link:workspaces/packages/workspace11', 133 | 'workspace-12': 'link:workspaces/packages/workspace12', 134 | }); 135 | }); 136 | 137 | test('should keep only relevant packages in the isolated lockfile', async () => { 138 | runWithParam(); 139 | const originalLockFile = await lockfile.readWantedLockfile(`${rootFolder}`, 'utf8'); 140 | 141 | const isolatedLockFile = await lockfile.readWantedLockfile(`${workspaceFolder}/_isolated_`, 'utf8'); 142 | 143 | expect(isolatedLockFile.packages).not.toEqual(originalLockFile.packages); 144 | expect(Object.keys(originalLockFile.packages)).toEqual(['fs-e@10.0.0', 'is-zero@1.0.0']); 145 | expect(Object.keys(isolatedLockFile.packages)).toEqual(['is-zero@1.0.0']); 146 | }); 147 | 148 | test('--include-root-deps: generated in a different output folder', async () => { 149 | runWithParam('--include-root-deps'); 150 | 151 | let lfData = await lockfile.readWantedLockfile(`${workspaceFolder}/_isolated_`, 'utf8'); 152 | expect(lfData.importers['.'].specifiers).toEqual({ 153 | 'dev-dep': '2.2.1', 154 | 'fs-e': '^10.0.0', 155 | 'in-root-dep-1': '1.0.0', 156 | 'in-root-dep-2': '2.0.0', 157 | 'in-root-dev-dep-1': '1.0.0', 158 | 'in-root-dev-dep-2': '2.0.0', 159 | 'workspace-1': 'workspace:1.0.0', 160 | 'workspace-11': 'workspace:1.0.0', 161 | 'workspace-12': 'workspace:1.0.0', 162 | 'workspace-2': 'workspace:1.0.0', 163 | }); 164 | 165 | expect(lfData.importers['.'].dependencies).toEqual({ 166 | 'fs-e': '10.0.0', 167 | 'in-root-dep-1': '1.0.0', 168 | 'in-root-dep-2': '2.0.0', 169 | 'workspace-1': 'link:workspaces/packages/workspace-1', 170 | 'workspace-2': 'link:workspaces/packages/workspace-2', 171 | }); 172 | 173 | expect(lfData.importers['.'].devDependencies).toEqual({ 174 | 'dev-dep': '2.2.1', 175 | 'in-root-dev-dep-1': '1.0.0', 176 | 'in-root-dev-dep-2': '2.0.0', 177 | 'workspace-11': 'link:workspaces/packages/workspace11', 178 | 'workspace-12': 'link:workspaces/packages/workspace12', 179 | }); 180 | }); 181 | 182 | test('--output-folder: generated in a different output folder', async () => { 183 | runWithParam('--output-folder=_isolated-other_'); 184 | 185 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated-other_`); 186 | expect(folder).toEqual([ 187 | 'package-prod.json', 188 | 'package.json', 189 | 'pnpm-lock.yaml', 190 | 'pnpm-workspace.yaml', 191 | 'workspaces', 192 | 'workspaces-src-less', 193 | 'workspaces-src-less-prod', 194 | ]); 195 | 196 | expect(fse.existsSync(`${workspaceFolder}/_isolated_`)).toEqual(false); 197 | }); 198 | 199 | test.skip('--npmrc-disable: generate .npmrc', async () => { 200 | runWithParam('--pnpmrc-disable'); 201 | 202 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 203 | expect(folder).toEqual([ 204 | '.yarnrc', 205 | 'package-prod.json', 206 | 'package.json', 207 | 'workspaces', 208 | 'workspaces-src-less', 209 | 'workspaces-src-less-prod', 210 | 'yarn.lock', 211 | ]); 212 | 213 | expect(fse.readFileSync(`${workspaceFolder}/_isolated_/.yarnrc`, { encoding: 'utf-8' })).toEqual( 214 | 'workspaces-experimental true', 215 | ); 216 | }); 217 | 218 | test('--pnpm-lock-file: disable yarn lock creation', async () => { 219 | runWithParam('--pnpm-lock-file'); 220 | 221 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 222 | expect(folder).toEqual([ 223 | 'package-prod.json', 224 | 'package.json', 225 | 'pnpm-workspace.yaml', 226 | 'workspaces', 227 | 'workspaces-src-less', 228 | 'workspaces-src-less-prod', 229 | ]); 230 | }); 231 | 232 | test('--src-less-disable: disable src less folder creation', async () => { 233 | runWithParam('--src-less-disable'); 234 | 235 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 236 | expect(folder).toEqual([ 237 | 'package-prod.json', 238 | 'package.json', 239 | 'pnpm-lock.yaml', 240 | 'pnpm-workspace.yaml', 241 | 'workspaces', 242 | 'workspaces-src-less-prod', 243 | ]); 244 | }); 245 | 246 | test('--src-less-prod-disable]: disable src less prod folder creation', async () => { 247 | runWithParam('--src-less-prod-disable]'); 248 | 249 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 250 | expect(folder).toEqual([ 251 | 'package-prod.json', 252 | 'package.json', 253 | 'pnpm-lock.yaml', 254 | 'pnpm-workspace.yaml', 255 | 'workspaces', 256 | 'workspaces-src-less', 257 | ]); 258 | }); 259 | 260 | test('--json-file-disable: disable json file creation', async () => { 261 | runWithParam('--json-file-disable'); 262 | 263 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 264 | expect(folder).toEqual([ 265 | 'package-prod.json', 266 | 'pnpm-lock.yaml', 267 | 'pnpm-workspace.yaml', 268 | 'workspaces', 269 | 'workspaces-src-less', 270 | 'workspaces-src-less-prod', 271 | ]); 272 | }); 273 | 274 | test('--json-file-prod-disable: disable json prod file creation', async () => { 275 | runWithParam('--json-file-prod-disable'); 276 | 277 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_`); 278 | expect(folder).toEqual([ 279 | 'package.json', 280 | 'pnpm-lock.yaml', 281 | 'pnpm-workspace.yaml', 282 | 'workspaces', 283 | 'workspaces-src-less', 284 | 'workspaces-src-less-prod', 285 | ]); 286 | }); 287 | 288 | test('should not copy nested output folders (default _isolated_)', async () => { 289 | runWithParam('--output-folder=_isolated-other_', 'workspace-1'); 290 | runWithParam('--output-folder=_isolated-other_'); 291 | 292 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated-other_/workspaces/packages/workspace-1`); 293 | 294 | expect(folder).toEqual(['nestedFolder', 'package.json', 'src.js']); 295 | }); 296 | 297 | test('should filter by regex when copy files (default _isolated_ & node_modules)', async () => { 298 | runWithParam('--output-folder=_isolated-other_', 'workspace-1'); 299 | runWithParam(`--output-folder=_isolated-other_ --workspaces-exclude-glob='src.js'`); 300 | 301 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated-other_/workspaces/packages/workspace-1`); 302 | 303 | expect(folder).toEqual(['nestedFolder', 'package.json']); 304 | }); 305 | 306 | test('--src-less-glob: should include in src-less param', async () => { 307 | runWithParam(`--src-less-glob='src.js'`); 308 | 309 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages/workspace-1`); 310 | 311 | expect(folder).toEqual(['package.json', 'src.js']); 312 | }); 313 | 314 | test('--src-less-prod-glob: should include in src-less param nested', async () => { 315 | runWithParam(`--src-less-prod-glob='nestedFolder/nestedFile.js'`); 316 | 317 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/workspaces-src-less-prod/packages/workspace-1`); 318 | 319 | expect(folder).toEqual(['nestedFolder', 'package.json']); 320 | }); 321 | 322 | test('--src-files-enable: should include main workspace src files', async () => { 323 | runWithParam('--src-files-enable --src-less-disable'); 324 | 325 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/`); 326 | 327 | expect(folder).toEqual([ 328 | 'no.js', 329 | 'package-prod.json', 330 | 'package.json', 331 | 'pnpm-lock.yaml', 332 | 'pnpm-workspace.yaml', 333 | 'src.js', 334 | 'workspaces', 335 | 'workspaces-src-less-prod', 336 | ]); 337 | }); 338 | 339 | test('--src-files-exclude-glob: should exclude main workspace received values', async () => { 340 | runWithParam("--src-files-exclude-glob='no.js' --src-less-disable"); 341 | 342 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/`); 343 | 344 | expect(folder).toEqual([ 345 | 'package-prod.json', 346 | 'package.json', 347 | 'pnpm-lock.yaml', 348 | 'pnpm-workspace.yaml', 349 | 'src.js', 350 | 'workspaces', 351 | 'workspaces-src-less-prod', 352 | ]); 353 | }); 354 | 355 | test('--src-files-include-glob: should exclude main workspace received values', async () => { 356 | runWithParam("--src-files-include-glob='src.js' --src-less-disable"); 357 | 358 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/`); 359 | 360 | expect(folder).toEqual([ 361 | 'package-prod.json', 362 | 'package.json', 363 | 'pnpm-lock.yaml', 364 | 'pnpm-workspace.yaml', 365 | 'src.js', 366 | 'workspaces', 367 | 'workspaces-src-less-prod', 368 | ]); 369 | }); 370 | 371 | test('--src-less-sub-dev-deps: should include sub workspaces dev deps', async () => { 372 | runWithParam('--src-less-sub-dev-deps'); 373 | 374 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/`); 375 | 376 | expect(folder).toEqual([ 377 | 'package-prod.json', 378 | 'package.json', 379 | 'pnpm-lock.yaml', 380 | 'pnpm-workspace.yaml', 381 | 'workspaces', 382 | 'workspaces-src-less', 383 | 'workspaces-src-less-prod', 384 | ]); 385 | 386 | const subWorkspacePackageJson = JSON.parse( 387 | fse.readFileSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages/workspace-1/package.json`).toString(), 388 | ); 389 | 390 | // With '--src-less-sub-dev-deps', we include the 'devDependencies' 391 | expect(subWorkspacePackageJson.devDependencies).toEqual({ 392 | 'in-w1-dev-dep-1': '1.0.0', 393 | 'in-w1-dev-dep-2': '2.0.0', 394 | 'workspace-11': 'workspace:1.0.0', 395 | 'workspace-13': 'workspace:1.0.0', 396 | 'workspace-15': 'workspace:1.0.0', 397 | }); 398 | 399 | const subWorkspacePackageJson2 = JSON.parse( 400 | fse.readFileSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages/workspace13/package.json`).toString(), 401 | ); 402 | 403 | // Also include the 'devDependencies' of those 'devDependencies' 404 | expect(subWorkspacePackageJson2.devDependencies).toEqual({ 405 | 'in-w13-dev-dep-1': '1.0.0', 406 | 'in-w13-dev-dep-2': '2.0.0', 407 | 'workspace-17': 'workspace:1.0.0', 408 | }); 409 | 410 | // Make sure we've copied over those workspaces 411 | // workspace-1 -> workspace-15 -> workspace-17 412 | expect(fse.existsSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages/workspace17/package.json`)).toEqual(true); 413 | 414 | const subWorkspacePackageJson3 = JSON.parse( 415 | fse.readFileSync(`${workspaceFolder}/_isolated_/workspaces-src-less/packages/workspace17/package.json`).toString(), 416 | ); 417 | 418 | expect(subWorkspacePackageJson3.name).toEqual('workspace-17'); 419 | }); 420 | 421 | test('--include-root-deps: should include root package json dev and prod deps', async () => { 422 | runWithParam('--include-root-deps'); 423 | 424 | const folder = fse.readdirSync(`${workspaceFolder}/_isolated_/`); 425 | 426 | expect(folder).toEqual([ 427 | 'package-prod.json', 428 | 'package.json', 429 | 'pnpm-lock.yaml', 430 | 'pnpm-workspace.yaml', 431 | 'workspaces', 432 | 'workspaces-src-less', 433 | 'workspaces-src-less-prod', 434 | ]); 435 | 436 | const mainPackageJson = JSON.parse(fse.readFileSync(`${workspaceFolder}/_isolated_/package.json`).toString()); 437 | 438 | expect(mainPackageJson.dependencies).toEqual({ 439 | 'in-root-dep-1': '1.0.0', 440 | 'in-root-dep-2': '2.0.0', 441 | 'root-dep': '1', 442 | 'workspace-1': 'workspace:1.0.0', 443 | 'workspace-2': 'workspace:1.0.0', 444 | }); 445 | 446 | expect(mainPackageJson.devDependencies).toEqual({ 447 | 'in-root-dev-dep-1': '1.0.0', 448 | 'in-root-dev-dep-2': '2.0.0', 449 | 'root-dev-dep': '1', 450 | 'workspace-11': 'workspace:1.0.0', 451 | 'workspace-12': 'workspace:1.0.0', 452 | }); 453 | 454 | const packageJsonProd = JSON.parse(fse.readFileSync(`${workspaceFolder}/_isolated_/package-prod.json`).toString()); 455 | 456 | expect(packageJsonProd.dependencies).toEqual({ 457 | 'in-root-dep-1': '1.0.0', 458 | 'in-root-dep-2': '2.0.0', 459 | 'root-dep': '1', 460 | 'workspace-1': 'workspace:1.0.0', 461 | 'workspace-2': 'workspace:1.0.0', 462 | }); 463 | 464 | expect(packageJsonProd.devDependencies).toEqual({}); 465 | }); 466 | 467 | test('--disable-root-config: should not copy root pnpm config', async () => { 468 | runWithParam('--disable-root-config'); 469 | 470 | const generatedPackageJSON = JSON.parse(fse.readFileSync(`${workspaceFolder}/_isolated_/package.json`).toString()); 471 | 472 | expect(generatedPackageJSON.pnpm).toEqual(undefined); 473 | }); 474 | }); 475 | -------------------------------------------------------------------------------- /__tests__/monoRepo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mono-repo", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "root-dep": "1" 7 | }, 8 | "devDependencies": { 9 | "root-dev-dep": "1" 10 | }, 11 | "pnpm": { 12 | "overrides": { 13 | "override-workspace": "82" 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/root-workspace/no.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/root-workspace/no.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/root-workspace/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "root-workspace", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "workspace-1": "workspace:1.0.0", 7 | "workspace-2": "workspace:1.0.0", 8 | "in-root-dep-1": "1.0.0", 9 | "in-root-dep-2": "2.0.0" 10 | }, 11 | "devDependencies": { 12 | "workspace-11": "workspace:1.0.0", 13 | "workspace-12": "workspace:1.0.0", 14 | "in-root-dev-dep-1": "1.0.0", 15 | "in-root-dev-dep-2": "2.0.0" 16 | } 17 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/root-workspace/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/root-workspace/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-1/nestedFolder/nestedFile.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace-1/nestedFolder/nestedFile.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-1", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "workspace-2": "workspace:1.0.0", 7 | "workspace-3": "workspace:1.0.0", 8 | "in-w1-dep-1": "1.0.0", 9 | "in-w1-dep-2": "2.0.0", 10 | "is-zero": "1.0.0" 11 | }, 12 | "devDependencies": { 13 | "workspace-11": "workspace:1.0.0", 14 | "workspace-13": "workspace:1.0.0", 15 | "workspace-15": "workspace:1.0.0", 16 | "in-w1-dev-dep-1": "1.0.0", 17 | "in-w1-dev-dep-2": "2.0.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-1/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace-1/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-2", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "in-w2-dep-1": "1.0.0", 7 | "in-w2-dep-2": "2.0.0" 8 | }, 9 | "devDependencies": { 10 | "in-w2-dev-dep-1": "1.0.0", 11 | "in-w2-dev-dep-2": "2.0.0" 12 | } 13 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-2/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace-2/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-4/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace4", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "in-w4-dep-1": "1.0.0", 7 | "in-w4-dep-2": "2.0.0" 8 | }, 9 | "devDependencies": { 10 | "in-w4-dev-dep-1": "1.0.0", 11 | "in-w4-dev-dep-2": "2.0.0" 12 | } 13 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace-4/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace-4/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace11/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-11", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "workspace-12": "workspace:1.0.0", 7 | "workspace-13": "workspace:1.0.0", 8 | "in-w11-dep-1": "1.0.0", 9 | "in-w11-dep-2": "2.0.0" 10 | }, 11 | "devDependencies": { 12 | "workspace-14": "workspace:1.0.0", 13 | "in-w11-dev-dep-1": "1.0.0", 14 | "in-w11-dev-dep-2": "2.0.0" 15 | } 16 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace11/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace11/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace12/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-12", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "in-w12-dep-1": "1.0.0", 7 | "in-w12-dep-2": "2.0.0" 8 | }, 9 | "devDependencies": { 10 | "in-w12-dev-dep-1": "1.0.0", 11 | "in-w12-dev-dep-2": "2.0.0" 12 | } 13 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace12/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace12/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace13/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-13", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "workspace16": "workspace:1.0.0" 7 | }, 8 | "devDependencies": { 9 | "workspace-17": "workspace:1.0.0", 10 | "in-w13-dev-dep-1": "1.0.0", 11 | "in-w13-dev-dep-2": "2.0.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace13/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace13/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace14/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-14", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace14/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace14/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace15/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-15", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace15/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace15/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace16/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace16", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace16/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace16/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace17/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-17", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace17/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace17/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "workspace-3", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "workspace4": "workspace:1.0.0" 7 | }, 8 | "devDependencies": {} 9 | } -------------------------------------------------------------------------------- /__tests__/monoRepo/packages/workspace3/src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Madvinking/pnpm-isolate-workspace/bce310edd333e77149265718b8b80909d2891321/__tests__/monoRepo/packages/workspace3/src.js -------------------------------------------------------------------------------- /__tests__/monoRepo/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | overrides: 8 | override-workspace: '82' 9 | 10 | importers: 11 | 12 | .: 13 | dependencies: 14 | fs-e: 15 | specifier: ^10.0.0 16 | version: 10.0.0 17 | devDependencies: 18 | dev-dep: 19 | specifier: 2.2.1 20 | version: 2.2.1 21 | 22 | packages/root-workspace: 23 | dependencies: 24 | in-root-dep-1: 25 | specifier: 1.0.0 26 | version: 1.0.0 27 | in-root-dep-2: 28 | specifier: 2.0.0 29 | version: 2.0.0 30 | workspace-1: 31 | specifier: workspace:1.0.0 32 | version: link:../workspace-1 33 | workspace-2: 34 | specifier: workspace:1.0.0 35 | version: link:../workspace-2 36 | devDependencies: 37 | in-root-dev-dep-1: 38 | specifier: 1.0.0 39 | version: 1.0.0 40 | in-root-dev-dep-2: 41 | specifier: 2.0.0 42 | version: 2.0.0 43 | workspace-11: 44 | specifier: workspace:1.0.0 45 | version: link:../workspace11 46 | workspace-12: 47 | specifier: workspace:1.0.0 48 | version: link:../workspace12 49 | 50 | packages/workspace-1: 51 | dependencies: 52 | in-w1-dep-1: 53 | specifier: 1.0.0 54 | version: 1.0.0 55 | in-w1-dep-2: 56 | specifier: 2.0.0 57 | version: 2.0.0 58 | is-zero: 59 | specifier: 1.0.0 60 | version: 1.0.0 61 | workspace-2: 62 | specifier: workspace:1.0.0 63 | version: link:../workspace-2 64 | workspace-3: 65 | specifier: workspace:1.0.0 66 | version: link:../workspace3 67 | devDependencies: 68 | in-w1-dev-dep-1: 69 | specifier: 1.0.0 70 | version: 1.0.0 71 | in-w1-dev-dep-2: 72 | specifier: 2.0.0 73 | version: 2.0.0 74 | workspace-11: 75 | specifier: workspace:1.0.0 76 | version: link:../workspace11 77 | workspace-13: 78 | specifier: workspace:1.0.0 79 | version: link:../workspace13 80 | workspace-15: 81 | specifier: workspace:1.0.0 82 | version: link:../workspace15 83 | 84 | packages/workspace-2: 85 | dependencies: 86 | in-w2-dep-1: 87 | specifier: 1.0.0 88 | version: 1.0.0 89 | in-w2-dep-2: 90 | specifier: 2.0.0 91 | version: 2.0.0 92 | devDependencies: 93 | in-w2-dev-dep-1: 94 | specifier: 1.0.0 95 | version: 1.0.0 96 | in-w2-dev-dep-2: 97 | specifier: 2.0.0 98 | version: 2.0.0 99 | 100 | packages/workspace-4: 101 | dependencies: 102 | in-w4-dep-1: 103 | specifier: 1.0.0 104 | version: 1.0.0 105 | in-w4-dep-2: 106 | specifier: 2.0.0 107 | version: 2.0.0 108 | devDependencies: 109 | in-w4-dev-dep-1: 110 | specifier: 1.0.0 111 | version: 1.0.0 112 | in-w4-dev-dep-2: 113 | specifier: 2.0.0 114 | version: 2.0.0 115 | 116 | packages/workspace11: 117 | dependencies: 118 | in-w11-dep-1: 119 | specifier: 1.0.0 120 | version: 1.0.0 121 | in-w11-dep-2: 122 | specifier: 2.0.0 123 | version: 2.0.0 124 | workspace-12: 125 | specifier: workspace:1.0.0 126 | version: link:../workspace12 127 | workspace-13: 128 | specifier: workspace:1.0.0 129 | version: link:../workspace13 130 | devDependencies: 131 | in-w11-dev-dep-1: 132 | specifier: 1.0.0 133 | version: 1.0.0 134 | in-w11-dev-dep-2: 135 | specifier: 2.0.0 136 | version: 2.0.0 137 | workspace-14: 138 | specifier: workspace:1.0.0 139 | version: link:../workspace14 140 | 141 | packages/workspace12: 142 | dependencies: 143 | in-w12-dep-1: 144 | specifier: 1.0.0 145 | version: 1.0.0 146 | in-w12-dep-2: 147 | specifier: 2.0.0 148 | version: 2.0.0 149 | devDependencies: 150 | in-w12-dev-dep-1: 151 | specifier: 1.0.0 152 | version: 1.0.0 153 | in-w12-dev-dep-2: 154 | specifier: 2.0.0 155 | version: 2.0.0 156 | 157 | packages/workspace13: 158 | dependencies: 159 | workspace16: 160 | specifier: workspace:1.0.0 161 | version: link:../workspace16 162 | devDependencies: 163 | in-w13-dev-dep-1: 164 | specifier: 1.0.0 165 | version: 1.0.0 166 | in-w13-dev-dep-2: 167 | specifier: 2.0.0 168 | version: 2.0.0 169 | workspace-17: 170 | specifier: workspace:1.0.0 171 | version: link:../workspace17 172 | 173 | packages/workspace14: {} 174 | 175 | packages/workspace15: {} 176 | 177 | packages/workspace16: {} 178 | 179 | packages/workspace17: {} 180 | 181 | packages/workspace3: 182 | dependencies: 183 | workspace4: 184 | specifier: workspace:1.0.0 185 | version: link:../workspace-4 186 | 187 | packages: 188 | 189 | fs-e@10.0.0: 190 | resolution: { integrity: sha51223123123+z7dnmgvP9QtIleuETGOiOH1RcIw== } 191 | 192 | is-zero@1.0.0: 193 | resolution: {integrity: sha512-1COuYJZC9wyFF8dL06ni3q5eyTzC4Hr+XJfOLNjIiqufpvto5aVNBhqWO1wjwR+fhoBcTbnSDUiBtvEdxHjLiw==} 194 | 195 | snapshots: 196 | 197 | fs-e@10.0.0: 198 | dependencies: 199 | "@babel/highlight": 7.13.10 200 | 201 | is-zero@1.0.0: {} -------------------------------------------------------------------------------- /__tests__/monoRepo/pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "packages/*" 3 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | testEnvironment: 'node', 3 | }; 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pnpm-isolate-workspace", 3 | "version": "0.0.14", 4 | "description": "will isolate one pnpm workspace", 5 | "type": "module", 6 | "main": "src/index.js", 7 | "bin": { 8 | "pnpm-isolate-workspace": "src/index.js" 9 | }, 10 | "files": [ 11 | "src" 12 | ], 13 | "license": "MIT", 14 | "keywords": [ 15 | "pnpm", 16 | "workspace", 17 | "pnpm isolate", 18 | "pnpm focus", 19 | "pnpm workspace", 20 | "pnpm workspaces", 21 | "pnpm workspaces isolate", 22 | "pnpm workspace isolate", 23 | "lerna isolate" 24 | ], 25 | "author": "Nir winkler ", 26 | "repository": { 27 | "type": "git", 28 | "url": "https://github.com/Madvinking/pnpm-isolate-workspace.git" 29 | }, 30 | "publishConfig": { 31 | "access": "public" 32 | }, 33 | "scripts": { 34 | "clean": "rm -rf node_modules", 35 | "test": "vitest run", 36 | "test:watch": "vitest watch", 37 | "lint": "eslint --quiet --color ." 38 | }, 39 | "dependencies": { 40 | "@pnpm/lockfile.fs": "1001.1.8", 41 | "@pnpm/lockfile.pruner": "1001.0.6", 42 | "@pnpm/logger": "1000.0.0", 43 | "@pnpm/workspace.find-packages": "1000.0.19", 44 | "fs-extra": "11.3.0", 45 | "fs-readdir-recursive": "1.1.0", 46 | "glob": "10.3.10", 47 | "yaml": "2.7.1" 48 | }, 49 | "devDependencies": { 50 | "eslint": "9.23.0", 51 | "eslint-config-prettier": "10.1.1", 52 | "husky": "9.1.7", 53 | "nodemon": "3.1.9", 54 | "pnpm": "10.7.1", 55 | "vitest": "3.1.1" 56 | }, 57 | "packageManager": "pnpm@10.7.1" 58 | } -------------------------------------------------------------------------------- /packages/workspace1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@pnpm/workspace1", 3 | "version": "1.0.0", 4 | "description": "will isolate one pnpm workspace", 5 | "main": "src/index.js", 6 | "license": "MIT", 7 | "author": "Nir winkler ", 8 | "dependencies": { 9 | "@logzio-node-toolbox/logger": "0.0.15", 10 | "@pnpm/workspace2": "workspace:1.0.0" 11 | } 12 | } -------------------------------------------------------------------------------- /packages/workspace2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@pnpm/workspace2", 3 | "version": "1.0.0", 4 | "description": "will isolate one pnpm workspace", 5 | "main": "src/index.js", 6 | "license": "MIT", 7 | "author": "Nir winkler ", 8 | "dependencies": { 9 | "@logzio-node-toolbox/consul": "0.0.19" 10 | } 11 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@pnpm/lockfile.fs': 12 | specifier: 1001.1.8 13 | version: 1001.1.8(@pnpm/logger@1000.0.0) 14 | '@pnpm/lockfile.pruner': 15 | specifier: 1001.0.6 16 | version: 1001.0.6 17 | '@pnpm/logger': 18 | specifier: 1000.0.0 19 | version: 1000.0.0 20 | '@pnpm/workspace.find-packages': 21 | specifier: 1000.0.19 22 | version: 1000.0.19(@pnpm/logger@1000.0.0) 23 | fs-extra: 24 | specifier: 11.3.0 25 | version: 11.3.0 26 | fs-readdir-recursive: 27 | specifier: 1.1.0 28 | version: 1.1.0 29 | glob: 30 | specifier: 10.3.10 31 | version: 10.3.10 32 | yaml: 33 | specifier: 2.7.1 34 | version: 2.7.1 35 | devDependencies: 36 | eslint: 37 | specifier: 9.23.0 38 | version: 9.23.0 39 | eslint-config-prettier: 40 | specifier: 10.1.1 41 | version: 10.1.1(eslint@9.23.0) 42 | husky: 43 | specifier: 9.1.7 44 | version: 9.1.7 45 | nodemon: 46 | specifier: 3.1.9 47 | version: 3.1.9 48 | pnpm: 49 | specifier: 10.7.1 50 | version: 10.7.1 51 | vitest: 52 | specifier: 3.1.1 53 | version: 3.1.1(@types/node@22.10.2) 54 | 55 | packages/workspace1: 56 | dependencies: 57 | '@logzio-node-toolbox/logger': 58 | specifier: 0.0.15 59 | version: 0.0.15 60 | '@pnpm/workspace2': 61 | specifier: workspace:1.0.0 62 | version: link:../workspace2 63 | 64 | packages/workspace2: 65 | dependencies: 66 | '@logzio-node-toolbox/consul': 67 | specifier: 0.0.19 68 | version: 0.0.19 69 | 70 | packages: 71 | 72 | '@babel/code-frame@7.26.2': 73 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 74 | engines: {node: '>=6.9.0'} 75 | 76 | '@babel/helper-validator-identifier@7.25.9': 77 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 78 | engines: {node: '>=6.9.0'} 79 | 80 | '@esbuild/aix-ppc64@0.21.5': 81 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 82 | engines: {node: '>=12'} 83 | cpu: [ppc64] 84 | os: [aix] 85 | 86 | '@esbuild/android-arm64@0.21.5': 87 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 88 | engines: {node: '>=12'} 89 | cpu: [arm64] 90 | os: [android] 91 | 92 | '@esbuild/android-arm@0.21.5': 93 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 94 | engines: {node: '>=12'} 95 | cpu: [arm] 96 | os: [android] 97 | 98 | '@esbuild/android-x64@0.21.5': 99 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 100 | engines: {node: '>=12'} 101 | cpu: [x64] 102 | os: [android] 103 | 104 | '@esbuild/darwin-arm64@0.21.5': 105 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 106 | engines: {node: '>=12'} 107 | cpu: [arm64] 108 | os: [darwin] 109 | 110 | '@esbuild/darwin-x64@0.21.5': 111 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 112 | engines: {node: '>=12'} 113 | cpu: [x64] 114 | os: [darwin] 115 | 116 | '@esbuild/freebsd-arm64@0.21.5': 117 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 118 | engines: {node: '>=12'} 119 | cpu: [arm64] 120 | os: [freebsd] 121 | 122 | '@esbuild/freebsd-x64@0.21.5': 123 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 124 | engines: {node: '>=12'} 125 | cpu: [x64] 126 | os: [freebsd] 127 | 128 | '@esbuild/linux-arm64@0.21.5': 129 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 130 | engines: {node: '>=12'} 131 | cpu: [arm64] 132 | os: [linux] 133 | 134 | '@esbuild/linux-arm@0.21.5': 135 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 136 | engines: {node: '>=12'} 137 | cpu: [arm] 138 | os: [linux] 139 | 140 | '@esbuild/linux-ia32@0.21.5': 141 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 142 | engines: {node: '>=12'} 143 | cpu: [ia32] 144 | os: [linux] 145 | 146 | '@esbuild/linux-loong64@0.21.5': 147 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 148 | engines: {node: '>=12'} 149 | cpu: [loong64] 150 | os: [linux] 151 | 152 | '@esbuild/linux-mips64el@0.21.5': 153 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 154 | engines: {node: '>=12'} 155 | cpu: [mips64el] 156 | os: [linux] 157 | 158 | '@esbuild/linux-ppc64@0.21.5': 159 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 160 | engines: {node: '>=12'} 161 | cpu: [ppc64] 162 | os: [linux] 163 | 164 | '@esbuild/linux-riscv64@0.21.5': 165 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 166 | engines: {node: '>=12'} 167 | cpu: [riscv64] 168 | os: [linux] 169 | 170 | '@esbuild/linux-s390x@0.21.5': 171 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 172 | engines: {node: '>=12'} 173 | cpu: [s390x] 174 | os: [linux] 175 | 176 | '@esbuild/linux-x64@0.21.5': 177 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 178 | engines: {node: '>=12'} 179 | cpu: [x64] 180 | os: [linux] 181 | 182 | '@esbuild/netbsd-x64@0.21.5': 183 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 184 | engines: {node: '>=12'} 185 | cpu: [x64] 186 | os: [netbsd] 187 | 188 | '@esbuild/openbsd-x64@0.21.5': 189 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 190 | engines: {node: '>=12'} 191 | cpu: [x64] 192 | os: [openbsd] 193 | 194 | '@esbuild/sunos-x64@0.21.5': 195 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 196 | engines: {node: '>=12'} 197 | cpu: [x64] 198 | os: [sunos] 199 | 200 | '@esbuild/win32-arm64@0.21.5': 201 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 202 | engines: {node: '>=12'} 203 | cpu: [arm64] 204 | os: [win32] 205 | 206 | '@esbuild/win32-ia32@0.21.5': 207 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 208 | engines: {node: '>=12'} 209 | cpu: [ia32] 210 | os: [win32] 211 | 212 | '@esbuild/win32-x64@0.21.5': 213 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 214 | engines: {node: '>=12'} 215 | cpu: [x64] 216 | os: [win32] 217 | 218 | '@eslint-community/eslint-utils@4.4.1': 219 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 220 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 221 | peerDependencies: 222 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 223 | 224 | '@eslint-community/regexpp@4.12.1': 225 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 226 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 227 | 228 | '@eslint/config-array@0.19.2': 229 | resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} 230 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 231 | 232 | '@eslint/config-helpers@0.2.1': 233 | resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} 234 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 235 | 236 | '@eslint/core@0.12.0': 237 | resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 238 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 239 | 240 | '@eslint/core@0.13.0': 241 | resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 242 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 243 | 244 | '@eslint/eslintrc@3.3.1': 245 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 246 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 247 | 248 | '@eslint/js@9.23.0': 249 | resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} 250 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 251 | 252 | '@eslint/object-schema@2.1.6': 253 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 254 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 255 | 256 | '@eslint/plugin-kit@0.2.8': 257 | resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@gwhitney/detect-indent@7.0.1': 261 | resolution: {integrity: sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA==} 262 | engines: {node: '>=12.20'} 263 | 264 | '@humanfs/core@0.19.1': 265 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 266 | engines: {node: '>=18.18.0'} 267 | 268 | '@humanfs/node@0.16.6': 269 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 270 | engines: {node: '>=18.18.0'} 271 | 272 | '@humanwhocodes/module-importer@1.0.1': 273 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 274 | engines: {node: '>=12.22'} 275 | 276 | '@humanwhocodes/retry@0.3.1': 277 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 278 | engines: {node: '>=18.18'} 279 | 280 | '@humanwhocodes/retry@0.4.2': 281 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 282 | engines: {node: '>=18.18'} 283 | 284 | '@isaacs/cliui@8.0.2': 285 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 286 | engines: {node: '>=12'} 287 | 288 | '@jridgewell/sourcemap-codec@1.5.0': 289 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 290 | 291 | '@logzio-node-toolbox/consul@0.0.19': 292 | resolution: {integrity: sha512-Uqa1oV0D+AI5SJ606BfNnFS61yiSwu6Peu14noGnSZZxSsvFWltv1qlZmPSDzwk72bKeipDKJglSTKVvpJbGaA==} 293 | 294 | '@logzio-node-toolbox/logger@0.0.15': 295 | resolution: {integrity: sha512-fCFqeKoFth3g8LST+Yc0kxVt1AlUp1478VTKiCaEnn59cLaFsox334BOwaC9OpdrjQeSk6Jt7iuq2lMnc+7z6A==} 296 | 297 | '@pkgjs/parseargs@0.11.0': 298 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 299 | engines: {node: '>=14'} 300 | 301 | '@pnpm/catalogs.config@1000.0.2': 302 | resolution: {integrity: sha512-2GCYZwxmgw6w0bpB71VbbXapgIcSSFOF9vnS+YLyTdy8JaIYoag2XkhXP1cMu24THPRXeo/zKTyziEsqgr1u8w==} 303 | engines: {node: '>=18.12'} 304 | 305 | '@pnpm/catalogs.protocol-parser@1000.0.0': 306 | resolution: {integrity: sha512-8eC25RAiu8BTaEseQmbo5xemlSwl06pMsUVORiYGX7JZEDb0UQVXOnbqFFJMPe/dyO8uwGXnDb350nauMzaraA==} 307 | engines: {node: '>=18.12'} 308 | 309 | '@pnpm/catalogs.resolver@1000.0.2': 310 | resolution: {integrity: sha512-5xp3InFRgl6YzovSYoKs0NTalcVKRj4KkD/d0zIBsKp2cae0G/t2ZZVq3J5rS1Ytf4qkv4oe5SZWpd1oV7Hkew==} 311 | engines: {node: '>=18.12'} 312 | 313 | '@pnpm/catalogs.types@1000.0.0': 314 | resolution: {integrity: sha512-xRf72lk7xHNvbenA4sp4Of/90QDdRW0CRYT+V+EbqpUXu1xsXtedHai34cTU6VGe7C1hUukxxE9eYTtIpYrx5g==} 315 | engines: {node: '>=18.12'} 316 | 317 | '@pnpm/cli-meta@1000.0.5': 318 | resolution: {integrity: sha512-VqZTZnz+hRevUw/srjbEZZReF9qXk3FjlP7JqUtxEuxVVlGicAkRBwt0kT9PHA1JWM0CIut+8u30oD3gStXlDw==} 319 | engines: {node: '>=18.12'} 320 | 321 | '@pnpm/cli-utils@1000.0.19': 322 | resolution: {integrity: sha512-ZKUa6x7nDzNGmTVsC7he9c0zc9MMEeYWSyD8FRM5v3EAC4rdCr7iHxy/owEsH1JRq9Tq7nw9zQO/3QJh4bqXcA==} 323 | engines: {node: '>=18.12'} 324 | peerDependencies: 325 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 326 | 327 | '@pnpm/config.env-replace@1.1.0': 328 | resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} 329 | engines: {node: '>=12.22.0'} 330 | 331 | '@pnpm/config.env-replace@3.0.1': 332 | resolution: {integrity: sha512-/raU9tmnv1wEw1LdTTCvopwjUMXlLvGP5214sKSpIFC6w41hPS4f1oODDy0nNVteXwa8ewu85xpHQeMFgXdmxQ==} 333 | engines: {node: '>=18.12'} 334 | 335 | '@pnpm/config@1002.7.0': 336 | resolution: {integrity: sha512-8MbALPg+IDJRhLY1LriM9TxSua2sszl+0ZL/sYfjakiGoNzcWPWW6PbDbpNm6Co5nMuaVzDx671YcDu5aSBSaQ==} 337 | engines: {node: '>=18.12'} 338 | peerDependencies: 339 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 340 | 341 | '@pnpm/constants@1001.1.0': 342 | resolution: {integrity: sha512-xb9dfSGi1qfUKY3r4Zy9JdC9+ZeaDxwfE7HrrGIEsBVY1hvIn6ntbR7A97z3nk44yX7vwbINNf9sizTp0WEtEw==} 343 | engines: {node: '>=18.12'} 344 | 345 | '@pnpm/core-loggers@1000.1.5': 346 | resolution: {integrity: sha512-cjlbKSqy98kEbZenUPMM7po4uVL7ZfUMMOMQiHdx1iSnobJjrQfRKMU1H2ezLoBeVI4+U/B0mVjk3aUNTSiQiA==} 347 | engines: {node: '>=18.12'} 348 | peerDependencies: 349 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 350 | 351 | '@pnpm/crypto.hash@1000.1.1': 352 | resolution: {integrity: sha512-lb5kwXaOXdIW/4bkLLmtM9HEVRvp2eIvp+TrdawcPoaptgA/5f0/sRG0P52BF8dFqeNDj+1tGdqH89WQEqJnxA==} 353 | engines: {node: '>=18.12'} 354 | 355 | '@pnpm/crypto.polyfill@1000.1.0': 356 | resolution: {integrity: sha512-tNe7a6U4rCpxLMBaR0SIYTdjxGdL0Vwb3G1zY8++sPtHSvy7qd54u8CIB0Z+Y6t5tc9pNYMYCMwhE/wdSY7ltg==} 357 | engines: {node: '>=18.12'} 358 | 359 | '@pnpm/dedupe.issues-renderer@1000.0.1': 360 | resolution: {integrity: sha512-zrCfk0HUQM8WhxCi3C0waGDKO0/gB4r3LgAUOQB4YTHPNr+m+iubznY0I5G776OqJfsPeLi4bByg4Y1wK29xlg==} 361 | engines: {node: '>=18.12'} 362 | 363 | '@pnpm/dedupe.types@1000.0.0': 364 | resolution: {integrity: sha512-+d8Q576BxRZgt03O+JZXK3C1xVJeAr4Hs35Y8SCl01KpQ0Z7xzfJWahpee7iFc5jELiwjCQg2sISTwtZZQFltA==} 365 | engines: {node: '>=18.12'} 366 | 367 | '@pnpm/default-reporter@1001.3.10': 368 | resolution: {integrity: sha512-DSvcRQ0kLx0ORB509eoCG+v8IgN2H50s1b0pODzYCI5OJV3u5AsYBskOzyUoljcfEMHU6SvAdWH4DLUAUoZoSA==} 369 | engines: {node: '>=18.12'} 370 | peerDependencies: 371 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 372 | 373 | '@pnpm/dependency-path@1000.0.6': 374 | resolution: {integrity: sha512-Icgcohtn31xS1o4I1wCehwjGZUKwVSgeYsbumdiw2qPOg2buaGcKZImMv071KZnj8Ftl5gv3f76GAPwNMAL5VA==} 375 | engines: {node: '>=18.12'} 376 | 377 | '@pnpm/env.system-node-version@1000.0.5': 378 | resolution: {integrity: sha512-DUiaJ0Q0Ea1/BHBxUogvRt7fNMPQpEHgUjpY263ZZ5HNaQdXouWDVPvIcjuHspU6DhteaYMNEzWFcCgp1UYl+Q==} 379 | engines: {node: '>=18.12'} 380 | 381 | '@pnpm/error@1000.0.2': 382 | resolution: {integrity: sha512-2SfE4FFL73rE1WVIoESbqlj4sLy5nWW4M/RVdHvCRJPjlQHa9MH7m7CVJM204lz6I+eHoB+E7rL3zmpJR5wYnQ==} 383 | engines: {node: '>=18.12'} 384 | 385 | '@pnpm/fetcher-base@1000.0.7': 386 | resolution: {integrity: sha512-s9bWNSenfp/BeVJw+9DEqkOFCVjDj3s0Cgh+JJkF6smE2/VUIYALMwS4IZ+vDDPhcQ4+FzpmXce5q85e85ipLQ==} 387 | engines: {node: '>=18.12'} 388 | 389 | '@pnpm/fs.find-packages@1000.0.8': 390 | resolution: {integrity: sha512-WT8KYgr7Lx7ZeLOaBXLjvDg3sUkCYIvIuxWl0cSlXRaRaWK8TzAgVt6YXZ3qc2CoSXWCLiVgHi/NIul1KdwUmw==} 391 | engines: {node: '>=18.12'} 392 | 393 | '@pnpm/git-utils@1000.0.0': 394 | resolution: {integrity: sha512-W6isNTNgB26n6dZUgwCw6wly+uHQ2Zh5QiRKY1HHMbLAlsnZOxsSNGnuS9euKWHxDftvPfU7uR8XB5x95T5zPQ==} 395 | engines: {node: '>=18.12'} 396 | 397 | '@pnpm/graceful-fs@1000.0.0': 398 | resolution: {integrity: sha512-RvMEliAmcfd/4UoaYQ93DLQcFeqit78jhYmeJJVPxqFGmj0jEcb9Tu0eAOXr7tGP3eJHpgvPbTU4o6pZ1bJhxg==} 399 | engines: {node: '>=18.12'} 400 | 401 | '@pnpm/hooks.types@1001.0.5': 402 | resolution: {integrity: sha512-2XBpiE2C8h8nzsk3mgC5PmHiFp1Zhy7OaHrYKsxh5ylST6mYz+ZbpsxDUm5QVLLxdrVdaCNVIqNhg11gtGxwGw==} 403 | engines: {node: '>=18.12'} 404 | 405 | '@pnpm/lockfile.fs@1001.1.8': 406 | resolution: {integrity: sha512-IXemlwcmvRCB9AzQBEarn4NGgwAA7tv1VdBiZPRp3bYXKHYM+As8Kac/37SZILNdQFh10O3nZt+82E9Ev5r+AA==} 407 | engines: {node: '>=18.12'} 408 | peerDependencies: 409 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 410 | 411 | '@pnpm/lockfile.merger@1001.0.5': 412 | resolution: {integrity: sha512-2+Q4VuVPhns5ZGMnftIUHxUqmqkxrr0DXeCLiSQvImd/pfgjM03lafyf3CkaeY504PPLWk9hxGLYmtl6TvT3tA==} 413 | engines: {node: '>=18.12'} 414 | 415 | '@pnpm/lockfile.pruner@1001.0.6': 416 | resolution: {integrity: sha512-aNNdUpVsQcednDBbEZJN86yCSUm2veBHMulcr7s/Svvdni/fAn3NjiPm8kXHvH+reD/xdJ8+mzizb6vxYXLZsg==} 417 | engines: {node: '>=18.12'} 418 | 419 | '@pnpm/lockfile.types@1001.0.5': 420 | resolution: {integrity: sha512-w+NRt543xTDhoxiuw5qBawE5hd5qHbiBWR4aPlwHTEq/gIsRxpJw6H2ZHze3CM6O1Nzwp+2D/opCltY3hsSc8Q==} 421 | engines: {node: '>=18.12'} 422 | 423 | '@pnpm/lockfile.utils@1001.0.7': 424 | resolution: {integrity: sha512-DL9WAUXBbpYC4VSjxOPDLlbbQcRH7dflii5mkog/iqaCmcjDwtb+dQu+JAcNwTOkB2fMqqYHm1HH2ksfq1iFSQ==} 425 | engines: {node: '>=18.12'} 426 | 427 | '@pnpm/logger@1000.0.0': 428 | resolution: {integrity: sha512-v5WO9L4pT7ZjZpf7a/a3H3Xj59JPHNMFJwRS7m/01VMWrKjs89CdVIE5e/N6DwuzP750j0iKozTw6UrCVEfQjA==} 429 | engines: {node: '>=18.12'} 430 | 431 | '@pnpm/manifest-utils@1000.0.7': 432 | resolution: {integrity: sha512-5T/v5kWuhOWhs5bQBlrg+z2alprM/6sX/zd/qaexngKDb1sTpIxP333bXeIDVQhfLUhRe04Do+SVSifCx3Lx/g==} 433 | engines: {node: '>=18.12'} 434 | 435 | '@pnpm/matcher@1000.0.0': 436 | resolution: {integrity: sha512-MKulLUYdMFvZ3UOFsqpqn7nrA3OnHs210jYmI8Wxyczh1nG7icY49sUtlpYsEEbBA1arJpAXDGyU4hx58dk9Lg==} 437 | engines: {node: '>=18.12'} 438 | 439 | '@pnpm/network.ca-file@1.0.2': 440 | resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} 441 | engines: {node: '>=12.22.0'} 442 | 443 | '@pnpm/npm-conf@3.0.0': 444 | resolution: {integrity: sha512-LdFkv/+4ONkQ9ZyE8ihC2L2RcPjvNcOTQq6pvvvZp8KeDYATCJeJX7gpHZF3Bx1XvUSU35dyF9Q9dS+JShtOFA==} 445 | engines: {node: '>=12'} 446 | 447 | '@pnpm/object.key-sorting@1000.0.0': 448 | resolution: {integrity: sha512-lL9MfhQW9P6MmQ4EdSixgQL0Ev70oNYuGNieLcy6JhfuPPrFNAIfdihbYmhJmdMBSbHZPPG3tTeJwMvXx1AZ0Q==} 449 | engines: {node: '>=18.12'} 450 | 451 | '@pnpm/package-is-installable@1000.0.7': 452 | resolution: {integrity: sha512-19Qlzi7Kzah9KdT9U0hhEgZrY6dXIqApImWs1/pxwpvswgkZZZ7vjDeeclmIbrkOYHcg036uhpqxGI0O7dgUIA==} 453 | engines: {node: '>=18.12'} 454 | peerDependencies: 455 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 456 | 457 | '@pnpm/parse-overrides@1000.0.2': 458 | resolution: {integrity: sha512-NII/zHEDIqtSNkDS39TD0r6ukKdZaQPwn6EjDEHYFacgbHN2d3i261paQvm0Pm0oX4svV+5x5YWHUTIbQJItDg==} 459 | engines: {node: '>=18.12'} 460 | 461 | '@pnpm/parse-wanted-dependency@1000.0.0': 462 | resolution: {integrity: sha512-SKK9m7leIQ0u6S+/LXREF0wTrFnyKiirLza6Dt0l7CL9pZdZtuI3mMvz6gNBFnIjTKJPwacdqRywT3bfK8W+FQ==} 463 | engines: {node: '>=18.12'} 464 | 465 | '@pnpm/patching.types@1000.1.0': 466 | resolution: {integrity: sha512-Zib2ysLctRnWM4KXXlljR44qSKwyEqYmLk+8VPBDBEK3l5Gp5mT3N4ix9E4qjYynvFqahumsxzOfxOYQhUGMGw==} 467 | engines: {node: '>=18.12'} 468 | 469 | '@pnpm/pick-fetcher@1000.0.0': 470 | resolution: {integrity: sha512-/Lg6m3wcd6sRB1zHH0EZpGVkmor1+jdXdrvGtatUXxug+Gm2JzeW7Kd8LVcGyKTfFMMlT+xxhjfHKG67QNJxtA==} 471 | engines: {node: '>=18.12'} 472 | 473 | '@pnpm/pnpmfile@1001.0.9': 474 | resolution: {integrity: sha512-NbSwRTUPQtnKHIUzn5tHMu2WxondPg0D/wbjuMth946bXseyDfR+5ZS1UvLKcRXyomEtREiqI9dph9RqdqwA/g==} 475 | engines: {node: '>=18.12'} 476 | peerDependencies: 477 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 478 | 479 | '@pnpm/ramda@0.28.1': 480 | resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} 481 | 482 | '@pnpm/read-project-manifest@1000.0.8': 483 | resolution: {integrity: sha512-HyAqSfkMiA1YXxY8JFUa3D5fQibk9GA1wfoLyxtYqMlG4Z/06cSqve16fvE3OiPPeuykuzqIQa4NoZ8VeVa9XA==} 484 | engines: {node: '>=18.12'} 485 | 486 | '@pnpm/render-peer-issues@1000.0.7': 487 | resolution: {integrity: sha512-PCYA5+qHldsf0/nXNMAQvstmd1ENyzQ1Uyv5lW+JA6Zqxu9hDsUYA6ldiA+KoG5e25/ZllaCNK1un4ggelQT2g==} 488 | engines: {node: '>=18.12'} 489 | 490 | '@pnpm/resolver-base@1000.2.1': 491 | resolution: {integrity: sha512-TQo/jObYtXv9KXkyNDJoEIvxMUUnvamo5OMMcCw1Qkf5lSmL8+ww5Am6HTuYli1JE16PydJkcq4aamcgYA7YIg==} 492 | engines: {node: '>=18.12'} 493 | 494 | '@pnpm/store-controller-types@1001.0.5': 495 | resolution: {integrity: sha512-gu+RTA5ohtXsFaGY13HjsTFywsAcuZW3xN1O0gXTVMROGTbAL83culM35/F2fkhvqj0x/3JL1WeaPdAxDWGtPQ==} 496 | engines: {node: '>=18.12'} 497 | 498 | '@pnpm/text.comments-parser@1000.0.0': 499 | resolution: {integrity: sha512-ivv/esrETOq9uMiKOC0ddVZ1BktEGsfsMQ9RWmrDpwPiqFSqWsIspnquxTBmm5GflC5N06fbqjGOpulZVYo3vQ==} 500 | engines: {node: '>=18.12'} 501 | 502 | '@pnpm/types@1000.3.0': 503 | resolution: {integrity: sha512-hVRVBj1ZJ0j5fdCsQo+g0NaEebY21xJ2ge+96InngJny44CYsZxZPho+cgZprELquxOJFnBGbCVqDiw5dx0RJA==} 504 | engines: {node: '>=18.12'} 505 | 506 | '@pnpm/util.lex-comparator@3.0.0': 507 | resolution: {integrity: sha512-ead+l3IiuVXwKDf/QJPX6G93cwhXki3yOVEA/VdAO7AhZ5vUuSBxHe6gQKEbB0QacJ4H5VsYxeM1xUgwjjOO/Q==} 508 | engines: {node: '>=18.12'} 509 | 510 | '@pnpm/util.lex-comparator@3.0.1': 511 | resolution: {integrity: sha512-jUR0XFKlYcwexqNl+Qbkw8XqQw3+wjwKz72uREqVf4OiV9Hi67IoVu8q1gz0LvHgZmqruisiar+873HcJW9dHw==} 512 | engines: {node: '>=18.12'} 513 | 514 | '@pnpm/which@3.0.1': 515 | resolution: {integrity: sha512-4ivtS12Oni9axgGefaq+gTPD+7N0VPCFdxFH8izCaWfnxLQblX3iVxba+25ZoagStlzUs8sQg8OMKlCVhyGWTw==} 516 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 517 | hasBin: true 518 | 519 | '@pnpm/workspace.find-packages@1000.0.19': 520 | resolution: {integrity: sha512-yEWZdn3dcexyXCQMK+IgpqnfoZKCZsvi6/+9+ERk39wi8oliyYoyr+DnrigOO+VIui6Uj2xFRr/2Boypmn09Ig==} 521 | engines: {node: '>=18.12'} 522 | peerDependencies: 523 | '@pnpm/logger': '>=5.1.0 <1001.0.0' 524 | 525 | '@pnpm/workspace.read-manifest@1000.1.2': 526 | resolution: {integrity: sha512-DGTRpeSSZZkHidEjWxfUBSHmL02cv63aMvKyETSS9qOGOynxgIRjqnGkSzdvz9+k0ySlLsfd+VTg7Yules/34A==} 527 | engines: {node: '>=18.12'} 528 | 529 | '@pnpm/write-project-manifest@1000.0.5': 530 | resolution: {integrity: sha512-EjSxV3Qm3H0gae4elIk8xpfQDxxG2pPXD+X1/4DzXwJH/BHuIEzSkD/1m9lnnv7p/sDeZwJTVoZX80ZGscMkjg==} 531 | engines: {node: '>=18.12'} 532 | 533 | '@rollup/rollup-android-arm-eabi@4.39.0': 534 | resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} 535 | cpu: [arm] 536 | os: [android] 537 | 538 | '@rollup/rollup-android-arm64@4.39.0': 539 | resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} 540 | cpu: [arm64] 541 | os: [android] 542 | 543 | '@rollup/rollup-darwin-arm64@4.39.0': 544 | resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} 545 | cpu: [arm64] 546 | os: [darwin] 547 | 548 | '@rollup/rollup-darwin-x64@4.39.0': 549 | resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} 550 | cpu: [x64] 551 | os: [darwin] 552 | 553 | '@rollup/rollup-freebsd-arm64@4.39.0': 554 | resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} 555 | cpu: [arm64] 556 | os: [freebsd] 557 | 558 | '@rollup/rollup-freebsd-x64@4.39.0': 559 | resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} 560 | cpu: [x64] 561 | os: [freebsd] 562 | 563 | '@rollup/rollup-linux-arm-gnueabihf@4.39.0': 564 | resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} 565 | cpu: [arm] 566 | os: [linux] 567 | 568 | '@rollup/rollup-linux-arm-musleabihf@4.39.0': 569 | resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} 570 | cpu: [arm] 571 | os: [linux] 572 | 573 | '@rollup/rollup-linux-arm64-gnu@4.39.0': 574 | resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} 575 | cpu: [arm64] 576 | os: [linux] 577 | 578 | '@rollup/rollup-linux-arm64-musl@4.39.0': 579 | resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} 580 | cpu: [arm64] 581 | os: [linux] 582 | 583 | '@rollup/rollup-linux-loongarch64-gnu@4.39.0': 584 | resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} 585 | cpu: [loong64] 586 | os: [linux] 587 | 588 | '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': 589 | resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} 590 | cpu: [ppc64] 591 | os: [linux] 592 | 593 | '@rollup/rollup-linux-riscv64-gnu@4.39.0': 594 | resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} 595 | cpu: [riscv64] 596 | os: [linux] 597 | 598 | '@rollup/rollup-linux-riscv64-musl@4.39.0': 599 | resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} 600 | cpu: [riscv64] 601 | os: [linux] 602 | 603 | '@rollup/rollup-linux-s390x-gnu@4.39.0': 604 | resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} 605 | cpu: [s390x] 606 | os: [linux] 607 | 608 | '@rollup/rollup-linux-x64-gnu@4.39.0': 609 | resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} 610 | cpu: [x64] 611 | os: [linux] 612 | 613 | '@rollup/rollup-linux-x64-musl@4.39.0': 614 | resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} 615 | cpu: [x64] 616 | os: [linux] 617 | 618 | '@rollup/rollup-win32-arm64-msvc@4.39.0': 619 | resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} 620 | cpu: [arm64] 621 | os: [win32] 622 | 623 | '@rollup/rollup-win32-ia32-msvc@4.39.0': 624 | resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} 625 | cpu: [ia32] 626 | os: [win32] 627 | 628 | '@rollup/rollup-win32-x64-msvc@4.39.0': 629 | resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} 630 | cpu: [x64] 631 | os: [win32] 632 | 633 | '@types/estree@1.0.7': 634 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 635 | 636 | '@types/json-schema@7.0.15': 637 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 638 | 639 | '@types/node@22.10.2': 640 | resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} 641 | 642 | '@types/ssri@7.1.5': 643 | resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} 644 | 645 | '@vitest/expect@3.1.1': 646 | resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} 647 | 648 | '@vitest/mocker@3.1.1': 649 | resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} 650 | peerDependencies: 651 | msw: ^2.4.9 652 | vite: ^5.0.0 || ^6.0.0 653 | peerDependenciesMeta: 654 | msw: 655 | optional: true 656 | vite: 657 | optional: true 658 | 659 | '@vitest/pretty-format@3.1.1': 660 | resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} 661 | 662 | '@vitest/runner@3.1.1': 663 | resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} 664 | 665 | '@vitest/snapshot@3.1.1': 666 | resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} 667 | 668 | '@vitest/spy@3.1.1': 669 | resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} 670 | 671 | '@vitest/utils@3.1.1': 672 | resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} 673 | 674 | '@zkochan/boxen@5.1.2': 675 | resolution: {integrity: sha512-MRUN24GOMTa14zkZ4Jd1BPmlagbk10+C6gegE5FgxzTVqiYMcm3KD+2qJs6OmlpEhqUKmm4pu/oTdn0KcMqbXg==} 676 | engines: {node: '>=10'} 677 | 678 | '@zkochan/js-yaml@0.0.7': 679 | resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} 680 | hasBin: true 681 | 682 | '@zkochan/rimraf@3.0.2': 683 | resolution: {integrity: sha512-GBf4ua7ogWTr7fATnzk/JLowZDBnBJMm8RkMaC/KcvxZ9gxbMWix0/jImd815LmqKyIHZ7h7lADRddGMdGBuCA==} 684 | engines: {node: '>=18.12'} 685 | 686 | '@zkochan/which@2.0.3': 687 | resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==} 688 | engines: {node: '>= 8'} 689 | hasBin: true 690 | 691 | acorn-jsx@5.3.2: 692 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 693 | peerDependencies: 694 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 695 | 696 | acorn@8.14.0: 697 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 698 | engines: {node: '>=0.4.0'} 699 | hasBin: true 700 | 701 | ajv@6.12.6: 702 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 703 | 704 | ansi-align@3.0.1: 705 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 706 | 707 | ansi-diff@1.2.0: 708 | resolution: {integrity: sha512-BIXwHKpjzghBjcwEV10Y4b17tjHfK4nhEqK3LqyQ3JgcMcjmi3DIevozNgrOpfvBMmrq9dfvrPJSu5/5vNUBQg==} 709 | 710 | ansi-regex@3.0.1: 711 | resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} 712 | engines: {node: '>=4'} 713 | 714 | ansi-regex@5.0.1: 715 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 716 | engines: {node: '>=8'} 717 | 718 | ansi-regex@6.1.0: 719 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 720 | engines: {node: '>=12'} 721 | 722 | ansi-split@1.0.1: 723 | resolution: {integrity: sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg==} 724 | 725 | ansi-styles@3.2.1: 726 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 727 | engines: {node: '>=4'} 728 | 729 | ansi-styles@4.3.0: 730 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 731 | engines: {node: '>=8'} 732 | 733 | ansi-styles@6.2.1: 734 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 735 | engines: {node: '>=12'} 736 | 737 | anymatch@3.1.3: 738 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 739 | engines: {node: '>= 8'} 740 | 741 | archy@1.0.0: 742 | resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} 743 | 744 | argparse@2.0.1: 745 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 746 | 747 | as-table@1.0.55: 748 | resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 749 | 750 | asn1@0.2.6: 751 | resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} 752 | 753 | assert-plus@1.0.0: 754 | resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} 755 | engines: {node: '>=0.8'} 756 | 757 | assertion-error@2.0.1: 758 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 759 | engines: {node: '>=12'} 760 | 761 | astral-regex@2.0.0: 762 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 763 | engines: {node: '>=8'} 764 | 765 | async-retry@1.3.1: 766 | resolution: {integrity: sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==} 767 | 768 | asynckit@0.4.0: 769 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 770 | 771 | aws-sign2@0.7.0: 772 | resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} 773 | 774 | aws4@1.11.0: 775 | resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} 776 | 777 | balanced-match@1.0.2: 778 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 779 | 780 | bcrypt-pbkdf@1.0.2: 781 | resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} 782 | 783 | better-path-resolve@1.0.0: 784 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 785 | engines: {node: '>=4'} 786 | 787 | binary-extensions@2.3.0: 788 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 789 | engines: {node: '>=8'} 790 | 791 | bluebird@3.7.2: 792 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 793 | 794 | bole@5.0.17: 795 | resolution: {integrity: sha512-q6F82qEcUQTP178ZEY4WI1zdVzxy+fOnSF1dOMyC16u1fc0c24YrDPbgxA6N5wGHayCUdSBWsF8Oy7r2AKtQdA==} 796 | 797 | brace-expansion@1.1.11: 798 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 799 | 800 | brace-expansion@2.0.1: 801 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 802 | 803 | braces@3.0.3: 804 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 805 | engines: {node: '>=8'} 806 | 807 | builtins@5.1.0: 808 | resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} 809 | 810 | cac@6.7.14: 811 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 812 | engines: {node: '>=8'} 813 | 814 | callsites@3.1.0: 815 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 816 | engines: {node: '>=6'} 817 | 818 | camelcase-keys@6.2.2: 819 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 820 | engines: {node: '>=8'} 821 | 822 | camelcase@5.3.1: 823 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 824 | engines: {node: '>=6'} 825 | 826 | camelcase@6.3.0: 827 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 828 | engines: {node: '>=10'} 829 | 830 | can-write-to-dir@1.1.1: 831 | resolution: {integrity: sha512-eOgiEWqjppB+3DN/5E82EQ8dTINus8d9GXMCbEsUnp2hcUIcXmBvzWmD3tXMk3CuBK0v+ddK9qw0EAF+JVRMjQ==} 832 | engines: {node: '>=10.13'} 833 | 834 | caseless@0.12.0: 835 | resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 836 | 837 | chai@5.2.0: 838 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 839 | engines: {node: '>=12'} 840 | 841 | chalk@2.4.2: 842 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 843 | engines: {node: '>=4'} 844 | 845 | chalk@4.1.0: 846 | resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} 847 | engines: {node: '>=10'} 848 | 849 | chalk@4.1.2: 850 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 851 | engines: {node: '>=10'} 852 | 853 | char-regex@1.0.2: 854 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 855 | engines: {node: '>=10'} 856 | 857 | check-error@2.1.1: 858 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 859 | engines: {node: '>= 16'} 860 | 861 | chokidar@3.6.0: 862 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 863 | engines: {node: '>= 8.10.0'} 864 | 865 | cli-boxes@2.2.1: 866 | resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} 867 | engines: {node: '>=6'} 868 | 869 | cli-columns@4.0.0: 870 | resolution: {integrity: sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==} 871 | engines: {node: '>= 10'} 872 | 873 | cli-truncate@2.1.0: 874 | resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} 875 | engines: {node: '>=8'} 876 | 877 | clone@1.0.4: 878 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 879 | engines: {node: '>=0.8'} 880 | 881 | color-convert@1.9.3: 882 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 883 | 884 | color-convert@2.0.1: 885 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 886 | engines: {node: '>=7.0.0'} 887 | 888 | color-name@1.1.3: 889 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 890 | 891 | color-name@1.1.4: 892 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 893 | 894 | combined-stream@1.0.8: 895 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 896 | engines: {node: '>= 0.8'} 897 | 898 | comver-to-semver@1.0.0: 899 | resolution: {integrity: sha512-gcGtbRxjwROQOdXLUWH1fQAXqThUVRZ219aAwgtX3KfYw429/Zv6EIJRf5TBSzWdAGwePmqH7w70WTaX4MDqag==} 900 | engines: {node: '>=12.17'} 901 | 902 | concat-map@0.0.1: 903 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 904 | 905 | config-chain@1.1.13: 906 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} 907 | 908 | consul@0.40.0: 909 | resolution: {integrity: sha512-GJdxzLAXJZZDddGhgVBeac2KeBGPABWeAlxGVjct5fAwSa2P0Zqy/e2MDPa6O1OvR5h2ko10zCyRrMjctbfytg==} 910 | 911 | core-util-is@1.0.2: 912 | resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} 913 | 914 | cross-spawn@7.0.6: 915 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 916 | engines: {node: '>= 8'} 917 | 918 | crypto-random-string@2.0.0: 919 | resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} 920 | engines: {node: '>=8'} 921 | 922 | dashdash@1.14.1: 923 | resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} 924 | engines: {node: '>=0.10'} 925 | 926 | data-uri-to-buffer@2.0.2: 927 | resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 928 | 929 | dateformat@4.5.1: 930 | resolution: {integrity: sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==} 931 | 932 | debug@4.4.0: 933 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 934 | engines: {node: '>=6.0'} 935 | peerDependencies: 936 | supports-color: '*' 937 | peerDependenciesMeta: 938 | supports-color: 939 | optional: true 940 | 941 | deep-eql@5.0.2: 942 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 943 | engines: {node: '>=6'} 944 | 945 | deep-is@0.1.4: 946 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 947 | 948 | deepmerge@4.2.2: 949 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 950 | engines: {node: '>=0.10.0'} 951 | 952 | defaults@1.0.4: 953 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 954 | 955 | delayed-stream@1.0.0: 956 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 957 | engines: {node: '>=0.4.0'} 958 | 959 | detect-libc@2.0.3: 960 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 961 | engines: {node: '>=8'} 962 | 963 | eastasianwidth@0.2.0: 964 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 965 | 966 | ecc-jsbn@0.1.2: 967 | resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} 968 | 969 | emoji-regex@8.0.0: 970 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 971 | 972 | emoji-regex@9.2.2: 973 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 974 | 975 | error-ex@1.3.2: 976 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 977 | 978 | es-module-lexer@1.6.0: 979 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 980 | 981 | esbuild@0.21.5: 982 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 983 | engines: {node: '>=12'} 984 | hasBin: true 985 | 986 | escape-string-regexp@1.0.5: 987 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 988 | engines: {node: '>=0.8.0'} 989 | 990 | escape-string-regexp@4.0.0: 991 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 992 | engines: {node: '>=10'} 993 | 994 | eslint-config-prettier@10.1.1: 995 | resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} 996 | hasBin: true 997 | peerDependencies: 998 | eslint: '>=7.0.0' 999 | 1000 | eslint-scope@8.3.0: 1001 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 1002 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1003 | 1004 | eslint-visitor-keys@3.4.3: 1005 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1006 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1007 | 1008 | eslint-visitor-keys@4.2.0: 1009 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1010 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1011 | 1012 | eslint@9.23.0: 1013 | resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} 1014 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1015 | hasBin: true 1016 | peerDependencies: 1017 | jiti: '*' 1018 | peerDependenciesMeta: 1019 | jiti: 1020 | optional: true 1021 | 1022 | espree@10.3.0: 1023 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1024 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1025 | 1026 | esquery@1.6.0: 1027 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1028 | engines: {node: '>=0.10'} 1029 | 1030 | esrecurse@4.3.0: 1031 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1032 | engines: {node: '>=4.0'} 1033 | 1034 | estraverse@5.3.0: 1035 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1036 | engines: {node: '>=4.0'} 1037 | 1038 | estree-walker@3.0.3: 1039 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1040 | 1041 | esutils@2.0.3: 1042 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1043 | engines: {node: '>=0.10.0'} 1044 | 1045 | execa@5.1.1: 1046 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1047 | engines: {node: '>=10'} 1048 | 1049 | expect-type@1.2.1: 1050 | resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} 1051 | engines: {node: '>=12.0.0'} 1052 | 1053 | extend@3.0.2: 1054 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1055 | 1056 | extsprintf@1.3.0: 1057 | resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} 1058 | engines: {'0': node >=0.6.0} 1059 | 1060 | fast-deep-equal@3.1.3: 1061 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1062 | 1063 | fast-json-stable-stringify@2.1.0: 1064 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1065 | 1066 | fast-levenshtein@2.0.6: 1067 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1068 | 1069 | fast-safe-stringify@2.1.1: 1070 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 1071 | 1072 | fdir@6.4.3: 1073 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 1074 | peerDependencies: 1075 | picomatch: ^3 || ^4 1076 | peerDependenciesMeta: 1077 | picomatch: 1078 | optional: true 1079 | 1080 | file-entry-cache@8.0.0: 1081 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1082 | engines: {node: '>=16.0.0'} 1083 | 1084 | fill-range@7.1.1: 1085 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1086 | engines: {node: '>=8'} 1087 | 1088 | find-up@5.0.0: 1089 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1090 | engines: {node: '>=10'} 1091 | 1092 | flat-cache@4.0.1: 1093 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1094 | engines: {node: '>=16'} 1095 | 1096 | flatted@3.3.2: 1097 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} 1098 | 1099 | foreground-child@3.3.0: 1100 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1101 | engines: {node: '>=14'} 1102 | 1103 | forever-agent@0.6.1: 1104 | resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} 1105 | 1106 | form-data@2.3.3: 1107 | resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} 1108 | engines: {node: '>= 0.12'} 1109 | 1110 | fs-extra@11.3.0: 1111 | resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} 1112 | engines: {node: '>=14.14'} 1113 | 1114 | fs-readdir-recursive@1.1.0: 1115 | resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} 1116 | 1117 | fsevents@2.3.3: 1118 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1119 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1120 | os: [darwin] 1121 | 1122 | get-npm-tarball-url@2.1.0: 1123 | resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} 1124 | engines: {node: '>=12.17'} 1125 | 1126 | get-source@2.0.12: 1127 | resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 1128 | 1129 | get-stream@6.0.1: 1130 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1131 | engines: {node: '>=10'} 1132 | 1133 | getpass@0.1.7: 1134 | resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} 1135 | 1136 | glob-parent@5.1.2: 1137 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1138 | engines: {node: '>= 6'} 1139 | 1140 | glob-parent@6.0.2: 1141 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1142 | engines: {node: '>=10.13.0'} 1143 | 1144 | glob@10.3.10: 1145 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1146 | engines: {node: '>=16 || 14 >=14.17'} 1147 | hasBin: true 1148 | 1149 | globals@14.0.0: 1150 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1151 | engines: {node: '>=18'} 1152 | 1153 | graceful-fs@4.2.10: 1154 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1155 | 1156 | graceful-fs@4.2.11: 1157 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1158 | 1159 | har-schema@2.0.0: 1160 | resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} 1161 | engines: {node: '>=4'} 1162 | 1163 | har-validator@5.1.5: 1164 | resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} 1165 | engines: {node: '>=6'} 1166 | deprecated: this library is no longer supported 1167 | 1168 | has-flag@3.0.0: 1169 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1170 | engines: {node: '>=4'} 1171 | 1172 | has-flag@4.0.0: 1173 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1174 | engines: {node: '>=8'} 1175 | 1176 | http-signature@1.2.0: 1177 | resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} 1178 | engines: {node: '>=0.8', npm: '>=1.3.7'} 1179 | 1180 | human-signals@2.1.0: 1181 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1182 | engines: {node: '>=10.17.0'} 1183 | 1184 | husky@9.1.7: 1185 | resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} 1186 | engines: {node: '>=18'} 1187 | hasBin: true 1188 | 1189 | ignore-by-default@1.0.1: 1190 | resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} 1191 | 1192 | ignore@5.3.2: 1193 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1194 | engines: {node: '>= 4'} 1195 | 1196 | import-fresh@3.3.0: 1197 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1198 | engines: {node: '>=6'} 1199 | 1200 | imurmurhash@0.1.4: 1201 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1202 | engines: {node: '>=0.8.19'} 1203 | 1204 | individual@3.0.0: 1205 | resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} 1206 | 1207 | inherits@2.0.4: 1208 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1209 | 1210 | ini@1.3.8: 1211 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 1212 | 1213 | ini@3.0.1: 1214 | resolution: {integrity: sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==} 1215 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1216 | 1217 | is-arrayish@0.2.1: 1218 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1219 | 1220 | is-binary-path@2.1.0: 1221 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1222 | engines: {node: '>=8'} 1223 | 1224 | is-extglob@2.1.1: 1225 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1226 | engines: {node: '>=0.10.0'} 1227 | 1228 | is-fullwidth-code-point@3.0.0: 1229 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1230 | engines: {node: '>=8'} 1231 | 1232 | is-glob@4.0.3: 1233 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1234 | engines: {node: '>=0.10.0'} 1235 | 1236 | is-number@7.0.0: 1237 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1238 | engines: {node: '>=0.12.0'} 1239 | 1240 | is-plain-obj@2.1.0: 1241 | resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 1242 | engines: {node: '>=8'} 1243 | 1244 | is-stream@2.0.1: 1245 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1246 | engines: {node: '>=8'} 1247 | 1248 | is-subdir@1.2.0: 1249 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1250 | engines: {node: '>=4'} 1251 | 1252 | is-typedarray@1.0.0: 1253 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} 1254 | 1255 | is-windows@1.0.2: 1256 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1257 | engines: {node: '>=0.10.0'} 1258 | 1259 | isexe@2.0.0: 1260 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1261 | 1262 | isstream@0.1.2: 1263 | resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} 1264 | 1265 | jackspeak@2.3.6: 1266 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1267 | engines: {node: '>=14'} 1268 | 1269 | js-tokens@4.0.0: 1270 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1271 | 1272 | js-yaml@4.1.0: 1273 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1274 | hasBin: true 1275 | 1276 | jsbn@0.1.1: 1277 | resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} 1278 | 1279 | json-buffer@3.0.1: 1280 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1281 | 1282 | json-colorizer@2.2.2: 1283 | resolution: {integrity: sha512-56oZtwV1piXrQnRNTtJeqRv+B9Y/dXAYLqBBaYl/COcUdoZxgLBLAO88+CnkbT6MxNs0c5E9mPBIb2sFcNz3vw==} 1284 | 1285 | json-parse-even-better-errors@2.3.1: 1286 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1287 | 1288 | json-schema-traverse@0.4.1: 1289 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1290 | 1291 | json-schema@0.4.0: 1292 | resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} 1293 | 1294 | json-stable-stringify-without-jsonify@1.0.1: 1295 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1296 | 1297 | json-stringify-safe@5.0.1: 1298 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1299 | 1300 | json5@2.2.3: 1301 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1302 | engines: {node: '>=6'} 1303 | hasBin: true 1304 | 1305 | jsonfile@6.1.0: 1306 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1307 | 1308 | jsprim@1.4.2: 1309 | resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} 1310 | engines: {node: '>=0.6.0'} 1311 | 1312 | keyv@4.5.4: 1313 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1314 | 1315 | levn@0.4.1: 1316 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1317 | engines: {node: '>= 0.8.0'} 1318 | 1319 | lines-and-columns@1.2.4: 1320 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1321 | 1322 | load-json-file@6.2.0: 1323 | resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} 1324 | engines: {node: '>=8'} 1325 | 1326 | locate-path@6.0.0: 1327 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1328 | engines: {node: '>=10'} 1329 | 1330 | lodash.assign@4.2.0: 1331 | resolution: {integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==} 1332 | 1333 | lodash.get@4.4.2: 1334 | resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} 1335 | 1336 | lodash.kebabcase@4.1.1: 1337 | resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} 1338 | 1339 | lodash.merge@4.6.2: 1340 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1341 | 1342 | lodash@4.17.21: 1343 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1344 | 1345 | logzio-nodejs@2.0.2: 1346 | resolution: {integrity: sha512-/K0AZyI4dhxO9870f5PBvh/hJ3/0lwmXev1xEBgeCQ7kFaNOmJCHvb5uEr1NYBW6FvVJAevuXu0T9ueBtXcvig==} 1347 | engines: {node: '>= 6.0.0'} 1348 | 1349 | loupe@3.1.3: 1350 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 1351 | 1352 | lru-cache@10.4.3: 1353 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1354 | 1355 | magic-string@0.30.17: 1356 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1357 | 1358 | map-age-cleaner@0.1.3: 1359 | resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} 1360 | engines: {node: '>=6'} 1361 | 1362 | map-obj@4.3.0: 1363 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 1364 | engines: {node: '>=8'} 1365 | 1366 | mem@8.1.1: 1367 | resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} 1368 | engines: {node: '>=10'} 1369 | 1370 | merge-stream@2.0.0: 1371 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1372 | 1373 | mime-db@1.52.0: 1374 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1375 | engines: {node: '>= 0.6'} 1376 | 1377 | mime-types@2.1.35: 1378 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1379 | engines: {node: '>= 0.6'} 1380 | 1381 | mimic-fn@2.1.0: 1382 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1383 | engines: {node: '>=6'} 1384 | 1385 | mimic-fn@3.1.0: 1386 | resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} 1387 | engines: {node: '>=8'} 1388 | 1389 | minimatch@3.1.2: 1390 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1391 | 1392 | minimatch@9.0.5: 1393 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1394 | engines: {node: '>=16 || 14 >=14.17'} 1395 | 1396 | minimist@1.2.8: 1397 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1398 | 1399 | minipass@7.1.2: 1400 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1401 | engines: {node: '>=16 || 14 >=14.17'} 1402 | 1403 | moment@2.29.4: 1404 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 1405 | 1406 | ms@2.1.3: 1407 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1408 | 1409 | nanoid@3.3.11: 1410 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1411 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1412 | hasBin: true 1413 | 1414 | natural-compare@1.4.0: 1415 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1416 | 1417 | ndjson@2.0.0: 1418 | resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} 1419 | engines: {node: '>=10'} 1420 | hasBin: true 1421 | 1422 | nodemon@3.1.9: 1423 | resolution: {integrity: sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==} 1424 | engines: {node: '>=10'} 1425 | hasBin: true 1426 | 1427 | normalize-path@3.0.0: 1428 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1429 | engines: {node: '>=0.10.0'} 1430 | 1431 | normalize-registry-url@2.0.0: 1432 | resolution: {integrity: sha512-3e9FwDyRAhbxXw4slm4Tjv40u78yPwMc/WZkACpqNQOs5sM7wic853AeTLkMFEVhivZkclGYlse8iYsklz0Yvg==} 1433 | 1434 | npm-run-path@4.0.1: 1435 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1436 | engines: {node: '>=8'} 1437 | 1438 | oauth-sign@0.9.0: 1439 | resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} 1440 | 1441 | onetime@5.1.2: 1442 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1443 | engines: {node: '>=6'} 1444 | 1445 | optionator@0.9.4: 1446 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1447 | engines: {node: '>= 0.8.0'} 1448 | 1449 | p-defer@1.0.0: 1450 | resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} 1451 | engines: {node: '>=4'} 1452 | 1453 | p-filter@2.1.0: 1454 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1455 | engines: {node: '>=8'} 1456 | 1457 | p-limit@3.1.0: 1458 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1459 | engines: {node: '>=10'} 1460 | 1461 | p-locate@5.0.0: 1462 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1463 | engines: {node: '>=10'} 1464 | 1465 | p-map@2.1.0: 1466 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1467 | engines: {node: '>=6'} 1468 | 1469 | papi@0.29.1: 1470 | resolution: {integrity: sha512-Y9ipSMfWuuVFO3zY9PlxOmEg+bQ7CeJ28sa9/a0veYNynLf9fwjR3+3fld5otEy7okUaEOUuCHVH62MyTmACXQ==} 1471 | 1472 | parent-module@1.0.1: 1473 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1474 | engines: {node: '>=6'} 1475 | 1476 | parse-json@5.2.0: 1477 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1478 | engines: {node: '>=8'} 1479 | 1480 | parse-ms@2.1.0: 1481 | resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} 1482 | engines: {node: '>=6'} 1483 | 1484 | path-absolute@1.0.1: 1485 | resolution: {integrity: sha512-gds5iRhSeOcDtj8gfWkRHLtZKTPsFVuh7utbjYtvnclw4XM+ffRzJrwqMhOD1PVqef7nBLmgsu1vIujjvAJrAw==} 1486 | engines: {node: '>=4'} 1487 | 1488 | path-exists@4.0.0: 1489 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1490 | engines: {node: '>=8'} 1491 | 1492 | path-key@3.1.1: 1493 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1494 | engines: {node: '>=8'} 1495 | 1496 | path-name@1.0.0: 1497 | resolution: {integrity: sha512-/dcAb5vMXH0f51yvMuSUqFpxUcA8JelbRmE5mW/p4CUJxrNgK24IkstnV7ENtg2IDGBOu6izKTG6eilbnbNKWQ==} 1498 | 1499 | path-scurry@1.11.1: 1500 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1501 | engines: {node: '>=16 || 14 >=14.18'} 1502 | 1503 | path-temp@2.1.0: 1504 | resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} 1505 | engines: {node: '>=8.15'} 1506 | 1507 | pathe@2.0.3: 1508 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1509 | 1510 | pathval@2.0.0: 1511 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1512 | engines: {node: '>= 14.16'} 1513 | 1514 | performance-now@2.1.0: 1515 | resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} 1516 | 1517 | picocolors@1.1.1: 1518 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1519 | 1520 | picomatch@2.3.1: 1521 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1522 | engines: {node: '>=8.6'} 1523 | 1524 | picomatch@4.0.2: 1525 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1526 | engines: {node: '>=12'} 1527 | 1528 | pnpm@10.7.1: 1529 | resolution: {integrity: sha512-LZLIa3ko3IKE9TSU+0IB+YPaZfD7Tw1Auq+lz2KPox2uPllo8SRm8X336XMQ4w80OmSLrqG5s1BoXa+v/99YCA==} 1530 | engines: {node: '>=18.12'} 1531 | hasBin: true 1532 | 1533 | postcss@8.5.3: 1534 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 1535 | engines: {node: ^10 || ^12 || >=14} 1536 | 1537 | prelude-ls@1.2.1: 1538 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1539 | engines: {node: '>= 0.8.0'} 1540 | 1541 | pretty-bytes@5.6.0: 1542 | resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} 1543 | engines: {node: '>=6'} 1544 | 1545 | pretty-ms@7.0.1: 1546 | resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} 1547 | engines: {node: '>=10'} 1548 | 1549 | printable-characters@1.0.42: 1550 | resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 1551 | 1552 | proto-list@1.2.4: 1553 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} 1554 | 1555 | psl@1.9.0: 1556 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 1557 | 1558 | pstree.remy@1.1.8: 1559 | resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} 1560 | 1561 | punycode@2.3.1: 1562 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1563 | engines: {node: '>=6'} 1564 | 1565 | qs@6.5.3: 1566 | resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} 1567 | engines: {node: '>=0.6'} 1568 | 1569 | quick-lru@4.0.1: 1570 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 1571 | engines: {node: '>=8'} 1572 | 1573 | read-ini-file@4.0.0: 1574 | resolution: {integrity: sha512-zz4qv/sKETv7nAkATqSJ9YMbKD8NXRPuA8d17VdYCuNYrVstB1S6UAMU6aytf5vRa9MESbZN7jLZdcmrOxz4gg==} 1575 | engines: {node: '>=14.6'} 1576 | 1577 | read-yaml-file@2.1.0: 1578 | resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} 1579 | engines: {node: '>=10.13'} 1580 | 1581 | readable-stream@3.6.2: 1582 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1583 | engines: {node: '>= 6'} 1584 | 1585 | readdirp@3.6.0: 1586 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1587 | engines: {node: '>=8.10.0'} 1588 | 1589 | realpath-missing@1.1.0: 1590 | resolution: {integrity: sha512-wnWtnywepjg/eHIgWR97R7UuM5i+qHLA195qdN9UPKvcMqfn60+67S8sPPW3vDlSEfYHoFkKU8IvpCNty3zQvQ==} 1591 | engines: {node: '>=10'} 1592 | 1593 | request-promise-core@1.1.4: 1594 | resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} 1595 | engines: {node: '>=0.10.0'} 1596 | peerDependencies: 1597 | request: ^2.34 1598 | 1599 | request-promise@4.2.6: 1600 | resolution: {integrity: sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==} 1601 | engines: {node: '>=0.10.0'} 1602 | deprecated: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 1603 | peerDependencies: 1604 | request: ^2.34 1605 | 1606 | request@2.88.2: 1607 | resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} 1608 | engines: {node: '>= 6'} 1609 | deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 1610 | 1611 | resolve-from@4.0.0: 1612 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1613 | engines: {node: '>=4'} 1614 | 1615 | retry@0.12.0: 1616 | resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 1617 | engines: {node: '>= 4'} 1618 | 1619 | rollup@4.39.0: 1620 | resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} 1621 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1622 | hasBin: true 1623 | 1624 | rough-object-size@1.0.1: 1625 | resolution: {integrity: sha512-Ap4njAWgGc/sJhnjCp2JuWZ+5l9sXqpI+IrhPu7WrgPneTLxw/IXO5cAJ7GSfUNZICmkWdxELta5q8NIe8HfqA==} 1626 | 1627 | rxjs@7.8.1: 1628 | resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} 1629 | 1630 | safe-buffer@5.2.1: 1631 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1632 | 1633 | safe-execa@0.1.2: 1634 | resolution: {integrity: sha512-vdTshSQ2JsRCgT8eKZWNJIL26C6bVqy1SOmuCMlKHegVeo8KYRobRrefOdUq9OozSPUUiSxrylteeRmLOMFfWg==} 1635 | engines: {node: '>=12'} 1636 | 1637 | safer-buffer@2.1.2: 1638 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1639 | 1640 | semver@7.6.3: 1641 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1642 | engines: {node: '>=10'} 1643 | hasBin: true 1644 | 1645 | semver@7.7.1: 1646 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1647 | engines: {node: '>=10'} 1648 | hasBin: true 1649 | 1650 | serialize-error@8.1.0: 1651 | resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} 1652 | engines: {node: '>=10'} 1653 | 1654 | shebang-command@2.0.0: 1655 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1656 | engines: {node: '>=8'} 1657 | 1658 | shebang-regex@3.0.0: 1659 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1660 | engines: {node: '>=8'} 1661 | 1662 | siginfo@2.0.0: 1663 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1664 | 1665 | signal-exit@3.0.7: 1666 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1667 | 1668 | signal-exit@4.1.0: 1669 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1670 | engines: {node: '>=14'} 1671 | 1672 | simple-update-notifier@2.0.0: 1673 | resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} 1674 | engines: {node: '>=10'} 1675 | 1676 | slice-ansi@3.0.0: 1677 | resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} 1678 | engines: {node: '>=8'} 1679 | 1680 | sort-keys@4.2.0: 1681 | resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} 1682 | engines: {node: '>=8'} 1683 | 1684 | source-map-js@1.2.1: 1685 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1686 | engines: {node: '>=0.10.0'} 1687 | 1688 | source-map@0.6.1: 1689 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1690 | engines: {node: '>=0.10.0'} 1691 | 1692 | split2@3.2.2: 1693 | resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} 1694 | 1695 | sshpk@1.17.0: 1696 | resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} 1697 | engines: {node: '>=0.10.0'} 1698 | hasBin: true 1699 | 1700 | ssri@10.0.5: 1701 | resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} 1702 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1703 | 1704 | stackback@0.0.2: 1705 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1706 | 1707 | stacktracey@2.1.8: 1708 | resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 1709 | 1710 | std-env@3.8.1: 1711 | resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} 1712 | 1713 | stealthy-require@1.1.1: 1714 | resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} 1715 | engines: {node: '>=0.10.0'} 1716 | 1717 | string-length@4.0.2: 1718 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 1719 | engines: {node: '>=10'} 1720 | 1721 | string-width@4.2.3: 1722 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1723 | engines: {node: '>=8'} 1724 | 1725 | string-width@5.1.2: 1726 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1727 | engines: {node: '>=12'} 1728 | 1729 | string_decoder@1.3.0: 1730 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1731 | 1732 | strip-ansi@6.0.1: 1733 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1734 | engines: {node: '>=8'} 1735 | 1736 | strip-ansi@7.1.0: 1737 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1738 | engines: {node: '>=12'} 1739 | 1740 | strip-bom@4.0.0: 1741 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 1742 | engines: {node: '>=8'} 1743 | 1744 | strip-comments-strings@1.2.0: 1745 | resolution: {integrity: sha512-zwF4bmnyEjZwRhaak9jUWNxc0DoeKBJ7lwSN/LEc8dQXZcUFG6auaaTQJokQWXopLdM3iTx01nQT8E4aL29DAQ==} 1746 | 1747 | strip-final-newline@2.0.0: 1748 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1749 | engines: {node: '>=6'} 1750 | 1751 | strip-json-comments@3.1.1: 1752 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1753 | engines: {node: '>=8'} 1754 | 1755 | supports-color@5.5.0: 1756 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1757 | engines: {node: '>=4'} 1758 | 1759 | supports-color@7.2.0: 1760 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1761 | engines: {node: '>=8'} 1762 | 1763 | through2@4.0.2: 1764 | resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} 1765 | 1766 | tinybench@2.9.0: 1767 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1768 | 1769 | tinyexec@0.3.2: 1770 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1771 | 1772 | tinyglobby@0.2.12: 1773 | resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} 1774 | engines: {node: '>=12.0.0'} 1775 | 1776 | tinypool@1.0.2: 1777 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1778 | engines: {node: ^18.0.0 || >=20.0.0} 1779 | 1780 | tinyrainbow@2.0.0: 1781 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1782 | engines: {node: '>=14.0.0'} 1783 | 1784 | tinyspy@3.0.2: 1785 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1786 | engines: {node: '>=14.0.0'} 1787 | 1788 | to-regex-range@5.0.1: 1789 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1790 | engines: {node: '>=8.0'} 1791 | 1792 | touch@3.1.1: 1793 | resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} 1794 | hasBin: true 1795 | 1796 | tough-cookie@2.5.0: 1797 | resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} 1798 | engines: {node: '>=0.8'} 1799 | 1800 | tslib@2.8.1: 1801 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1802 | 1803 | tunnel-agent@0.6.0: 1804 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 1805 | 1806 | tweetnacl@0.14.5: 1807 | resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} 1808 | 1809 | type-check@0.4.0: 1810 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1811 | engines: {node: '>= 0.8.0'} 1812 | 1813 | type-fest@0.20.2: 1814 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1815 | engines: {node: '>=10'} 1816 | 1817 | type-fest@0.6.0: 1818 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 1819 | engines: {node: '>=8'} 1820 | 1821 | undefsafe@2.0.5: 1822 | resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} 1823 | 1824 | undici-types@6.20.0: 1825 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1826 | 1827 | unique-string@2.0.0: 1828 | resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} 1829 | engines: {node: '>=8'} 1830 | 1831 | universalify@2.0.1: 1832 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 1833 | engines: {node: '>= 10.0.0'} 1834 | 1835 | uri-js@4.4.1: 1836 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1837 | 1838 | util-deprecate@1.0.2: 1839 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1840 | 1841 | uuid@3.4.0: 1842 | resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} 1843 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 1844 | hasBin: true 1845 | 1846 | validate-npm-package-name@5.0.0: 1847 | resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} 1848 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1849 | 1850 | verror@1.10.0: 1851 | resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} 1852 | engines: {'0': node >=0.6.0} 1853 | 1854 | vite-node@3.1.1: 1855 | resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} 1856 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1857 | hasBin: true 1858 | 1859 | vite@5.4.16: 1860 | resolution: {integrity: sha512-Y5gnfp4NemVfgOTDQAunSD4346fal44L9mszGGY/e+qxsRT5y1sMlS/8tiQ8AFAp+MFgYNSINdfEchJiPm41vQ==} 1861 | engines: {node: ^18.0.0 || >=20.0.0} 1862 | hasBin: true 1863 | peerDependencies: 1864 | '@types/node': ^18.0.0 || >=20.0.0 1865 | less: '*' 1866 | lightningcss: ^1.21.0 1867 | sass: '*' 1868 | sass-embedded: '*' 1869 | stylus: '*' 1870 | sugarss: '*' 1871 | terser: ^5.4.0 1872 | peerDependenciesMeta: 1873 | '@types/node': 1874 | optional: true 1875 | less: 1876 | optional: true 1877 | lightningcss: 1878 | optional: true 1879 | sass: 1880 | optional: true 1881 | sass-embedded: 1882 | optional: true 1883 | stylus: 1884 | optional: true 1885 | sugarss: 1886 | optional: true 1887 | terser: 1888 | optional: true 1889 | 1890 | vitest@3.1.1: 1891 | resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} 1892 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1893 | hasBin: true 1894 | peerDependencies: 1895 | '@edge-runtime/vm': '*' 1896 | '@types/debug': ^4.1.12 1897 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1898 | '@vitest/browser': 3.1.1 1899 | '@vitest/ui': 3.1.1 1900 | happy-dom: '*' 1901 | jsdom: '*' 1902 | peerDependenciesMeta: 1903 | '@edge-runtime/vm': 1904 | optional: true 1905 | '@types/debug': 1906 | optional: true 1907 | '@types/node': 1908 | optional: true 1909 | '@vitest/browser': 1910 | optional: true 1911 | '@vitest/ui': 1912 | optional: true 1913 | happy-dom: 1914 | optional: true 1915 | jsdom: 1916 | optional: true 1917 | 1918 | wcwidth@1.0.1: 1919 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 1920 | 1921 | which@2.0.2: 1922 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1923 | engines: {node: '>= 8'} 1924 | hasBin: true 1925 | 1926 | why-is-node-running@2.3.0: 1927 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1928 | engines: {node: '>=8'} 1929 | hasBin: true 1930 | 1931 | widest-line@3.1.0: 1932 | resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} 1933 | engines: {node: '>=8'} 1934 | 1935 | word-wrap@1.2.5: 1936 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1937 | engines: {node: '>=0.10.0'} 1938 | 1939 | wrap-ansi@7.0.0: 1940 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1941 | engines: {node: '>=10'} 1942 | 1943 | wrap-ansi@8.1.0: 1944 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1945 | engines: {node: '>=12'} 1946 | 1947 | write-file-atomic@5.0.1: 1948 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 1949 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1950 | 1951 | write-yaml-file@5.0.0: 1952 | resolution: {integrity: sha512-FdNA4RyH1L43TlvGG8qOMIfcEczwA5ij+zLXUy3Z83CjxhLvcV7/Q/8pk22wnCgYw7PJhtK+7lhO+qqyT4NdvQ==} 1953 | engines: {node: '>=16.14'} 1954 | 1955 | yaml@2.7.1: 1956 | resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} 1957 | engines: {node: '>= 14'} 1958 | hasBin: true 1959 | 1960 | yocto-queue@0.1.0: 1961 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1962 | engines: {node: '>=10'} 1963 | 1964 | snapshots: 1965 | 1966 | '@babel/code-frame@7.26.2': 1967 | dependencies: 1968 | '@babel/helper-validator-identifier': 7.25.9 1969 | js-tokens: 4.0.0 1970 | picocolors: 1.1.1 1971 | 1972 | '@babel/helper-validator-identifier@7.25.9': {} 1973 | 1974 | '@esbuild/aix-ppc64@0.21.5': 1975 | optional: true 1976 | 1977 | '@esbuild/android-arm64@0.21.5': 1978 | optional: true 1979 | 1980 | '@esbuild/android-arm@0.21.5': 1981 | optional: true 1982 | 1983 | '@esbuild/android-x64@0.21.5': 1984 | optional: true 1985 | 1986 | '@esbuild/darwin-arm64@0.21.5': 1987 | optional: true 1988 | 1989 | '@esbuild/darwin-x64@0.21.5': 1990 | optional: true 1991 | 1992 | '@esbuild/freebsd-arm64@0.21.5': 1993 | optional: true 1994 | 1995 | '@esbuild/freebsd-x64@0.21.5': 1996 | optional: true 1997 | 1998 | '@esbuild/linux-arm64@0.21.5': 1999 | optional: true 2000 | 2001 | '@esbuild/linux-arm@0.21.5': 2002 | optional: true 2003 | 2004 | '@esbuild/linux-ia32@0.21.5': 2005 | optional: true 2006 | 2007 | '@esbuild/linux-loong64@0.21.5': 2008 | optional: true 2009 | 2010 | '@esbuild/linux-mips64el@0.21.5': 2011 | optional: true 2012 | 2013 | '@esbuild/linux-ppc64@0.21.5': 2014 | optional: true 2015 | 2016 | '@esbuild/linux-riscv64@0.21.5': 2017 | optional: true 2018 | 2019 | '@esbuild/linux-s390x@0.21.5': 2020 | optional: true 2021 | 2022 | '@esbuild/linux-x64@0.21.5': 2023 | optional: true 2024 | 2025 | '@esbuild/netbsd-x64@0.21.5': 2026 | optional: true 2027 | 2028 | '@esbuild/openbsd-x64@0.21.5': 2029 | optional: true 2030 | 2031 | '@esbuild/sunos-x64@0.21.5': 2032 | optional: true 2033 | 2034 | '@esbuild/win32-arm64@0.21.5': 2035 | optional: true 2036 | 2037 | '@esbuild/win32-ia32@0.21.5': 2038 | optional: true 2039 | 2040 | '@esbuild/win32-x64@0.21.5': 2041 | optional: true 2042 | 2043 | '@eslint-community/eslint-utils@4.4.1(eslint@9.23.0)': 2044 | dependencies: 2045 | eslint: 9.23.0 2046 | eslint-visitor-keys: 3.4.3 2047 | 2048 | '@eslint-community/regexpp@4.12.1': {} 2049 | 2050 | '@eslint/config-array@0.19.2': 2051 | dependencies: 2052 | '@eslint/object-schema': 2.1.6 2053 | debug: 4.4.0(supports-color@5.5.0) 2054 | minimatch: 3.1.2 2055 | transitivePeerDependencies: 2056 | - supports-color 2057 | 2058 | '@eslint/config-helpers@0.2.1': {} 2059 | 2060 | '@eslint/core@0.12.0': 2061 | dependencies: 2062 | '@types/json-schema': 7.0.15 2063 | 2064 | '@eslint/core@0.13.0': 2065 | dependencies: 2066 | '@types/json-schema': 7.0.15 2067 | 2068 | '@eslint/eslintrc@3.3.1': 2069 | dependencies: 2070 | ajv: 6.12.6 2071 | debug: 4.4.0(supports-color@5.5.0) 2072 | espree: 10.3.0 2073 | globals: 14.0.0 2074 | ignore: 5.3.2 2075 | import-fresh: 3.3.0 2076 | js-yaml: 4.1.0 2077 | minimatch: 3.1.2 2078 | strip-json-comments: 3.1.1 2079 | transitivePeerDependencies: 2080 | - supports-color 2081 | 2082 | '@eslint/js@9.23.0': {} 2083 | 2084 | '@eslint/object-schema@2.1.6': {} 2085 | 2086 | '@eslint/plugin-kit@0.2.8': 2087 | dependencies: 2088 | '@eslint/core': 0.13.0 2089 | levn: 0.4.1 2090 | 2091 | '@gwhitney/detect-indent@7.0.1': {} 2092 | 2093 | '@humanfs/core@0.19.1': {} 2094 | 2095 | '@humanfs/node@0.16.6': 2096 | dependencies: 2097 | '@humanfs/core': 0.19.1 2098 | '@humanwhocodes/retry': 0.3.1 2099 | 2100 | '@humanwhocodes/module-importer@1.0.1': {} 2101 | 2102 | '@humanwhocodes/retry@0.3.1': {} 2103 | 2104 | '@humanwhocodes/retry@0.4.2': {} 2105 | 2106 | '@isaacs/cliui@8.0.2': 2107 | dependencies: 2108 | string-width: 5.1.2 2109 | string-width-cjs: string-width@4.2.3 2110 | strip-ansi: 7.1.0 2111 | strip-ansi-cjs: strip-ansi@6.0.1 2112 | wrap-ansi: 8.1.0 2113 | wrap-ansi-cjs: wrap-ansi@7.0.0 2114 | 2115 | '@jridgewell/sourcemap-codec@1.5.0': {} 2116 | 2117 | '@logzio-node-toolbox/consul@0.0.19': 2118 | dependencies: 2119 | async-retry: 1.3.1 2120 | consul: 0.40.0 2121 | deepmerge: 4.2.2 2122 | 2123 | '@logzio-node-toolbox/logger@0.0.15': 2124 | dependencies: 2125 | chalk: 4.1.0 2126 | dateformat: 4.5.1 2127 | json-colorizer: 2.2.2 2128 | json-stringify-safe: 5.0.1 2129 | lodash: 4.17.21 2130 | logzio-nodejs: 2.0.2 2131 | rough-object-size: 1.0.1 2132 | serialize-error: 8.1.0 2133 | 2134 | '@pkgjs/parseargs@0.11.0': 2135 | optional: true 2136 | 2137 | '@pnpm/catalogs.config@1000.0.2': 2138 | dependencies: 2139 | '@pnpm/error': 1000.0.2 2140 | 2141 | '@pnpm/catalogs.protocol-parser@1000.0.0': {} 2142 | 2143 | '@pnpm/catalogs.resolver@1000.0.2': 2144 | dependencies: 2145 | '@pnpm/catalogs.protocol-parser': 1000.0.0 2146 | '@pnpm/error': 1000.0.2 2147 | 2148 | '@pnpm/catalogs.types@1000.0.0': {} 2149 | 2150 | '@pnpm/cli-meta@1000.0.5': 2151 | dependencies: 2152 | '@pnpm/types': 1000.3.0 2153 | load-json-file: 6.2.0 2154 | 2155 | '@pnpm/cli-utils@1000.0.19(@pnpm/logger@1000.0.0)': 2156 | dependencies: 2157 | '@pnpm/cli-meta': 1000.0.5 2158 | '@pnpm/config': 1002.7.0(@pnpm/logger@1000.0.0) 2159 | '@pnpm/default-reporter': 1001.3.10(@pnpm/logger@1000.0.0) 2160 | '@pnpm/error': 1000.0.2 2161 | '@pnpm/logger': 1000.0.0 2162 | '@pnpm/manifest-utils': 1000.0.7(@pnpm/logger@1000.0.0) 2163 | '@pnpm/package-is-installable': 1000.0.7(@pnpm/logger@1000.0.0) 2164 | '@pnpm/read-project-manifest': 1000.0.8 2165 | '@pnpm/types': 1000.3.0 2166 | chalk: 4.1.2 2167 | load-json-file: 6.2.0 2168 | 2169 | '@pnpm/config.env-replace@1.1.0': {} 2170 | 2171 | '@pnpm/config.env-replace@3.0.1': {} 2172 | 2173 | '@pnpm/config@1002.7.0(@pnpm/logger@1000.0.0)': 2174 | dependencies: 2175 | '@pnpm/catalogs.config': 1000.0.2 2176 | '@pnpm/catalogs.types': 1000.0.0 2177 | '@pnpm/config.env-replace': 3.0.1 2178 | '@pnpm/constants': 1001.1.0 2179 | '@pnpm/error': 1000.0.2 2180 | '@pnpm/git-utils': 1000.0.0 2181 | '@pnpm/logger': 1000.0.0 2182 | '@pnpm/matcher': 1000.0.0 2183 | '@pnpm/npm-conf': 3.0.0 2184 | '@pnpm/pnpmfile': 1001.0.9(@pnpm/logger@1000.0.0) 2185 | '@pnpm/read-project-manifest': 1000.0.8 2186 | '@pnpm/types': 1000.3.0 2187 | '@pnpm/workspace.read-manifest': 1000.1.2 2188 | better-path-resolve: 1.0.0 2189 | camelcase: 6.3.0 2190 | camelcase-keys: 6.2.2 2191 | can-write-to-dir: 1.1.1 2192 | is-subdir: 1.2.0 2193 | is-windows: 1.0.2 2194 | lodash.kebabcase: 4.1.1 2195 | normalize-registry-url: 2.0.0 2196 | path-absolute: 1.0.1 2197 | path-name: 1.0.0 2198 | ramda: '@pnpm/ramda@0.28.1' 2199 | read-ini-file: 4.0.0 2200 | realpath-missing: 1.1.0 2201 | which: '@pnpm/which@3.0.1' 2202 | 2203 | '@pnpm/constants@1001.1.0': {} 2204 | 2205 | '@pnpm/core-loggers@1000.1.5(@pnpm/logger@1000.0.0)': 2206 | dependencies: 2207 | '@pnpm/logger': 1000.0.0 2208 | '@pnpm/types': 1000.3.0 2209 | 2210 | '@pnpm/crypto.hash@1000.1.1': 2211 | dependencies: 2212 | '@pnpm/crypto.polyfill': 1000.1.0 2213 | '@pnpm/graceful-fs': 1000.0.0 2214 | ssri: 10.0.5 2215 | 2216 | '@pnpm/crypto.polyfill@1000.1.0': {} 2217 | 2218 | '@pnpm/dedupe.issues-renderer@1000.0.1': 2219 | dependencies: 2220 | '@pnpm/dedupe.types': 1000.0.0 2221 | archy: 1.0.0 2222 | chalk: 4.1.2 2223 | 2224 | '@pnpm/dedupe.types@1000.0.0': {} 2225 | 2226 | '@pnpm/default-reporter@1001.3.10(@pnpm/logger@1000.0.0)': 2227 | dependencies: 2228 | '@pnpm/cli-meta': 1000.0.5 2229 | '@pnpm/config': 1002.7.0(@pnpm/logger@1000.0.0) 2230 | '@pnpm/core-loggers': 1000.1.5(@pnpm/logger@1000.0.0) 2231 | '@pnpm/dedupe.issues-renderer': 1000.0.1 2232 | '@pnpm/dedupe.types': 1000.0.0 2233 | '@pnpm/error': 1000.0.2 2234 | '@pnpm/logger': 1000.0.0 2235 | '@pnpm/render-peer-issues': 1000.0.7 2236 | '@pnpm/types': 1000.3.0 2237 | '@pnpm/util.lex-comparator': 3.0.1 2238 | ansi-diff: 1.2.0 2239 | boxen: '@zkochan/boxen@5.1.2' 2240 | chalk: 4.1.2 2241 | cli-truncate: 2.1.0 2242 | normalize-path: 3.0.0 2243 | pretty-bytes: 5.6.0 2244 | pretty-ms: 7.0.1 2245 | ramda: '@pnpm/ramda@0.28.1' 2246 | rxjs: 7.8.1 2247 | semver: 7.7.1 2248 | stacktracey: 2.1.8 2249 | string-length: 4.0.2 2250 | 2251 | '@pnpm/dependency-path@1000.0.6': 2252 | dependencies: 2253 | '@pnpm/crypto.hash': 1000.1.1 2254 | '@pnpm/types': 1000.3.0 2255 | semver: 7.7.1 2256 | 2257 | '@pnpm/env.system-node-version@1000.0.5': 2258 | dependencies: 2259 | '@pnpm/cli-meta': 1000.0.5 2260 | execa: safe-execa@0.1.2 2261 | mem: 8.1.1 2262 | 2263 | '@pnpm/error@1000.0.2': 2264 | dependencies: 2265 | '@pnpm/constants': 1001.1.0 2266 | 2267 | '@pnpm/fetcher-base@1000.0.7': 2268 | dependencies: 2269 | '@pnpm/resolver-base': 1000.2.1 2270 | '@pnpm/types': 1000.3.0 2271 | '@types/ssri': 7.1.5 2272 | 2273 | '@pnpm/fs.find-packages@1000.0.8': 2274 | dependencies: 2275 | '@pnpm/read-project-manifest': 1000.0.8 2276 | '@pnpm/types': 1000.3.0 2277 | '@pnpm/util.lex-comparator': 3.0.1 2278 | p-filter: 2.1.0 2279 | tinyglobby: 0.2.12 2280 | 2281 | '@pnpm/git-utils@1000.0.0': 2282 | dependencies: 2283 | execa: safe-execa@0.1.2 2284 | 2285 | '@pnpm/graceful-fs@1000.0.0': 2286 | dependencies: 2287 | graceful-fs: 4.2.11 2288 | 2289 | '@pnpm/hooks.types@1001.0.5': 2290 | dependencies: 2291 | '@pnpm/lockfile.types': 1001.0.5 2292 | '@pnpm/types': 1000.3.0 2293 | 2294 | '@pnpm/lockfile.fs@1001.1.8(@pnpm/logger@1000.0.0)': 2295 | dependencies: 2296 | '@pnpm/constants': 1001.1.0 2297 | '@pnpm/dependency-path': 1000.0.6 2298 | '@pnpm/error': 1000.0.2 2299 | '@pnpm/git-utils': 1000.0.0 2300 | '@pnpm/lockfile.merger': 1001.0.5 2301 | '@pnpm/lockfile.types': 1001.0.5 2302 | '@pnpm/lockfile.utils': 1001.0.7 2303 | '@pnpm/logger': 1000.0.0 2304 | '@pnpm/object.key-sorting': 1000.0.0 2305 | '@pnpm/types': 1000.3.0 2306 | '@zkochan/rimraf': 3.0.2 2307 | comver-to-semver: 1.0.0 2308 | js-yaml: '@zkochan/js-yaml@0.0.7' 2309 | normalize-path: 3.0.0 2310 | ramda: '@pnpm/ramda@0.28.1' 2311 | semver: 7.7.1 2312 | strip-bom: 4.0.0 2313 | write-file-atomic: 5.0.1 2314 | 2315 | '@pnpm/lockfile.merger@1001.0.5': 2316 | dependencies: 2317 | '@pnpm/lockfile.types': 1001.0.5 2318 | '@pnpm/types': 1000.3.0 2319 | comver-to-semver: 1.0.0 2320 | ramda: '@pnpm/ramda@0.28.1' 2321 | semver: 7.7.1 2322 | 2323 | '@pnpm/lockfile.pruner@1001.0.6': 2324 | dependencies: 2325 | '@pnpm/constants': 1001.1.0 2326 | '@pnpm/dependency-path': 1000.0.6 2327 | '@pnpm/lockfile.types': 1001.0.5 2328 | '@pnpm/types': 1000.3.0 2329 | ramda: '@pnpm/ramda@0.28.1' 2330 | 2331 | '@pnpm/lockfile.types@1001.0.5': 2332 | dependencies: 2333 | '@pnpm/patching.types': 1000.1.0 2334 | '@pnpm/types': 1000.3.0 2335 | 2336 | '@pnpm/lockfile.utils@1001.0.7': 2337 | dependencies: 2338 | '@pnpm/dependency-path': 1000.0.6 2339 | '@pnpm/lockfile.types': 1001.0.5 2340 | '@pnpm/pick-fetcher': 1000.0.0 2341 | '@pnpm/resolver-base': 1000.2.1 2342 | '@pnpm/types': 1000.3.0 2343 | get-npm-tarball-url: 2.1.0 2344 | ramda: '@pnpm/ramda@0.28.1' 2345 | 2346 | '@pnpm/logger@1000.0.0': 2347 | dependencies: 2348 | bole: 5.0.17 2349 | ndjson: 2.0.0 2350 | 2351 | '@pnpm/manifest-utils@1000.0.7(@pnpm/logger@1000.0.0)': 2352 | dependencies: 2353 | '@pnpm/core-loggers': 1000.1.5(@pnpm/logger@1000.0.0) 2354 | '@pnpm/error': 1000.0.2 2355 | '@pnpm/types': 1000.3.0 2356 | transitivePeerDependencies: 2357 | - '@pnpm/logger' 2358 | 2359 | '@pnpm/matcher@1000.0.0': 2360 | dependencies: 2361 | escape-string-regexp: 4.0.0 2362 | 2363 | '@pnpm/network.ca-file@1.0.2': 2364 | dependencies: 2365 | graceful-fs: 4.2.10 2366 | 2367 | '@pnpm/npm-conf@3.0.0': 2368 | dependencies: 2369 | '@pnpm/config.env-replace': 1.1.0 2370 | '@pnpm/network.ca-file': 1.0.2 2371 | config-chain: 1.1.13 2372 | 2373 | '@pnpm/object.key-sorting@1000.0.0': 2374 | dependencies: 2375 | '@pnpm/util.lex-comparator': 3.0.0 2376 | sort-keys: 4.2.0 2377 | 2378 | '@pnpm/package-is-installable@1000.0.7(@pnpm/logger@1000.0.0)': 2379 | dependencies: 2380 | '@pnpm/cli-meta': 1000.0.5 2381 | '@pnpm/core-loggers': 1000.1.5(@pnpm/logger@1000.0.0) 2382 | '@pnpm/env.system-node-version': 1000.0.5 2383 | '@pnpm/error': 1000.0.2 2384 | '@pnpm/logger': 1000.0.0 2385 | '@pnpm/types': 1000.3.0 2386 | detect-libc: 2.0.3 2387 | execa: safe-execa@0.1.2 2388 | mem: 8.1.1 2389 | semver: 7.7.1 2390 | 2391 | '@pnpm/parse-overrides@1000.0.2': 2392 | dependencies: 2393 | '@pnpm/catalogs.resolver': 1000.0.2 2394 | '@pnpm/catalogs.types': 1000.0.0 2395 | '@pnpm/error': 1000.0.2 2396 | '@pnpm/parse-wanted-dependency': 1000.0.0 2397 | 2398 | '@pnpm/parse-wanted-dependency@1000.0.0': 2399 | dependencies: 2400 | validate-npm-package-name: 5.0.0 2401 | 2402 | '@pnpm/patching.types@1000.1.0': {} 2403 | 2404 | '@pnpm/pick-fetcher@1000.0.0': {} 2405 | 2406 | '@pnpm/pnpmfile@1001.0.9(@pnpm/logger@1000.0.0)': 2407 | dependencies: 2408 | '@pnpm/core-loggers': 1000.1.5(@pnpm/logger@1000.0.0) 2409 | '@pnpm/crypto.hash': 1000.1.1 2410 | '@pnpm/error': 1000.0.2 2411 | '@pnpm/hooks.types': 1001.0.5 2412 | '@pnpm/lockfile.types': 1001.0.5 2413 | '@pnpm/logger': 1000.0.0 2414 | '@pnpm/store-controller-types': 1001.0.5 2415 | '@pnpm/types': 1000.3.0 2416 | chalk: 4.1.2 2417 | path-absolute: 1.0.1 2418 | 2419 | '@pnpm/ramda@0.28.1': {} 2420 | 2421 | '@pnpm/read-project-manifest@1000.0.8': 2422 | dependencies: 2423 | '@gwhitney/detect-indent': 7.0.1 2424 | '@pnpm/error': 1000.0.2 2425 | '@pnpm/graceful-fs': 1000.0.0 2426 | '@pnpm/text.comments-parser': 1000.0.0 2427 | '@pnpm/types': 1000.3.0 2428 | '@pnpm/write-project-manifest': 1000.0.5 2429 | fast-deep-equal: 3.1.3 2430 | is-windows: 1.0.2 2431 | json5: 2.2.3 2432 | parse-json: 5.2.0 2433 | read-yaml-file: 2.1.0 2434 | strip-bom: 4.0.0 2435 | 2436 | '@pnpm/render-peer-issues@1000.0.7': 2437 | dependencies: 2438 | '@pnpm/error': 1000.0.2 2439 | '@pnpm/matcher': 1000.0.0 2440 | '@pnpm/parse-overrides': 1000.0.2 2441 | '@pnpm/types': 1000.3.0 2442 | archy: 1.0.0 2443 | chalk: 4.1.2 2444 | cli-columns: 4.0.0 2445 | semver: 7.7.1 2446 | 2447 | '@pnpm/resolver-base@1000.2.1': 2448 | dependencies: 2449 | '@pnpm/types': 1000.3.0 2450 | 2451 | '@pnpm/store-controller-types@1001.0.5': 2452 | dependencies: 2453 | '@pnpm/fetcher-base': 1000.0.7 2454 | '@pnpm/resolver-base': 1000.2.1 2455 | '@pnpm/types': 1000.3.0 2456 | 2457 | '@pnpm/text.comments-parser@1000.0.0': 2458 | dependencies: 2459 | strip-comments-strings: 1.2.0 2460 | 2461 | '@pnpm/types@1000.3.0': {} 2462 | 2463 | '@pnpm/util.lex-comparator@3.0.0': {} 2464 | 2465 | '@pnpm/util.lex-comparator@3.0.1': {} 2466 | 2467 | '@pnpm/which@3.0.1': 2468 | dependencies: 2469 | isexe: 2.0.0 2470 | 2471 | '@pnpm/workspace.find-packages@1000.0.19(@pnpm/logger@1000.0.0)': 2472 | dependencies: 2473 | '@pnpm/cli-utils': 1000.0.19(@pnpm/logger@1000.0.0) 2474 | '@pnpm/constants': 1001.1.0 2475 | '@pnpm/fs.find-packages': 1000.0.8 2476 | '@pnpm/logger': 1000.0.0 2477 | '@pnpm/types': 1000.3.0 2478 | '@pnpm/util.lex-comparator': 3.0.1 2479 | 2480 | '@pnpm/workspace.read-manifest@1000.1.2': 2481 | dependencies: 2482 | '@pnpm/constants': 1001.1.0 2483 | '@pnpm/error': 1000.0.2 2484 | '@pnpm/types': 1000.3.0 2485 | read-yaml-file: 2.1.0 2486 | 2487 | '@pnpm/write-project-manifest@1000.0.5': 2488 | dependencies: 2489 | '@pnpm/text.comments-parser': 1000.0.0 2490 | '@pnpm/types': 1000.3.0 2491 | json5: 2.2.3 2492 | write-file-atomic: 5.0.1 2493 | write-yaml-file: 5.0.0 2494 | 2495 | '@rollup/rollup-android-arm-eabi@4.39.0': 2496 | optional: true 2497 | 2498 | '@rollup/rollup-android-arm64@4.39.0': 2499 | optional: true 2500 | 2501 | '@rollup/rollup-darwin-arm64@4.39.0': 2502 | optional: true 2503 | 2504 | '@rollup/rollup-darwin-x64@4.39.0': 2505 | optional: true 2506 | 2507 | '@rollup/rollup-freebsd-arm64@4.39.0': 2508 | optional: true 2509 | 2510 | '@rollup/rollup-freebsd-x64@4.39.0': 2511 | optional: true 2512 | 2513 | '@rollup/rollup-linux-arm-gnueabihf@4.39.0': 2514 | optional: true 2515 | 2516 | '@rollup/rollup-linux-arm-musleabihf@4.39.0': 2517 | optional: true 2518 | 2519 | '@rollup/rollup-linux-arm64-gnu@4.39.0': 2520 | optional: true 2521 | 2522 | '@rollup/rollup-linux-arm64-musl@4.39.0': 2523 | optional: true 2524 | 2525 | '@rollup/rollup-linux-loongarch64-gnu@4.39.0': 2526 | optional: true 2527 | 2528 | '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': 2529 | optional: true 2530 | 2531 | '@rollup/rollup-linux-riscv64-gnu@4.39.0': 2532 | optional: true 2533 | 2534 | '@rollup/rollup-linux-riscv64-musl@4.39.0': 2535 | optional: true 2536 | 2537 | '@rollup/rollup-linux-s390x-gnu@4.39.0': 2538 | optional: true 2539 | 2540 | '@rollup/rollup-linux-x64-gnu@4.39.0': 2541 | optional: true 2542 | 2543 | '@rollup/rollup-linux-x64-musl@4.39.0': 2544 | optional: true 2545 | 2546 | '@rollup/rollup-win32-arm64-msvc@4.39.0': 2547 | optional: true 2548 | 2549 | '@rollup/rollup-win32-ia32-msvc@4.39.0': 2550 | optional: true 2551 | 2552 | '@rollup/rollup-win32-x64-msvc@4.39.0': 2553 | optional: true 2554 | 2555 | '@types/estree@1.0.7': {} 2556 | 2557 | '@types/json-schema@7.0.15': {} 2558 | 2559 | '@types/node@22.10.2': 2560 | dependencies: 2561 | undici-types: 6.20.0 2562 | 2563 | '@types/ssri@7.1.5': 2564 | dependencies: 2565 | '@types/node': 22.10.2 2566 | 2567 | '@vitest/expect@3.1.1': 2568 | dependencies: 2569 | '@vitest/spy': 3.1.1 2570 | '@vitest/utils': 3.1.1 2571 | chai: 5.2.0 2572 | tinyrainbow: 2.0.0 2573 | 2574 | '@vitest/mocker@3.1.1(vite@5.4.16(@types/node@22.10.2))': 2575 | dependencies: 2576 | '@vitest/spy': 3.1.1 2577 | estree-walker: 3.0.3 2578 | magic-string: 0.30.17 2579 | optionalDependencies: 2580 | vite: 5.4.16(@types/node@22.10.2) 2581 | 2582 | '@vitest/pretty-format@3.1.1': 2583 | dependencies: 2584 | tinyrainbow: 2.0.0 2585 | 2586 | '@vitest/runner@3.1.1': 2587 | dependencies: 2588 | '@vitest/utils': 3.1.1 2589 | pathe: 2.0.3 2590 | 2591 | '@vitest/snapshot@3.1.1': 2592 | dependencies: 2593 | '@vitest/pretty-format': 3.1.1 2594 | magic-string: 0.30.17 2595 | pathe: 2.0.3 2596 | 2597 | '@vitest/spy@3.1.1': 2598 | dependencies: 2599 | tinyspy: 3.0.2 2600 | 2601 | '@vitest/utils@3.1.1': 2602 | dependencies: 2603 | '@vitest/pretty-format': 3.1.1 2604 | loupe: 3.1.3 2605 | tinyrainbow: 2.0.0 2606 | 2607 | '@zkochan/boxen@5.1.2': 2608 | dependencies: 2609 | ansi-align: 3.0.1 2610 | camelcase: 6.3.0 2611 | chalk: 4.1.2 2612 | cli-boxes: 2.2.1 2613 | string-width: 4.2.3 2614 | type-fest: 0.20.2 2615 | widest-line: 3.1.0 2616 | wrap-ansi: 7.0.0 2617 | 2618 | '@zkochan/js-yaml@0.0.7': 2619 | dependencies: 2620 | argparse: 2.0.1 2621 | 2622 | '@zkochan/rimraf@3.0.2': {} 2623 | 2624 | '@zkochan/which@2.0.3': 2625 | dependencies: 2626 | isexe: 2.0.0 2627 | 2628 | acorn-jsx@5.3.2(acorn@8.14.0): 2629 | dependencies: 2630 | acorn: 8.14.0 2631 | 2632 | acorn@8.14.0: {} 2633 | 2634 | ajv@6.12.6: 2635 | dependencies: 2636 | fast-deep-equal: 3.1.3 2637 | fast-json-stable-stringify: 2.1.0 2638 | json-schema-traverse: 0.4.1 2639 | uri-js: 4.4.1 2640 | 2641 | ansi-align@3.0.1: 2642 | dependencies: 2643 | string-width: 4.2.3 2644 | 2645 | ansi-diff@1.2.0: 2646 | dependencies: 2647 | ansi-split: 1.0.1 2648 | wcwidth: 1.0.1 2649 | 2650 | ansi-regex@3.0.1: {} 2651 | 2652 | ansi-regex@5.0.1: {} 2653 | 2654 | ansi-regex@6.1.0: {} 2655 | 2656 | ansi-split@1.0.1: 2657 | dependencies: 2658 | ansi-regex: 3.0.1 2659 | 2660 | ansi-styles@3.2.1: 2661 | dependencies: 2662 | color-convert: 1.9.3 2663 | 2664 | ansi-styles@4.3.0: 2665 | dependencies: 2666 | color-convert: 2.0.1 2667 | 2668 | ansi-styles@6.2.1: {} 2669 | 2670 | anymatch@3.1.3: 2671 | dependencies: 2672 | normalize-path: 3.0.0 2673 | picomatch: 2.3.1 2674 | 2675 | archy@1.0.0: {} 2676 | 2677 | argparse@2.0.1: {} 2678 | 2679 | as-table@1.0.55: 2680 | dependencies: 2681 | printable-characters: 1.0.42 2682 | 2683 | asn1@0.2.6: 2684 | dependencies: 2685 | safer-buffer: 2.1.2 2686 | 2687 | assert-plus@1.0.0: {} 2688 | 2689 | assertion-error@2.0.1: {} 2690 | 2691 | astral-regex@2.0.0: {} 2692 | 2693 | async-retry@1.3.1: 2694 | dependencies: 2695 | retry: 0.12.0 2696 | 2697 | asynckit@0.4.0: {} 2698 | 2699 | aws-sign2@0.7.0: {} 2700 | 2701 | aws4@1.11.0: {} 2702 | 2703 | balanced-match@1.0.2: {} 2704 | 2705 | bcrypt-pbkdf@1.0.2: 2706 | dependencies: 2707 | tweetnacl: 0.14.5 2708 | 2709 | better-path-resolve@1.0.0: 2710 | dependencies: 2711 | is-windows: 1.0.2 2712 | 2713 | binary-extensions@2.3.0: {} 2714 | 2715 | bluebird@3.7.2: {} 2716 | 2717 | bole@5.0.17: 2718 | dependencies: 2719 | fast-safe-stringify: 2.1.1 2720 | individual: 3.0.0 2721 | 2722 | brace-expansion@1.1.11: 2723 | dependencies: 2724 | balanced-match: 1.0.2 2725 | concat-map: 0.0.1 2726 | 2727 | brace-expansion@2.0.1: 2728 | dependencies: 2729 | balanced-match: 1.0.2 2730 | 2731 | braces@3.0.3: 2732 | dependencies: 2733 | fill-range: 7.1.1 2734 | 2735 | builtins@5.1.0: 2736 | dependencies: 2737 | semver: 7.7.1 2738 | 2739 | cac@6.7.14: {} 2740 | 2741 | callsites@3.1.0: {} 2742 | 2743 | camelcase-keys@6.2.2: 2744 | dependencies: 2745 | camelcase: 5.3.1 2746 | map-obj: 4.3.0 2747 | quick-lru: 4.0.1 2748 | 2749 | camelcase@5.3.1: {} 2750 | 2751 | camelcase@6.3.0: {} 2752 | 2753 | can-write-to-dir@1.1.1: 2754 | dependencies: 2755 | path-temp: 2.1.0 2756 | 2757 | caseless@0.12.0: {} 2758 | 2759 | chai@5.2.0: 2760 | dependencies: 2761 | assertion-error: 2.0.1 2762 | check-error: 2.1.1 2763 | deep-eql: 5.0.2 2764 | loupe: 3.1.3 2765 | pathval: 2.0.0 2766 | 2767 | chalk@2.4.2: 2768 | dependencies: 2769 | ansi-styles: 3.2.1 2770 | escape-string-regexp: 1.0.5 2771 | supports-color: 5.5.0 2772 | 2773 | chalk@4.1.0: 2774 | dependencies: 2775 | ansi-styles: 4.3.0 2776 | supports-color: 7.2.0 2777 | 2778 | chalk@4.1.2: 2779 | dependencies: 2780 | ansi-styles: 4.3.0 2781 | supports-color: 7.2.0 2782 | 2783 | char-regex@1.0.2: {} 2784 | 2785 | check-error@2.1.1: {} 2786 | 2787 | chokidar@3.6.0: 2788 | dependencies: 2789 | anymatch: 3.1.3 2790 | braces: 3.0.3 2791 | glob-parent: 5.1.2 2792 | is-binary-path: 2.1.0 2793 | is-glob: 4.0.3 2794 | normalize-path: 3.0.0 2795 | readdirp: 3.6.0 2796 | optionalDependencies: 2797 | fsevents: 2.3.3 2798 | 2799 | cli-boxes@2.2.1: {} 2800 | 2801 | cli-columns@4.0.0: 2802 | dependencies: 2803 | string-width: 4.2.3 2804 | strip-ansi: 6.0.1 2805 | 2806 | cli-truncate@2.1.0: 2807 | dependencies: 2808 | slice-ansi: 3.0.0 2809 | string-width: 4.2.3 2810 | 2811 | clone@1.0.4: {} 2812 | 2813 | color-convert@1.9.3: 2814 | dependencies: 2815 | color-name: 1.1.3 2816 | 2817 | color-convert@2.0.1: 2818 | dependencies: 2819 | color-name: 1.1.4 2820 | 2821 | color-name@1.1.3: {} 2822 | 2823 | color-name@1.1.4: {} 2824 | 2825 | combined-stream@1.0.8: 2826 | dependencies: 2827 | delayed-stream: 1.0.0 2828 | 2829 | comver-to-semver@1.0.0: {} 2830 | 2831 | concat-map@0.0.1: {} 2832 | 2833 | config-chain@1.1.13: 2834 | dependencies: 2835 | ini: 1.3.8 2836 | proto-list: 1.2.4 2837 | 2838 | consul@0.40.0: 2839 | dependencies: 2840 | papi: 0.29.1 2841 | 2842 | core-util-is@1.0.2: {} 2843 | 2844 | cross-spawn@7.0.6: 2845 | dependencies: 2846 | path-key: 3.1.1 2847 | shebang-command: 2.0.0 2848 | which: 2.0.2 2849 | 2850 | crypto-random-string@2.0.0: {} 2851 | 2852 | dashdash@1.14.1: 2853 | dependencies: 2854 | assert-plus: 1.0.0 2855 | 2856 | data-uri-to-buffer@2.0.2: {} 2857 | 2858 | dateformat@4.5.1: {} 2859 | 2860 | debug@4.4.0(supports-color@5.5.0): 2861 | dependencies: 2862 | ms: 2.1.3 2863 | optionalDependencies: 2864 | supports-color: 5.5.0 2865 | 2866 | deep-eql@5.0.2: {} 2867 | 2868 | deep-is@0.1.4: {} 2869 | 2870 | deepmerge@4.2.2: {} 2871 | 2872 | defaults@1.0.4: 2873 | dependencies: 2874 | clone: 1.0.4 2875 | 2876 | delayed-stream@1.0.0: {} 2877 | 2878 | detect-libc@2.0.3: {} 2879 | 2880 | eastasianwidth@0.2.0: {} 2881 | 2882 | ecc-jsbn@0.1.2: 2883 | dependencies: 2884 | jsbn: 0.1.1 2885 | safer-buffer: 2.1.2 2886 | 2887 | emoji-regex@8.0.0: {} 2888 | 2889 | emoji-regex@9.2.2: {} 2890 | 2891 | error-ex@1.3.2: 2892 | dependencies: 2893 | is-arrayish: 0.2.1 2894 | 2895 | es-module-lexer@1.6.0: {} 2896 | 2897 | esbuild@0.21.5: 2898 | optionalDependencies: 2899 | '@esbuild/aix-ppc64': 0.21.5 2900 | '@esbuild/android-arm': 0.21.5 2901 | '@esbuild/android-arm64': 0.21.5 2902 | '@esbuild/android-x64': 0.21.5 2903 | '@esbuild/darwin-arm64': 0.21.5 2904 | '@esbuild/darwin-x64': 0.21.5 2905 | '@esbuild/freebsd-arm64': 0.21.5 2906 | '@esbuild/freebsd-x64': 0.21.5 2907 | '@esbuild/linux-arm': 0.21.5 2908 | '@esbuild/linux-arm64': 0.21.5 2909 | '@esbuild/linux-ia32': 0.21.5 2910 | '@esbuild/linux-loong64': 0.21.5 2911 | '@esbuild/linux-mips64el': 0.21.5 2912 | '@esbuild/linux-ppc64': 0.21.5 2913 | '@esbuild/linux-riscv64': 0.21.5 2914 | '@esbuild/linux-s390x': 0.21.5 2915 | '@esbuild/linux-x64': 0.21.5 2916 | '@esbuild/netbsd-x64': 0.21.5 2917 | '@esbuild/openbsd-x64': 0.21.5 2918 | '@esbuild/sunos-x64': 0.21.5 2919 | '@esbuild/win32-arm64': 0.21.5 2920 | '@esbuild/win32-ia32': 0.21.5 2921 | '@esbuild/win32-x64': 0.21.5 2922 | 2923 | escape-string-regexp@1.0.5: {} 2924 | 2925 | escape-string-regexp@4.0.0: {} 2926 | 2927 | eslint-config-prettier@10.1.1(eslint@9.23.0): 2928 | dependencies: 2929 | eslint: 9.23.0 2930 | 2931 | eslint-scope@8.3.0: 2932 | dependencies: 2933 | esrecurse: 4.3.0 2934 | estraverse: 5.3.0 2935 | 2936 | eslint-visitor-keys@3.4.3: {} 2937 | 2938 | eslint-visitor-keys@4.2.0: {} 2939 | 2940 | eslint@9.23.0: 2941 | dependencies: 2942 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.23.0) 2943 | '@eslint-community/regexpp': 4.12.1 2944 | '@eslint/config-array': 0.19.2 2945 | '@eslint/config-helpers': 0.2.1 2946 | '@eslint/core': 0.12.0 2947 | '@eslint/eslintrc': 3.3.1 2948 | '@eslint/js': 9.23.0 2949 | '@eslint/plugin-kit': 0.2.8 2950 | '@humanfs/node': 0.16.6 2951 | '@humanwhocodes/module-importer': 1.0.1 2952 | '@humanwhocodes/retry': 0.4.2 2953 | '@types/estree': 1.0.7 2954 | '@types/json-schema': 7.0.15 2955 | ajv: 6.12.6 2956 | chalk: 4.1.2 2957 | cross-spawn: 7.0.6 2958 | debug: 4.4.0(supports-color@5.5.0) 2959 | escape-string-regexp: 4.0.0 2960 | eslint-scope: 8.3.0 2961 | eslint-visitor-keys: 4.2.0 2962 | espree: 10.3.0 2963 | esquery: 1.6.0 2964 | esutils: 2.0.3 2965 | fast-deep-equal: 3.1.3 2966 | file-entry-cache: 8.0.0 2967 | find-up: 5.0.0 2968 | glob-parent: 6.0.2 2969 | ignore: 5.3.2 2970 | imurmurhash: 0.1.4 2971 | is-glob: 4.0.3 2972 | json-stable-stringify-without-jsonify: 1.0.1 2973 | lodash.merge: 4.6.2 2974 | minimatch: 3.1.2 2975 | natural-compare: 1.4.0 2976 | optionator: 0.9.4 2977 | transitivePeerDependencies: 2978 | - supports-color 2979 | 2980 | espree@10.3.0: 2981 | dependencies: 2982 | acorn: 8.14.0 2983 | acorn-jsx: 5.3.2(acorn@8.14.0) 2984 | eslint-visitor-keys: 4.2.0 2985 | 2986 | esquery@1.6.0: 2987 | dependencies: 2988 | estraverse: 5.3.0 2989 | 2990 | esrecurse@4.3.0: 2991 | dependencies: 2992 | estraverse: 5.3.0 2993 | 2994 | estraverse@5.3.0: {} 2995 | 2996 | estree-walker@3.0.3: 2997 | dependencies: 2998 | '@types/estree': 1.0.7 2999 | 3000 | esutils@2.0.3: {} 3001 | 3002 | execa@5.1.1: 3003 | dependencies: 3004 | cross-spawn: 7.0.6 3005 | get-stream: 6.0.1 3006 | human-signals: 2.1.0 3007 | is-stream: 2.0.1 3008 | merge-stream: 2.0.0 3009 | npm-run-path: 4.0.1 3010 | onetime: 5.1.2 3011 | signal-exit: 3.0.7 3012 | strip-final-newline: 2.0.0 3013 | 3014 | expect-type@1.2.1: {} 3015 | 3016 | extend@3.0.2: {} 3017 | 3018 | extsprintf@1.3.0: {} 3019 | 3020 | fast-deep-equal@3.1.3: {} 3021 | 3022 | fast-json-stable-stringify@2.1.0: {} 3023 | 3024 | fast-levenshtein@2.0.6: {} 3025 | 3026 | fast-safe-stringify@2.1.1: {} 3027 | 3028 | fdir@6.4.3(picomatch@4.0.2): 3029 | optionalDependencies: 3030 | picomatch: 4.0.2 3031 | 3032 | file-entry-cache@8.0.0: 3033 | dependencies: 3034 | flat-cache: 4.0.1 3035 | 3036 | fill-range@7.1.1: 3037 | dependencies: 3038 | to-regex-range: 5.0.1 3039 | 3040 | find-up@5.0.0: 3041 | dependencies: 3042 | locate-path: 6.0.0 3043 | path-exists: 4.0.0 3044 | 3045 | flat-cache@4.0.1: 3046 | dependencies: 3047 | flatted: 3.3.2 3048 | keyv: 4.5.4 3049 | 3050 | flatted@3.3.2: {} 3051 | 3052 | foreground-child@3.3.0: 3053 | dependencies: 3054 | cross-spawn: 7.0.6 3055 | signal-exit: 4.1.0 3056 | 3057 | forever-agent@0.6.1: {} 3058 | 3059 | form-data@2.3.3: 3060 | dependencies: 3061 | asynckit: 0.4.0 3062 | combined-stream: 1.0.8 3063 | mime-types: 2.1.35 3064 | 3065 | fs-extra@11.3.0: 3066 | dependencies: 3067 | graceful-fs: 4.2.11 3068 | jsonfile: 6.1.0 3069 | universalify: 2.0.1 3070 | 3071 | fs-readdir-recursive@1.1.0: {} 3072 | 3073 | fsevents@2.3.3: 3074 | optional: true 3075 | 3076 | get-npm-tarball-url@2.1.0: {} 3077 | 3078 | get-source@2.0.12: 3079 | dependencies: 3080 | data-uri-to-buffer: 2.0.2 3081 | source-map: 0.6.1 3082 | 3083 | get-stream@6.0.1: {} 3084 | 3085 | getpass@0.1.7: 3086 | dependencies: 3087 | assert-plus: 1.0.0 3088 | 3089 | glob-parent@5.1.2: 3090 | dependencies: 3091 | is-glob: 4.0.3 3092 | 3093 | glob-parent@6.0.2: 3094 | dependencies: 3095 | is-glob: 4.0.3 3096 | 3097 | glob@10.3.10: 3098 | dependencies: 3099 | foreground-child: 3.3.0 3100 | jackspeak: 2.3.6 3101 | minimatch: 9.0.5 3102 | minipass: 7.1.2 3103 | path-scurry: 1.11.1 3104 | 3105 | globals@14.0.0: {} 3106 | 3107 | graceful-fs@4.2.10: {} 3108 | 3109 | graceful-fs@4.2.11: {} 3110 | 3111 | har-schema@2.0.0: {} 3112 | 3113 | har-validator@5.1.5: 3114 | dependencies: 3115 | ajv: 6.12.6 3116 | har-schema: 2.0.0 3117 | 3118 | has-flag@3.0.0: {} 3119 | 3120 | has-flag@4.0.0: {} 3121 | 3122 | http-signature@1.2.0: 3123 | dependencies: 3124 | assert-plus: 1.0.0 3125 | jsprim: 1.4.2 3126 | sshpk: 1.17.0 3127 | 3128 | human-signals@2.1.0: {} 3129 | 3130 | husky@9.1.7: {} 3131 | 3132 | ignore-by-default@1.0.1: {} 3133 | 3134 | ignore@5.3.2: {} 3135 | 3136 | import-fresh@3.3.0: 3137 | dependencies: 3138 | parent-module: 1.0.1 3139 | resolve-from: 4.0.0 3140 | 3141 | imurmurhash@0.1.4: {} 3142 | 3143 | individual@3.0.0: {} 3144 | 3145 | inherits@2.0.4: {} 3146 | 3147 | ini@1.3.8: {} 3148 | 3149 | ini@3.0.1: {} 3150 | 3151 | is-arrayish@0.2.1: {} 3152 | 3153 | is-binary-path@2.1.0: 3154 | dependencies: 3155 | binary-extensions: 2.3.0 3156 | 3157 | is-extglob@2.1.1: {} 3158 | 3159 | is-fullwidth-code-point@3.0.0: {} 3160 | 3161 | is-glob@4.0.3: 3162 | dependencies: 3163 | is-extglob: 2.1.1 3164 | 3165 | is-number@7.0.0: {} 3166 | 3167 | is-plain-obj@2.1.0: {} 3168 | 3169 | is-stream@2.0.1: {} 3170 | 3171 | is-subdir@1.2.0: 3172 | dependencies: 3173 | better-path-resolve: 1.0.0 3174 | 3175 | is-typedarray@1.0.0: {} 3176 | 3177 | is-windows@1.0.2: {} 3178 | 3179 | isexe@2.0.0: {} 3180 | 3181 | isstream@0.1.2: {} 3182 | 3183 | jackspeak@2.3.6: 3184 | dependencies: 3185 | '@isaacs/cliui': 8.0.2 3186 | optionalDependencies: 3187 | '@pkgjs/parseargs': 0.11.0 3188 | 3189 | js-tokens@4.0.0: {} 3190 | 3191 | js-yaml@4.1.0: 3192 | dependencies: 3193 | argparse: 2.0.1 3194 | 3195 | jsbn@0.1.1: {} 3196 | 3197 | json-buffer@3.0.1: {} 3198 | 3199 | json-colorizer@2.2.2: 3200 | dependencies: 3201 | chalk: 2.4.2 3202 | lodash.get: 4.4.2 3203 | 3204 | json-parse-even-better-errors@2.3.1: {} 3205 | 3206 | json-schema-traverse@0.4.1: {} 3207 | 3208 | json-schema@0.4.0: {} 3209 | 3210 | json-stable-stringify-without-jsonify@1.0.1: {} 3211 | 3212 | json-stringify-safe@5.0.1: {} 3213 | 3214 | json5@2.2.3: {} 3215 | 3216 | jsonfile@6.1.0: 3217 | dependencies: 3218 | universalify: 2.0.1 3219 | optionalDependencies: 3220 | graceful-fs: 4.2.11 3221 | 3222 | jsprim@1.4.2: 3223 | dependencies: 3224 | assert-plus: 1.0.0 3225 | extsprintf: 1.3.0 3226 | json-schema: 0.4.0 3227 | verror: 1.10.0 3228 | 3229 | keyv@4.5.4: 3230 | dependencies: 3231 | json-buffer: 3.0.1 3232 | 3233 | levn@0.4.1: 3234 | dependencies: 3235 | prelude-ls: 1.2.1 3236 | type-check: 0.4.0 3237 | 3238 | lines-and-columns@1.2.4: {} 3239 | 3240 | load-json-file@6.2.0: 3241 | dependencies: 3242 | graceful-fs: 4.2.11 3243 | parse-json: 5.2.0 3244 | strip-bom: 4.0.0 3245 | type-fest: 0.6.0 3246 | 3247 | locate-path@6.0.0: 3248 | dependencies: 3249 | p-locate: 5.0.0 3250 | 3251 | lodash.assign@4.2.0: {} 3252 | 3253 | lodash.get@4.4.2: {} 3254 | 3255 | lodash.kebabcase@4.1.1: {} 3256 | 3257 | lodash.merge@4.6.2: {} 3258 | 3259 | lodash@4.17.21: {} 3260 | 3261 | logzio-nodejs@2.0.2: 3262 | dependencies: 3263 | json-stringify-safe: 5.0.1 3264 | lodash.assign: 4.2.0 3265 | moment: 2.29.4 3266 | request: 2.88.2 3267 | request-promise: 4.2.6(request@2.88.2) 3268 | 3269 | loupe@3.1.3: {} 3270 | 3271 | lru-cache@10.4.3: {} 3272 | 3273 | magic-string@0.30.17: 3274 | dependencies: 3275 | '@jridgewell/sourcemap-codec': 1.5.0 3276 | 3277 | map-age-cleaner@0.1.3: 3278 | dependencies: 3279 | p-defer: 1.0.0 3280 | 3281 | map-obj@4.3.0: {} 3282 | 3283 | mem@8.1.1: 3284 | dependencies: 3285 | map-age-cleaner: 0.1.3 3286 | mimic-fn: 3.1.0 3287 | 3288 | merge-stream@2.0.0: {} 3289 | 3290 | mime-db@1.52.0: {} 3291 | 3292 | mime-types@2.1.35: 3293 | dependencies: 3294 | mime-db: 1.52.0 3295 | 3296 | mimic-fn@2.1.0: {} 3297 | 3298 | mimic-fn@3.1.0: {} 3299 | 3300 | minimatch@3.1.2: 3301 | dependencies: 3302 | brace-expansion: 1.1.11 3303 | 3304 | minimatch@9.0.5: 3305 | dependencies: 3306 | brace-expansion: 2.0.1 3307 | 3308 | minimist@1.2.8: {} 3309 | 3310 | minipass@7.1.2: {} 3311 | 3312 | moment@2.29.4: {} 3313 | 3314 | ms@2.1.3: {} 3315 | 3316 | nanoid@3.3.11: {} 3317 | 3318 | natural-compare@1.4.0: {} 3319 | 3320 | ndjson@2.0.0: 3321 | dependencies: 3322 | json-stringify-safe: 5.0.1 3323 | minimist: 1.2.8 3324 | readable-stream: 3.6.2 3325 | split2: 3.2.2 3326 | through2: 4.0.2 3327 | 3328 | nodemon@3.1.9: 3329 | dependencies: 3330 | chokidar: 3.6.0 3331 | debug: 4.4.0(supports-color@5.5.0) 3332 | ignore-by-default: 1.0.1 3333 | minimatch: 3.1.2 3334 | pstree.remy: 1.1.8 3335 | semver: 7.6.3 3336 | simple-update-notifier: 2.0.0 3337 | supports-color: 5.5.0 3338 | touch: 3.1.1 3339 | undefsafe: 2.0.5 3340 | 3341 | normalize-path@3.0.0: {} 3342 | 3343 | normalize-registry-url@2.0.0: {} 3344 | 3345 | npm-run-path@4.0.1: 3346 | dependencies: 3347 | path-key: 3.1.1 3348 | 3349 | oauth-sign@0.9.0: {} 3350 | 3351 | onetime@5.1.2: 3352 | dependencies: 3353 | mimic-fn: 2.1.0 3354 | 3355 | optionator@0.9.4: 3356 | dependencies: 3357 | deep-is: 0.1.4 3358 | fast-levenshtein: 2.0.6 3359 | levn: 0.4.1 3360 | prelude-ls: 1.2.1 3361 | type-check: 0.4.0 3362 | word-wrap: 1.2.5 3363 | 3364 | p-defer@1.0.0: {} 3365 | 3366 | p-filter@2.1.0: 3367 | dependencies: 3368 | p-map: 2.1.0 3369 | 3370 | p-limit@3.1.0: 3371 | dependencies: 3372 | yocto-queue: 0.1.0 3373 | 3374 | p-locate@5.0.0: 3375 | dependencies: 3376 | p-limit: 3.1.0 3377 | 3378 | p-map@2.1.0: {} 3379 | 3380 | papi@0.29.1: {} 3381 | 3382 | parent-module@1.0.1: 3383 | dependencies: 3384 | callsites: 3.1.0 3385 | 3386 | parse-json@5.2.0: 3387 | dependencies: 3388 | '@babel/code-frame': 7.26.2 3389 | error-ex: 1.3.2 3390 | json-parse-even-better-errors: 2.3.1 3391 | lines-and-columns: 1.2.4 3392 | 3393 | parse-ms@2.1.0: {} 3394 | 3395 | path-absolute@1.0.1: {} 3396 | 3397 | path-exists@4.0.0: {} 3398 | 3399 | path-key@3.1.1: {} 3400 | 3401 | path-name@1.0.0: {} 3402 | 3403 | path-scurry@1.11.1: 3404 | dependencies: 3405 | lru-cache: 10.4.3 3406 | minipass: 7.1.2 3407 | 3408 | path-temp@2.1.0: 3409 | dependencies: 3410 | unique-string: 2.0.0 3411 | 3412 | pathe@2.0.3: {} 3413 | 3414 | pathval@2.0.0: {} 3415 | 3416 | performance-now@2.1.0: {} 3417 | 3418 | picocolors@1.1.1: {} 3419 | 3420 | picomatch@2.3.1: {} 3421 | 3422 | picomatch@4.0.2: {} 3423 | 3424 | pnpm@10.7.1: {} 3425 | 3426 | postcss@8.5.3: 3427 | dependencies: 3428 | nanoid: 3.3.11 3429 | picocolors: 1.1.1 3430 | source-map-js: 1.2.1 3431 | 3432 | prelude-ls@1.2.1: {} 3433 | 3434 | pretty-bytes@5.6.0: {} 3435 | 3436 | pretty-ms@7.0.1: 3437 | dependencies: 3438 | parse-ms: 2.1.0 3439 | 3440 | printable-characters@1.0.42: {} 3441 | 3442 | proto-list@1.2.4: {} 3443 | 3444 | psl@1.9.0: {} 3445 | 3446 | pstree.remy@1.1.8: {} 3447 | 3448 | punycode@2.3.1: {} 3449 | 3450 | qs@6.5.3: {} 3451 | 3452 | quick-lru@4.0.1: {} 3453 | 3454 | read-ini-file@4.0.0: 3455 | dependencies: 3456 | ini: 3.0.1 3457 | strip-bom: 4.0.0 3458 | 3459 | read-yaml-file@2.1.0: 3460 | dependencies: 3461 | js-yaml: 4.1.0 3462 | strip-bom: 4.0.0 3463 | 3464 | readable-stream@3.6.2: 3465 | dependencies: 3466 | inherits: 2.0.4 3467 | string_decoder: 1.3.0 3468 | util-deprecate: 1.0.2 3469 | 3470 | readdirp@3.6.0: 3471 | dependencies: 3472 | picomatch: 2.3.1 3473 | 3474 | realpath-missing@1.1.0: {} 3475 | 3476 | request-promise-core@1.1.4(request@2.88.2): 3477 | dependencies: 3478 | lodash: 4.17.21 3479 | request: 2.88.2 3480 | 3481 | request-promise@4.2.6(request@2.88.2): 3482 | dependencies: 3483 | bluebird: 3.7.2 3484 | request: 2.88.2 3485 | request-promise-core: 1.1.4(request@2.88.2) 3486 | stealthy-require: 1.1.1 3487 | tough-cookie: 2.5.0 3488 | 3489 | request@2.88.2: 3490 | dependencies: 3491 | aws-sign2: 0.7.0 3492 | aws4: 1.11.0 3493 | caseless: 0.12.0 3494 | combined-stream: 1.0.8 3495 | extend: 3.0.2 3496 | forever-agent: 0.6.1 3497 | form-data: 2.3.3 3498 | har-validator: 5.1.5 3499 | http-signature: 1.2.0 3500 | is-typedarray: 1.0.0 3501 | isstream: 0.1.2 3502 | json-stringify-safe: 5.0.1 3503 | mime-types: 2.1.35 3504 | oauth-sign: 0.9.0 3505 | performance-now: 2.1.0 3506 | qs: 6.5.3 3507 | safe-buffer: 5.2.1 3508 | tough-cookie: 2.5.0 3509 | tunnel-agent: 0.6.0 3510 | uuid: 3.4.0 3511 | 3512 | resolve-from@4.0.0: {} 3513 | 3514 | retry@0.12.0: {} 3515 | 3516 | rollup@4.39.0: 3517 | dependencies: 3518 | '@types/estree': 1.0.7 3519 | optionalDependencies: 3520 | '@rollup/rollup-android-arm-eabi': 4.39.0 3521 | '@rollup/rollup-android-arm64': 4.39.0 3522 | '@rollup/rollup-darwin-arm64': 4.39.0 3523 | '@rollup/rollup-darwin-x64': 4.39.0 3524 | '@rollup/rollup-freebsd-arm64': 4.39.0 3525 | '@rollup/rollup-freebsd-x64': 4.39.0 3526 | '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 3527 | '@rollup/rollup-linux-arm-musleabihf': 4.39.0 3528 | '@rollup/rollup-linux-arm64-gnu': 4.39.0 3529 | '@rollup/rollup-linux-arm64-musl': 4.39.0 3530 | '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 3531 | '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 3532 | '@rollup/rollup-linux-riscv64-gnu': 4.39.0 3533 | '@rollup/rollup-linux-riscv64-musl': 4.39.0 3534 | '@rollup/rollup-linux-s390x-gnu': 4.39.0 3535 | '@rollup/rollup-linux-x64-gnu': 4.39.0 3536 | '@rollup/rollup-linux-x64-musl': 4.39.0 3537 | '@rollup/rollup-win32-arm64-msvc': 4.39.0 3538 | '@rollup/rollup-win32-ia32-msvc': 4.39.0 3539 | '@rollup/rollup-win32-x64-msvc': 4.39.0 3540 | fsevents: 2.3.3 3541 | 3542 | rough-object-size@1.0.1: {} 3543 | 3544 | rxjs@7.8.1: 3545 | dependencies: 3546 | tslib: 2.8.1 3547 | 3548 | safe-buffer@5.2.1: {} 3549 | 3550 | safe-execa@0.1.2: 3551 | dependencies: 3552 | '@zkochan/which': 2.0.3 3553 | execa: 5.1.1 3554 | path-name: 1.0.0 3555 | 3556 | safer-buffer@2.1.2: {} 3557 | 3558 | semver@7.6.3: {} 3559 | 3560 | semver@7.7.1: {} 3561 | 3562 | serialize-error@8.1.0: 3563 | dependencies: 3564 | type-fest: 0.20.2 3565 | 3566 | shebang-command@2.0.0: 3567 | dependencies: 3568 | shebang-regex: 3.0.0 3569 | 3570 | shebang-regex@3.0.0: {} 3571 | 3572 | siginfo@2.0.0: {} 3573 | 3574 | signal-exit@3.0.7: {} 3575 | 3576 | signal-exit@4.1.0: {} 3577 | 3578 | simple-update-notifier@2.0.0: 3579 | dependencies: 3580 | semver: 7.6.3 3581 | 3582 | slice-ansi@3.0.0: 3583 | dependencies: 3584 | ansi-styles: 4.3.0 3585 | astral-regex: 2.0.0 3586 | is-fullwidth-code-point: 3.0.0 3587 | 3588 | sort-keys@4.2.0: 3589 | dependencies: 3590 | is-plain-obj: 2.1.0 3591 | 3592 | source-map-js@1.2.1: {} 3593 | 3594 | source-map@0.6.1: {} 3595 | 3596 | split2@3.2.2: 3597 | dependencies: 3598 | readable-stream: 3.6.2 3599 | 3600 | sshpk@1.17.0: 3601 | dependencies: 3602 | asn1: 0.2.6 3603 | assert-plus: 1.0.0 3604 | bcrypt-pbkdf: 1.0.2 3605 | dashdash: 1.14.1 3606 | ecc-jsbn: 0.1.2 3607 | getpass: 0.1.7 3608 | jsbn: 0.1.1 3609 | safer-buffer: 2.1.2 3610 | tweetnacl: 0.14.5 3611 | 3612 | ssri@10.0.5: 3613 | dependencies: 3614 | minipass: 7.1.2 3615 | 3616 | stackback@0.0.2: {} 3617 | 3618 | stacktracey@2.1.8: 3619 | dependencies: 3620 | as-table: 1.0.55 3621 | get-source: 2.0.12 3622 | 3623 | std-env@3.8.1: {} 3624 | 3625 | stealthy-require@1.1.1: {} 3626 | 3627 | string-length@4.0.2: 3628 | dependencies: 3629 | char-regex: 1.0.2 3630 | strip-ansi: 6.0.1 3631 | 3632 | string-width@4.2.3: 3633 | dependencies: 3634 | emoji-regex: 8.0.0 3635 | is-fullwidth-code-point: 3.0.0 3636 | strip-ansi: 6.0.1 3637 | 3638 | string-width@5.1.2: 3639 | dependencies: 3640 | eastasianwidth: 0.2.0 3641 | emoji-regex: 9.2.2 3642 | strip-ansi: 7.1.0 3643 | 3644 | string_decoder@1.3.0: 3645 | dependencies: 3646 | safe-buffer: 5.2.1 3647 | 3648 | strip-ansi@6.0.1: 3649 | dependencies: 3650 | ansi-regex: 5.0.1 3651 | 3652 | strip-ansi@7.1.0: 3653 | dependencies: 3654 | ansi-regex: 6.1.0 3655 | 3656 | strip-bom@4.0.0: {} 3657 | 3658 | strip-comments-strings@1.2.0: {} 3659 | 3660 | strip-final-newline@2.0.0: {} 3661 | 3662 | strip-json-comments@3.1.1: {} 3663 | 3664 | supports-color@5.5.0: 3665 | dependencies: 3666 | has-flag: 3.0.0 3667 | 3668 | supports-color@7.2.0: 3669 | dependencies: 3670 | has-flag: 4.0.0 3671 | 3672 | through2@4.0.2: 3673 | dependencies: 3674 | readable-stream: 3.6.2 3675 | 3676 | tinybench@2.9.0: {} 3677 | 3678 | tinyexec@0.3.2: {} 3679 | 3680 | tinyglobby@0.2.12: 3681 | dependencies: 3682 | fdir: 6.4.3(picomatch@4.0.2) 3683 | picomatch: 4.0.2 3684 | 3685 | tinypool@1.0.2: {} 3686 | 3687 | tinyrainbow@2.0.0: {} 3688 | 3689 | tinyspy@3.0.2: {} 3690 | 3691 | to-regex-range@5.0.1: 3692 | dependencies: 3693 | is-number: 7.0.0 3694 | 3695 | touch@3.1.1: {} 3696 | 3697 | tough-cookie@2.5.0: 3698 | dependencies: 3699 | psl: 1.9.0 3700 | punycode: 2.3.1 3701 | 3702 | tslib@2.8.1: {} 3703 | 3704 | tunnel-agent@0.6.0: 3705 | dependencies: 3706 | safe-buffer: 5.2.1 3707 | 3708 | tweetnacl@0.14.5: {} 3709 | 3710 | type-check@0.4.0: 3711 | dependencies: 3712 | prelude-ls: 1.2.1 3713 | 3714 | type-fest@0.20.2: {} 3715 | 3716 | type-fest@0.6.0: {} 3717 | 3718 | undefsafe@2.0.5: {} 3719 | 3720 | undici-types@6.20.0: {} 3721 | 3722 | unique-string@2.0.0: 3723 | dependencies: 3724 | crypto-random-string: 2.0.0 3725 | 3726 | universalify@2.0.1: {} 3727 | 3728 | uri-js@4.4.1: 3729 | dependencies: 3730 | punycode: 2.3.1 3731 | 3732 | util-deprecate@1.0.2: {} 3733 | 3734 | uuid@3.4.0: {} 3735 | 3736 | validate-npm-package-name@5.0.0: 3737 | dependencies: 3738 | builtins: 5.1.0 3739 | 3740 | verror@1.10.0: 3741 | dependencies: 3742 | assert-plus: 1.0.0 3743 | core-util-is: 1.0.2 3744 | extsprintf: 1.3.0 3745 | 3746 | vite-node@3.1.1(@types/node@22.10.2): 3747 | dependencies: 3748 | cac: 6.7.14 3749 | debug: 4.4.0(supports-color@5.5.0) 3750 | es-module-lexer: 1.6.0 3751 | pathe: 2.0.3 3752 | vite: 5.4.16(@types/node@22.10.2) 3753 | transitivePeerDependencies: 3754 | - '@types/node' 3755 | - less 3756 | - lightningcss 3757 | - sass 3758 | - sass-embedded 3759 | - stylus 3760 | - sugarss 3761 | - supports-color 3762 | - terser 3763 | 3764 | vite@5.4.16(@types/node@22.10.2): 3765 | dependencies: 3766 | esbuild: 0.21.5 3767 | postcss: 8.5.3 3768 | rollup: 4.39.0 3769 | optionalDependencies: 3770 | '@types/node': 22.10.2 3771 | fsevents: 2.3.3 3772 | 3773 | vitest@3.1.1(@types/node@22.10.2): 3774 | dependencies: 3775 | '@vitest/expect': 3.1.1 3776 | '@vitest/mocker': 3.1.1(vite@5.4.16(@types/node@22.10.2)) 3777 | '@vitest/pretty-format': 3.1.1 3778 | '@vitest/runner': 3.1.1 3779 | '@vitest/snapshot': 3.1.1 3780 | '@vitest/spy': 3.1.1 3781 | '@vitest/utils': 3.1.1 3782 | chai: 5.2.0 3783 | debug: 4.4.0(supports-color@5.5.0) 3784 | expect-type: 1.2.1 3785 | magic-string: 0.30.17 3786 | pathe: 2.0.3 3787 | std-env: 3.8.1 3788 | tinybench: 2.9.0 3789 | tinyexec: 0.3.2 3790 | tinypool: 1.0.2 3791 | tinyrainbow: 2.0.0 3792 | vite: 5.4.16(@types/node@22.10.2) 3793 | vite-node: 3.1.1(@types/node@22.10.2) 3794 | why-is-node-running: 2.3.0 3795 | optionalDependencies: 3796 | '@types/node': 22.10.2 3797 | transitivePeerDependencies: 3798 | - less 3799 | - lightningcss 3800 | - msw 3801 | - sass 3802 | - sass-embedded 3803 | - stylus 3804 | - sugarss 3805 | - supports-color 3806 | - terser 3807 | 3808 | wcwidth@1.0.1: 3809 | dependencies: 3810 | defaults: 1.0.4 3811 | 3812 | which@2.0.2: 3813 | dependencies: 3814 | isexe: 2.0.0 3815 | 3816 | why-is-node-running@2.3.0: 3817 | dependencies: 3818 | siginfo: 2.0.0 3819 | stackback: 0.0.2 3820 | 3821 | widest-line@3.1.0: 3822 | dependencies: 3823 | string-width: 4.2.3 3824 | 3825 | word-wrap@1.2.5: {} 3826 | 3827 | wrap-ansi@7.0.0: 3828 | dependencies: 3829 | ansi-styles: 4.3.0 3830 | string-width: 4.2.3 3831 | strip-ansi: 6.0.1 3832 | 3833 | wrap-ansi@8.1.0: 3834 | dependencies: 3835 | ansi-styles: 6.2.1 3836 | string-width: 5.1.2 3837 | strip-ansi: 7.1.0 3838 | 3839 | write-file-atomic@5.0.1: 3840 | dependencies: 3841 | imurmurhash: 0.1.4 3842 | signal-exit: 4.1.0 3843 | 3844 | write-yaml-file@5.0.0: 3845 | dependencies: 3846 | js-yaml: 4.1.0 3847 | write-file-atomic: 5.0.1 3848 | 3849 | yaml@2.7.1: {} 3850 | 3851 | yocto-queue@0.1.0: {} 3852 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "packages/*" 3 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import path from 'path'; 3 | import fs from 'fs'; 4 | import fse from 'fs-extra'; 5 | import readDirSync from 'fs-readdir-recursive'; 6 | import * as lockfile from '@pnpm/lockfile.fs'; 7 | import * as pruneLockfile from '@pnpm/lockfile.pruner'; 8 | import { globSync } from 'glob'; 9 | import { getParams } from './params.js'; 10 | import YAML from 'yaml'; 11 | 12 | async function start() { 13 | const { 14 | rootDir, 15 | disableRootConfig, 16 | rootPackageJson, 17 | outputFolder, 18 | workspaceData, 19 | prodWorkspaces, 20 | relatedWorkspaces, 21 | projectWorkspaces, 22 | pnpmLockFile, 23 | srcLessDisable, 24 | srcLessSubDev, 25 | srcLessGlob, 26 | srcLessProdDisable, 27 | srcLessProdGlob, 28 | jsonFileDisable, 29 | jsonFileProdDisable, 30 | srcFilesEnable, 31 | srcFilesIncludeGlob, 32 | srcFilesExcludeGlob, 33 | workspacesExcludeGlob, 34 | includeRootDeps, 35 | isolateFolder, 36 | workspacesFolder, 37 | srcLessFolder, 38 | srcLessFolderProd, 39 | } = await getParams(); 40 | 41 | const ignorePatterns = ['.', 'package.json', 'node_modules', outputFolder]; 42 | 43 | function createDestinationFolders() { 44 | if (fs.existsSync(isolateFolder)) fs.rmSync(isolateFolder, { recursive: true }); 45 | fs.mkdirSync(workspacesFolder, { recursive: true }); 46 | if (srcFilesExcludeGlob) { 47 | const files = globSync(srcFilesExcludeGlob, { cwd: workspaceData.location, absolute: true, ignore: ignorePatterns }); 48 | const filesToCopy = readDirSync( 49 | workspaceData.location, 50 | (name, i, dir) => !ignorePatterns.includes(name) && !files.includes(`${dir}/${name}`), 51 | ); 52 | filesToCopy.forEach(file => 53 | fse.copySync(path.join(workspaceData.location, file), path.join(isolateFolder, file), { preserveTimestamps: true }), 54 | ); 55 | } else if (srcFilesIncludeGlob) { 56 | const files = globSync(srcFilesIncludeGlob, { cwd: workspaceData.location, absolute: true, ignore: ignorePatterns }); 57 | files.forEach(file => 58 | fse.copySync(file, path.join(isolateFolder, path.relative(workspaceData.location, file)), { preserveTimestamps: true }), 59 | ); 60 | } else if (srcFilesEnable) { 61 | const filesToCopy = readDirSync(workspaceData.location, name => !ignorePatterns.includes(name)); 62 | filesToCopy.forEach(file => 63 | fse.copySync(path.join(workspaceData.location, file), path.join(isolateFolder, file), { preserveTimestamps: true }), 64 | ); 65 | } 66 | } 67 | 68 | function resolveWorkspacesNewLocation() { 69 | relatedWorkspaces.forEach(name => { 70 | const subWorkspace = projectWorkspaces[name]; 71 | const relativePath = path.relative(rootDir, subWorkspace.location); 72 | subWorkspace.newLocation = path.join(workspacesFolder, relativePath); 73 | 74 | subWorkspace.pkgJsonLocation = path.join(subWorkspace.newLocation, 'package.json'); 75 | fs.mkdirSync(subWorkspace.newLocation, { recursive: true }); 76 | 77 | if (!srcLessSubDev) subWorkspace.pkgJson.devDependencies = {}; 78 | fs.writeFileSync(subWorkspace.pkgJsonLocation, JSON.stringify(subWorkspace.pkgJson, null, 2)); 79 | 80 | 81 | const files = workspacesExcludeGlob && workspacesExcludeGlob.length > 0 82 | ? globSync(workspacesExcludeGlob, { cwd: subWorkspace.location, absolute: true, ignore: ignorePatterns }) 83 | : []; 84 | 85 | const filesToCopy = readDirSync( 86 | subWorkspace.location, 87 | (name, i, dir) => !ignorePatterns.includes(name) && !files.includes(`${dir}/${name}`), 88 | ); 89 | 90 | filesToCopy.forEach(file => 91 | fse.copySync(path.join(subWorkspace.location, file), path.join(subWorkspace.newLocation, file), { 92 | preserveTimestamps: true, 93 | }), 94 | ); 95 | }); 96 | } 97 | 98 | function copySrcLessToNewLocation() { 99 | if (!srcLessDisable) { 100 | fs.mkdirSync(srcLessFolder, { recursive: true }); 101 | relatedWorkspaces.forEach(name => { 102 | const subWorkspace = projectWorkspaces[name]; 103 | const relativePath = path.relative(rootDir, subWorkspace.location); 104 | const subWorkspaceSrcLessFolder = path.join(srcLessFolder, relativePath); 105 | fs.mkdirSync(subWorkspaceSrcLessFolder, { recursive: true }); 106 | 107 | fs.writeFileSync(path.join(subWorkspaceSrcLessFolder, 'package.json'), JSON.stringify(subWorkspace.pkgJson, null, 2), { 108 | flag: 'wx', 109 | }); 110 | if (srcLessGlob) { 111 | 112 | const files = globSync(srcLessGlob, { cwd: subWorkspace.location, absolute: true, ignore: ignorePatterns }); 113 | 114 | files.forEach(file => 115 | fse.copySync(file, path.join(subWorkspaceSrcLessFolder, path.relative(subWorkspace.location, file)), { 116 | preserveTimestamps: true, 117 | }), 118 | ); 119 | } 120 | }); 121 | } 122 | } 123 | 124 | function copySrcLessProdToNewLocation() { 125 | if (!srcLessProdDisable) { 126 | fs.mkdirSync(srcLessFolderProd, { recursive: true }); 127 | prodWorkspaces.forEach(name => { 128 | const subWorkspace = projectWorkspaces[name]; 129 | const relativePath = path.relative(rootDir, subWorkspace.location); 130 | const subWorkspaceSrcLessProdFolder = path.join(srcLessFolderProd, relativePath); 131 | fs.mkdirSync(subWorkspaceSrcLessProdFolder, { recursive: true }); 132 | 133 | fs.writeFileSync(path.join(subWorkspaceSrcLessProdFolder, 'package.json'), JSON.stringify(subWorkspace.pkgJson, null, 2), { 134 | flag: 'wx', 135 | }); 136 | 137 | if (srcLessProdGlob) { 138 | const files = globSync(srcLessProdGlob, { cwd: subWorkspace.location, absolute: true, ignore: ignorePatterns }); 139 | 140 | files.forEach(file => 141 | fse.copySync(file, path.join(subWorkspaceSrcLessProdFolder, path.relative(subWorkspace.location, file)), { 142 | preserveTimestamps: true, 143 | }), 144 | ); 145 | } 146 | }); 147 | } 148 | } 149 | 150 | function createMainJsonFile() { 151 | let currentDevDependencies = {}; 152 | 153 | currentDevDependencies = JSON.parse(JSON.stringify(workspaceData.pkgJson.devDependencies || {})); 154 | 155 | if (includeRootDeps) { 156 | currentDevDependencies = { 157 | ...rootPackageJson.devDependencies, 158 | ...currentDevDependencies, 159 | }; 160 | } 161 | 162 | if (!disableRootConfig && rootPackageJson.pnpm) { 163 | workspaceData.pkgJson.pnpm = rootPackageJson.pnpm; 164 | } 165 | 166 | if (includeRootDeps) { 167 | workspaceData.pkgJson.dependencies = { 168 | ...rootPackageJson.dependencies, 169 | ...workspaceData.pkgJson.dependencies, 170 | }; 171 | } 172 | 173 | if (!jsonFileProdDisable) { 174 | workspaceData.pkgJson.devDependencies = {}; 175 | fs.writeFileSync(path.join(isolateFolder, 'package-prod.json'), JSON.stringify(workspaceData.pkgJson, null, 2)); 176 | } 177 | 178 | workspaceData.pkgJson.devDependencies = currentDevDependencies; 179 | if (!jsonFileDisable) { 180 | fs.writeFileSync(path.join(isolateFolder, 'package.json'), JSON.stringify(workspaceData.pkgJson, null, 2)); 181 | } 182 | } 183 | 184 | function createWorkspaceYaml() { 185 | const file = fs.readFileSync(path.join(rootDir, 'pnpm-workspace.yaml'), 'utf8'); 186 | const workspaceYamlFile = YAML.parse(file); 187 | 188 | workspaceYamlFile.packages = relatedWorkspaces.map(name => projectWorkspaces[name].resolvePath); 189 | 190 | fs.writeFileSync(path.join(isolateFolder, 'pnpm-workspace.yaml'), YAML.stringify(workspaceYamlFile)); 191 | } 192 | 193 | async function createPnpmLock() { 194 | if (!pnpmLockFile) return; 195 | 196 | if (!fs.existsSync(path.join(rootDir, 'pnpm-lock.yaml'))) { 197 | console.warn('no pnpm-lock.yaml file on project root'); 198 | return; 199 | } 200 | 201 | const importersNames = relatedWorkspaces.map(name => projectWorkspaces[name].relativePath); 202 | 203 | let lfData = await lockfile.readWantedLockfile(rootDir, 'utf8'); 204 | 205 | Object.keys(lfData.importers).forEach(key => { 206 | if (!importersNames.includes(key) && key !== workspaceData.relativePath && key !== '.') delete lfData.importers[key]; 207 | }); 208 | 209 | const targetWorkspace = JSON.parse(JSON.stringify(lfData.importers[workspaceData.relativePath])); 210 | 211 | lfData.importers['.'] = { 212 | specifiers: { 213 | ...(includeRootDeps && lfData.importers['.'].specifiers ? lfData.importers['.'].specifiers : {}), 214 | ...(targetWorkspace.specifiers || {}), 215 | }, 216 | dependencies: { 217 | ...(includeRootDeps && lfData.importers['.'].dependencies ? lfData.importers['.'].dependencies : {}), 218 | ...(targetWorkspace.dependencies || {}), 219 | }, 220 | devDependencies: { 221 | ...(includeRootDeps && lfData.importers['.'].devDependencies ? lfData.importers['.'].devDependencies : {}), 222 | ...(targetWorkspace.devDependencies || {}), 223 | }, 224 | }; 225 | delete lfData.importers[workspaceData.relativePath]; 226 | 227 | if (lfData.importers['.'].dependencies) { 228 | Object.keys(lfData.importers['.'].dependencies).forEach(depName => { 229 | if (relatedWorkspaces.includes(depName)) { 230 | lfData.importers['.'].dependencies[depName] = `link:${projectWorkspaces[depName].resolvePath}`; 231 | } 232 | }); 233 | } 234 | 235 | if (lfData.importers['.'].devDependencies) { 236 | Object.keys(lfData.importers['.'].devDependencies).forEach(depName => { 237 | if (relatedWorkspaces.includes(depName)) { 238 | lfData.importers['.'].devDependencies[depName] = `link:${projectWorkspaces[depName].resolvePath}`; 239 | } 240 | }); 241 | } 242 | 243 | Object.keys(lfData.importers) 244 | .filter(n => n !== '.') 245 | .forEach(currentKey => { 246 | const workspaceName = relatedWorkspaces.find(name => projectWorkspaces[name].relativePath === currentKey); 247 | const key = `workspaces/${currentKey}`; 248 | lfData.importers[key] = lfData.importers[currentKey]; 249 | delete lfData.importers[currentKey]; 250 | if (lfData.importers[key].dependencies) { 251 | Object.keys(lfData.importers[key].dependencies).forEach(depName => { 252 | if (relatedWorkspaces.includes(depName)) { 253 | lfData.importers[key].dependencies[depName] = `link:${path.relative( 254 | projectWorkspaces[workspaceName].newLocation, 255 | projectWorkspaces[depName].newLocation, 256 | )}`; 257 | } 258 | }); 259 | } 260 | 261 | if (lfData.importers[key].devDependencies) { 262 | if (!srcLessSubDev) { 263 | Object.keys(lfData.importers[key].devDependencies).forEach(depName => { 264 | delete lfData.importers[key].specifiers[depName]; 265 | }); 266 | lfData.importers[key].devDependencies = {}; 267 | } else { 268 | Object.keys(lfData.importers[key].devDependencies).forEach(depName => { 269 | if (relatedWorkspaces.includes(depName)) { 270 | lfData.importers[key].devDependencies[depName] = `link:${path.relative( 271 | projectWorkspaces[workspaceName].newLocation, 272 | projectWorkspaces[depName].newLocation, 273 | )}`; 274 | } 275 | }); 276 | } 277 | } 278 | }); 279 | 280 | const prunedLockFile = await pruneLockfile.pruneSharedLockfile(lfData); 281 | await lockfile.writeWantedLockfile(isolateFolder, prunedLockFile); 282 | } 283 | 284 | createDestinationFolders(); 285 | resolveWorkspacesNewLocation(); 286 | copySrcLessToNewLocation(); 287 | copySrcLessProdToNewLocation(); 288 | createMainJsonFile(); 289 | createWorkspaceYaml(); 290 | await createPnpmLock(); 291 | } 292 | 293 | start(); 294 | -------------------------------------------------------------------------------- /src/params.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import fs from 'fs'; 3 | import yaml from 'yaml'; 4 | import { findWorkspacePackages } from '@pnpm/workspace.find-packages'; 5 | 6 | async function getWorkspacePatterns(workspaceRoot) { 7 | const workspaceFilePath = path.join(workspaceRoot, 'pnpm-workspace.yaml'); 8 | try { 9 | const fileContent = fs.readFileSync(workspaceFilePath, { encoding: 'utf-8' }); 10 | const { packages } = yaml.parse(fileContent); 11 | if (!packages || !Array.isArray(packages)) { 12 | console.warn(`No "packages" field found in ${workspaceFilePath}`); 13 | return undefined; 14 | } 15 | return packages; 16 | } catch (err) { 17 | if (err.code === 'ENOENT') { 18 | console.warn(`File ${workspaceFilePath} not found.`); 19 | return undefined; 20 | } 21 | throw err; 22 | } 23 | } 24 | 25 | async function getWorkspaces(workspaceRoot) { 26 | const patterns = await getWorkspacePatterns(workspaceRoot); 27 | const workspaces = await findWorkspacePackages(workspaceRoot, { patterns }); 28 | return workspaces.reduce((acc, { rootDir, manifest: { name } }) => { 29 | acc[name] = { 30 | location: rootDir, 31 | }; 32 | return acc; 33 | }, {}); 34 | } 35 | 36 | export async function getParams() { 37 | let [, , ...cliParams] = process.argv; 38 | 39 | function getParam(name, value = false) { 40 | const p = cliParams.find(p => p.includes(name)); 41 | cliParams = cliParams.filter(p => !p.includes(name)); 42 | if (value) return p ? p.split('=')[1] : false; 43 | return Boolean(p); 44 | } 45 | 46 | if (getParam('--help')) printHelp(); 47 | 48 | const pnpmrcDisable = getParam('--pnpmrc-disable'); 49 | const pnpmLockFile = !getParam('--pnpm-lock-file'); 50 | const srcLessDisable = getParam('--src-less-disable'); 51 | const srcLessSubDev = getParam('--src-less-sub-dev-deps'); 52 | const includeRootDeps = getParam('--include-root-deps'); 53 | const srcLessGlob = getParam('--src-less-glob', true); 54 | const srcLessProdDisable = getParam('--src-less-prod-disable'); 55 | const srcLessProdGlob = getParam('--src-less-prod-glob', true); 56 | const jsonFileDisable = getParam('--json-file-disable'); 57 | const jsonFileProdDisable = getParam('--json-file-prod-disable'); 58 | const outputFolder = getParam('--output-folder', true) || '_isolated_'; 59 | const srcFilesEnable = getParam('--src-files-enable'); 60 | const srcFilesPackageJson = getParam('--src-files-package-json'); 61 | const srcFilesIncludeGlob = getParam('--src-files-include-glob', true); 62 | const srcFilesExcludeGlob = getParam('--src-files-exclude-glob', true); 63 | const workspacesExcludeGlob = getParam('--workspaces-exclude-glob', true); 64 | const disableRootConfig = getParam('--disable-root-config'); 65 | const projectRoot = getParam('--project-folder', true) || path.resolve(); 66 | let max = getParam('--max-depth', true) || 5; 67 | 68 | const getWorkspacesRoot = dir => { 69 | const pkg = path.join(dir, 'pnpm-workspace.yaml'); 70 | let found = false; 71 | if (fs.existsSync(pkg)) found = true; 72 | if (found) return dir; 73 | if (max === 0) { 74 | console.log('no workspace project found'); 75 | process.exit(1); 76 | } 77 | max--; 78 | return getWorkspacesRoot(path.join(dir, '../')); 79 | }; 80 | 81 | const rootDir = getWorkspacesRoot(projectRoot); 82 | const rootPackageJson = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8')); 83 | const projectWorkspaces = await getWorkspaces(rootDir); 84 | 85 | const workspaceName = (function getWorkspaceName() { 86 | let [targetWorkspaceName] = cliParams; 87 | if (targetWorkspaceName) { 88 | if (projectWorkspaces[targetWorkspaceName]) return targetWorkspaceName; 89 | } else { 90 | targetWorkspaceName = '.'; 91 | } 92 | if (targetWorkspaceName[0] === '.') { 93 | targetWorkspaceName = path.resolve(projectRoot, targetWorkspaceName); 94 | } 95 | 96 | let workspaceName = Object.keys(projectWorkspaces).find( 97 | workspace => projectWorkspaces[workspace].location === targetWorkspaceName, 98 | ); 99 | if (workspaceName) return workspaceName; 100 | 101 | console.log(`no such workspace or folder: ${targetWorkspaceName}`); 102 | process.exit(1); 103 | })(); 104 | 105 | for (let key in projectWorkspaces) { 106 | projectWorkspaces[key].relativePath = path.relative(rootDir, projectWorkspaces[key].location); 107 | projectWorkspaces[key].resolvePath = path.join('workspaces', projectWorkspaces[key].relativePath); 108 | projectWorkspaces[key].pkgJsonLocation = path.join(projectWorkspaces[key].location, 'package.json'); 109 | projectWorkspaces[key].pkgJson = JSON.parse(fs.readFileSync(projectWorkspaces[key].pkgJsonLocation)); 110 | if (projectWorkspaces[key].pkgJson.dependencies && projectWorkspaces[key].pkgJson.dependencies[workspaceName]) 111 | delete projectWorkspaces[key].pkgJson.dependencies[workspaceName]; 112 | if (projectWorkspaces[key].pkgJson.devDependencies && projectWorkspaces[key].pkgJson.devDependencies[workspaceName]) 113 | delete projectWorkspaces[key].pkgJson.devDependencies[workspaceName]; 114 | if (srcFilesPackageJson) projectWorkspaces[key].includeFiles = projectWorkspaces[key].pkgJson.files || []; 115 | } 116 | 117 | const workspaceData = projectWorkspaces[workspaceName]; 118 | 119 | const prodWorkspaces = (function getProdWorkspaces() { 120 | const list = []; 121 | const recursive = (dependencies = {}) => { 122 | Object.keys(dependencies).forEach(depName => { 123 | if (projectWorkspaces[depName] && !list.includes(depName)) { 124 | list.push(depName); 125 | recursive(projectWorkspaces[depName].pkgJson.dependencies); 126 | } 127 | }); 128 | }; 129 | recursive(workspaceData.pkgJson.dependencies); 130 | return list; 131 | })(); 132 | 133 | const devWorkspaces = (function getDevWorkspaces(prodWorkspaces) { 134 | const list = []; 135 | const recursive = (dependencies = {}) => { 136 | Object.keys(dependencies).forEach(depName => { 137 | if (projectWorkspaces[depName] && !list.includes(depName)) { 138 | list.push(depName); 139 | if (srcLessSubDev) { 140 | recursive({ 141 | ...projectWorkspaces[depName].pkgJson.dependencies, 142 | ...projectWorkspaces[depName].pkgJson.devDependencies, 143 | }); 144 | } else { 145 | recursive(projectWorkspaces[depName].pkgJson.dependencies); 146 | } 147 | } 148 | }); 149 | }; 150 | recursive({ ...workspaceData.pkgJson.dependencies, ...workspaceData.pkgJson.devDependencies }); 151 | return list.filter(w => !prodWorkspaces.includes(w)); 152 | })(prodWorkspaces); 153 | 154 | const relatedWorkspaces = [...prodWorkspaces, ...devWorkspaces]; 155 | 156 | let isolateFolder = `${workspaceData.location}/${outputFolder}`; 157 | let workspacesFolder = `${isolateFolder}/workspaces/`; 158 | let srcLessFolder = `${isolateFolder}/workspaces-src-less/`; 159 | let srcLessFolderProd = `${isolateFolder}/workspaces-src-less-prod/`; 160 | 161 | function printHelp() { 162 | console.log(` 163 | isolating workspace in pnpm workspace project 164 | use: 165 | # pnpm-isolate [options] [workspace name to isolate] 166 | # pnpm-isolate [options] // from a workspace folder 167 | // pnpm files 168 | * [--pnpmrc-disable] disable copy .npmrc file 169 | [--pnpm-lock-file] disable generate pnpm-lock.yaml file 170 | // src-less folder 171 | [--src-less-disable] disable create of the src-less folders 172 | [--src-less-glob={value}] extra files to copy to src-less folder 173 | [--src-less-sub-dev-deps] include sub workspaces dev dependencies (if sub workspaces need to be build as well) 174 | // src-less-prod folder 175 | [--src-less-prod-disable] disable create the prod src-less folder 176 | [--src-less-prod-glob={value}] extra files to copy to src-less folder 177 | // main workspace 178 | [--json-file-disable] disable create json file 179 | [--json-file-prod-disable] disable create json prod json file (without dev-dependencies) 180 | [--output-folder] folder to create all generated files (default to _isolated_) 181 | [--include-root-deps] include root workspaces package.json dependencies and dev dependencies 182 | [--disable-root-config] disable root package.json pnpm config (like overrides) 183 | // files 184 | [--src-files-enable] copy all src file of main workspace to isolate folder 185 | [--src-files-exclude-glob={value}] copy src file of main workspace by glob 186 | [--src-files-include-glob={value}] copy src file of main workspace by glob 187 | [--workspaces-exclude-glob={value}] exclude glob when copy workspaces (default: node_modules and selected output-folder) 188 | // workspaces folder configuration 189 | [--max-depth] by default we search recursively project-root 5 folder 190 | [--project-folder={value}] absolute path to project-root (default will look for the root) 191 | `); 192 | process.exit(0); 193 | } 194 | 195 | return { 196 | rootDir, 197 | rootPackageJson, 198 | workspaceName, 199 | workspaceData, 200 | prodWorkspaces, 201 | devWorkspaces, 202 | relatedWorkspaces, 203 | projectWorkspaces, 204 | pnpmrcDisable, 205 | pnpmLockFile, 206 | srcLessDisable, 207 | srcLessGlob, 208 | srcLessProdDisable, 209 | srcLessProdGlob, 210 | srcLessSubDev, 211 | jsonFileDisable, 212 | jsonFileProdDisable, 213 | outputFolder, 214 | srcFilesEnable, 215 | srcFilesPackageJson, 216 | srcFilesIncludeGlob, 217 | srcFilesExcludeGlob, 218 | workspacesExcludeGlob, 219 | isolateFolder, 220 | workspacesFolder, 221 | srcLessFolder, 222 | srcLessFolderProd, 223 | includeRootDeps, 224 | disableRootConfig, 225 | }; 226 | } 227 | -------------------------------------------------------------------------------- /vitest.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config'; 2 | 3 | export default defineConfig({ 4 | test: { 5 | environment: 'node', 6 | include: ['**/__tests__/**/*.test.js'], 7 | globals: true, 8 | } 9 | }); --------------------------------------------------------------------------------