├── .editorconfig ├── .github └── workflows │ ├── ci-bun.yml │ └── ci-node.yml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── configs ├── husky │ ├── .gitignore │ ├── bun │ │ └── pre-commit │ └── node │ │ └── pre-commit ├── lint-staged.cjs ├── prettier.js └── tsconfig.json ├── package-lock.json ├── package.json ├── src ├── bin.ts ├── index.spec.ts └── index.ts ├── tsconfig.build.json └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_size = 2 7 | indent_style = space 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | -------------------------------------------------------------------------------- /.github/workflows/ci-bun.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | - push 4 | - pull_request 5 | jobs: 6 | test: 7 | env: 8 | BIN_EXEC: bun 9 | name: Bun.js 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: oven-sh/setup-bun@v1 14 | - run: bun install 15 | - run: bun run check 16 | - run: bun test --coverage 17 | - run: bun run build 18 | - uses: codecov/codecov-action@v1 19 | with: 20 | name: Bun.js 21 | -------------------------------------------------------------------------------- /.github/workflows/ci-node.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | - push 4 | - pull_request 5 | jobs: 6 | test: 7 | name: Node.js ${{ matrix.node-version }} 8 | runs-on: ubuntu-latest 9 | strategy: 10 | matrix: 11 | node-version: 12 | - "16" 13 | - "*" 14 | steps: 15 | - uses: actions/checkout@v3 16 | - uses: actions/setup-node@v1 17 | with: 18 | node-version: ${{ matrix.node-version }} 19 | - uses: actions/cache@v2 20 | with: 21 | path: ~/.npm 22 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 23 | restore-keys: | 24 | ${{ runner.os }}-node- 25 | - run: npm ci 26 | - run: npm run check 27 | - run: npm run specs --coverage 28 | - run: npm run build 29 | - uses: codecov/codecov-action@v1 30 | with: 31 | name: Node.js ${{ matrix.node-version }} 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | coverage/ 3 | .DS_Store 4 | npm-debug.log 5 | dist/ 6 | dist.es2015/ 7 | bun.lockb 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Blake Embrey (hello@blakeembrey.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TS Scripts 2 | 3 | [![NPM version][npm-image]][npm-url] 4 | [![NPM downloads][downloads-image]][downloads-url] 5 | [![Node build status][node-build-image]][node-build-url] 6 | [![Bun build status][bun-build-image]][bun-build-url] 7 | 8 | > Simple, mostly opinionated, scripts to build TypeScript modules. 9 | 10 | ## Installation 11 | 12 | ```sh 13 | npm install @borderless/ts-scripts --save-dev 14 | ``` 15 | 16 | ## Usage 17 | 18 | In your `package.json` you can use the scripts: 19 | 20 | ```json 21 | { 22 | "scripts": { 23 | "format": "ts-scripts format", 24 | "specs": "ts-scripts specs", 25 | "test": "ts-scripts test", // Runs `check`, `specs --coverage`, `build`. 26 | "build": "ts-scripts build", 27 | "prepublishOnly": "npm run build", 28 | "prepare": "ts-scripts install" 29 | } 30 | } 31 | ``` 32 | 33 | You will also need to install `typescript` for building and `vitest` for specs. 34 | 35 | **Note:** If using `bun`, you don't need `vitest`. You can use `bun test` instead. 36 | 37 | ### Batteries Included 38 | 39 | - `install` - Installs `husky` and `lint-staged` for git commit hooks 40 | - `format` - Uses `prettier --write` on all supported files in `src` and the root directory 41 | - `specs` - Uses `vitest` to run test files match `*.{test,spec}.*` files 42 | - `--watch ` Runs vitest in watch mode on the config at `` 43 | - `--update` Updates the snapshot files 44 | - `--changed` Runs tests on only changed files 45 | - `--since ` Runs tests on files changed since `` 46 | - `--test-pattern` Runs tests matching the specified pattern 47 | - `build` - Uses `rimraf` and `tsc` 48 | - `check` - Uses `prettier --check` and `tsc` on each test "project" 49 | - `test` - Runs `check`, `specs`, and `build` 50 | 51 | ### Configuration 52 | 53 | Configuration can get specified in your `package.json` file under `ts-scripts`: 54 | 55 | - `src` - An array of source file directories (default: `["src"]`) 56 | - `ignore` - An array of patterns to ignore (default: `[]`) 57 | - `dist` - An array of output directories to clean before `build` (default: `["dist"]`) 58 | - `project` An array of TSConfig files to build using TypeScript (default: `["tsconfig.json"]`) 59 | - `checkProject` An array of TSConfig files to type check using TypeScript (default: `["tsconfig.json"]`) 60 | - `test` An array of test configuration objects (default: `[{}]`) 61 | - `dir` The directory to read tests from (default: `undefined`, root directory) 62 | - `config` The configuration file to use for this test (default: `undefined`, discovered by `vitest`) 63 | 64 | Specific configuration can be disabled for customized configuration by setting `src`, `dist`, `project`, or `test` to an empty array. 65 | 66 | ## License 67 | 68 | MIT 69 | 70 | [npm-image]: https://img.shields.io/npm/v/@borderless/ts-scripts 71 | [npm-url]: https://npmjs.org/package/@borderless/ts-scripts 72 | [downloads-image]: https://img.shields.io/npm/dm/@borderless/ts-scripts 73 | [downloads-url]: https://npmjs.org/package/@borderless/ts-scripts 74 | [node-build-image]: https://img.shields.io/github/actions/workflow/status/borderless/ts-scripts/ci-node.yml?branch=main&label=node%20build 75 | [node-build-url]: https://github.com/borderless/ts-scripts/actions/workflows/ci-node.yml?query=branch%3Amain 76 | [bun-build-image]: https://img.shields.io/github/actions/workflow/status/borderless/ts-scripts/ci-bun.yml?branch=main&label=bun%20build 77 | [bun-build-url]: https://github.com/borderless/ts-scripts/actions/workflows/ci-bun.yml?query=branch%3Amain 78 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Security contact information 4 | 5 | To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. 6 | -------------------------------------------------------------------------------- /configs/husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /configs/husky/bun/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | bun "$(dirname "$0")/../../../dist/bin.js" pre-commit 5 | -------------------------------------------------------------------------------- /configs/husky/node/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | node "$(dirname "$0")/../../../dist/bin.js" pre-commit 5 | -------------------------------------------------------------------------------- /configs/lint-staged.cjs: -------------------------------------------------------------------------------- 1 | const script = `${process.argv0} '${require.resolve("../dist/bin.js")}'`; 2 | 3 | module.exports = { 4 | [process.env.TS_SCRIPTS_FORMAT_GLOB]: `${script} format`, 5 | }; 6 | -------------------------------------------------------------------------------- /configs/prettier.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: ["prettier-plugin-packagejson"], 3 | }; 4 | -------------------------------------------------------------------------------- /configs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "esModuleInterop": true, 5 | "forceConsistentCasingInFileNames": true, 6 | "inlineSources": true, 7 | "isolatedModules": true, 8 | "lib": ["ES2020"], 9 | "module": "Node16", 10 | "skipLibCheck": true, 11 | "sourceMap": true, 12 | "strict": true, 13 | "target": "ES2020", 14 | "types": [] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@borderless/ts-scripts", 3 | "version": "0.15.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@borderless/ts-scripts", 9 | "version": "0.15.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "arg": "^5.0.1", 13 | "ci-info": "^3.3.0", 14 | "find-up": "^6.2.0", 15 | "husky": "^8.0.1", 16 | "lint-staged": "^15.0.2", 17 | "pkg-conf": "^4.0.0", 18 | "prettier": "^3.0.3", 19 | "prettier-plugin-packagejson": "^2.4.6", 20 | "rimraf": "^5.0.1", 21 | "zod": "^3.17.3" 22 | }, 23 | "bin": { 24 | "ts-scripts": "dist/bin.js" 25 | }, 26 | "devDependencies": { 27 | "@types/node": "^20.6.0", 28 | "@vitest/coverage-v8": "^0.34.4", 29 | "bun-types": "^1.0.1", 30 | "tsx": "^3.4.2", 31 | "typescript": "^5.2.2", 32 | "vitest": "^0.34.4" 33 | }, 34 | "engines": { 35 | "node": ">=16" 36 | }, 37 | "peerDependencies": { 38 | "typescript": "*" 39 | } 40 | }, 41 | "node_modules/@ampproject/remapping": { 42 | "version": "2.2.1", 43 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", 44 | "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", 45 | "dev": true, 46 | "dependencies": { 47 | "@jridgewell/gen-mapping": "^0.3.0", 48 | "@jridgewell/trace-mapping": "^0.3.9" 49 | }, 50 | "engines": { 51 | "node": ">=6.0.0" 52 | } 53 | }, 54 | "node_modules/@bcoe/v8-coverage": { 55 | "version": "0.2.3", 56 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 57 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 58 | "dev": true 59 | }, 60 | "node_modules/@esbuild-kit/cjs-loader": { 61 | "version": "2.1.0", 62 | "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.1.0.tgz", 63 | "integrity": "sha512-KyX25VcC2564K5FnEhNDdzonC87VeSZoLz3h6R8x3d1myhxqGdoQkTQba3VCcuAkgdkn69d3Zhvj3xtGWldbEQ==", 64 | "dev": true, 65 | "dependencies": { 66 | "@esbuild-kit/core-utils": "^1.3.0", 67 | "get-tsconfig": "^4.0.0" 68 | } 69 | }, 70 | "node_modules/@esbuild-kit/core-utils": { 71 | "version": "1.3.1", 72 | "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-1.3.1.tgz", 73 | "integrity": "sha512-QXWJKf3mEIs+jgUCrY2YWJ2cr9e9asRYRwDhxit+wkCaQbSfV6fCCgs8KjRsrkIdMBcWsjbWnFKfwZ9kjILPrw==", 74 | "dev": true, 75 | "dependencies": { 76 | "esbuild": "0.14.38", 77 | "source-map-support": "^0.5.21" 78 | } 79 | }, 80 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { 81 | "version": "0.14.38", 82 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz", 83 | "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==", 84 | "dev": true, 85 | "hasInstallScript": true, 86 | "bin": { 87 | "esbuild": "bin/esbuild" 88 | }, 89 | "engines": { 90 | "node": ">=12" 91 | }, 92 | "optionalDependencies": { 93 | "esbuild-android-64": "0.14.38", 94 | "esbuild-android-arm64": "0.14.38", 95 | "esbuild-darwin-64": "0.14.38", 96 | "esbuild-darwin-arm64": "0.14.38", 97 | "esbuild-freebsd-64": "0.14.38", 98 | "esbuild-freebsd-arm64": "0.14.38", 99 | "esbuild-linux-32": "0.14.38", 100 | "esbuild-linux-64": "0.14.38", 101 | "esbuild-linux-arm": "0.14.38", 102 | "esbuild-linux-arm64": "0.14.38", 103 | "esbuild-linux-mips64le": "0.14.38", 104 | "esbuild-linux-ppc64le": "0.14.38", 105 | "esbuild-linux-riscv64": "0.14.38", 106 | "esbuild-linux-s390x": "0.14.38", 107 | "esbuild-netbsd-64": "0.14.38", 108 | "esbuild-openbsd-64": "0.14.38", 109 | "esbuild-sunos-64": "0.14.38", 110 | "esbuild-windows-32": "0.14.38", 111 | "esbuild-windows-64": "0.14.38", 112 | "esbuild-windows-arm64": "0.14.38" 113 | } 114 | }, 115 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-android-64": { 116 | "version": "0.14.38", 117 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz", 118 | "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==", 119 | "cpu": [ 120 | "x64" 121 | ], 122 | "dev": true, 123 | "optional": true, 124 | "os": [ 125 | "android" 126 | ], 127 | "engines": { 128 | "node": ">=12" 129 | } 130 | }, 131 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-android-arm64": { 132 | "version": "0.14.38", 133 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz", 134 | "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==", 135 | "cpu": [ 136 | "arm64" 137 | ], 138 | "dev": true, 139 | "optional": true, 140 | "os": [ 141 | "android" 142 | ], 143 | "engines": { 144 | "node": ">=12" 145 | } 146 | }, 147 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-darwin-64": { 148 | "version": "0.14.38", 149 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz", 150 | "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==", 151 | "cpu": [ 152 | "x64" 153 | ], 154 | "dev": true, 155 | "optional": true, 156 | "os": [ 157 | "darwin" 158 | ], 159 | "engines": { 160 | "node": ">=12" 161 | } 162 | }, 163 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-darwin-arm64": { 164 | "version": "0.14.38", 165 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz", 166 | "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==", 167 | "cpu": [ 168 | "arm64" 169 | ], 170 | "dev": true, 171 | "optional": true, 172 | "os": [ 173 | "darwin" 174 | ], 175 | "engines": { 176 | "node": ">=12" 177 | } 178 | }, 179 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-freebsd-64": { 180 | "version": "0.14.38", 181 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz", 182 | "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==", 183 | "cpu": [ 184 | "x64" 185 | ], 186 | "dev": true, 187 | "optional": true, 188 | "os": [ 189 | "freebsd" 190 | ], 191 | "engines": { 192 | "node": ">=12" 193 | } 194 | }, 195 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-freebsd-arm64": { 196 | "version": "0.14.38", 197 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz", 198 | "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==", 199 | "cpu": [ 200 | "arm64" 201 | ], 202 | "dev": true, 203 | "optional": true, 204 | "os": [ 205 | "freebsd" 206 | ], 207 | "engines": { 208 | "node": ">=12" 209 | } 210 | }, 211 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-32": { 212 | "version": "0.14.38", 213 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz", 214 | "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==", 215 | "cpu": [ 216 | "ia32" 217 | ], 218 | "dev": true, 219 | "optional": true, 220 | "os": [ 221 | "linux" 222 | ], 223 | "engines": { 224 | "node": ">=12" 225 | } 226 | }, 227 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-64": { 228 | "version": "0.14.38", 229 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz", 230 | "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==", 231 | "cpu": [ 232 | "x64" 233 | ], 234 | "dev": true, 235 | "optional": true, 236 | "os": [ 237 | "linux" 238 | ], 239 | "engines": { 240 | "node": ">=12" 241 | } 242 | }, 243 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-arm": { 244 | "version": "0.14.38", 245 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz", 246 | "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==", 247 | "cpu": [ 248 | "arm" 249 | ], 250 | "dev": true, 251 | "optional": true, 252 | "os": [ 253 | "linux" 254 | ], 255 | "engines": { 256 | "node": ">=12" 257 | } 258 | }, 259 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-arm64": { 260 | "version": "0.14.38", 261 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz", 262 | "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==", 263 | "cpu": [ 264 | "arm64" 265 | ], 266 | "dev": true, 267 | "optional": true, 268 | "os": [ 269 | "linux" 270 | ], 271 | "engines": { 272 | "node": ">=12" 273 | } 274 | }, 275 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-mips64le": { 276 | "version": "0.14.38", 277 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz", 278 | "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==", 279 | "cpu": [ 280 | "mips64el" 281 | ], 282 | "dev": true, 283 | "optional": true, 284 | "os": [ 285 | "linux" 286 | ], 287 | "engines": { 288 | "node": ">=12" 289 | } 290 | }, 291 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-ppc64le": { 292 | "version": "0.14.38", 293 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz", 294 | "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==", 295 | "cpu": [ 296 | "ppc64" 297 | ], 298 | "dev": true, 299 | "optional": true, 300 | "os": [ 301 | "linux" 302 | ], 303 | "engines": { 304 | "node": ">=12" 305 | } 306 | }, 307 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-riscv64": { 308 | "version": "0.14.38", 309 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz", 310 | "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==", 311 | "cpu": [ 312 | "riscv64" 313 | ], 314 | "dev": true, 315 | "optional": true, 316 | "os": [ 317 | "linux" 318 | ], 319 | "engines": { 320 | "node": ">=12" 321 | } 322 | }, 323 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-linux-s390x": { 324 | "version": "0.14.38", 325 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz", 326 | "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==", 327 | "cpu": [ 328 | "s390x" 329 | ], 330 | "dev": true, 331 | "optional": true, 332 | "os": [ 333 | "linux" 334 | ], 335 | "engines": { 336 | "node": ">=12" 337 | } 338 | }, 339 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-netbsd-64": { 340 | "version": "0.14.38", 341 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz", 342 | "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==", 343 | "cpu": [ 344 | "x64" 345 | ], 346 | "dev": true, 347 | "optional": true, 348 | "os": [ 349 | "netbsd" 350 | ], 351 | "engines": { 352 | "node": ">=12" 353 | } 354 | }, 355 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-openbsd-64": { 356 | "version": "0.14.38", 357 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz", 358 | "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==", 359 | "cpu": [ 360 | "x64" 361 | ], 362 | "dev": true, 363 | "optional": true, 364 | "os": [ 365 | "openbsd" 366 | ], 367 | "engines": { 368 | "node": ">=12" 369 | } 370 | }, 371 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-sunos-64": { 372 | "version": "0.14.38", 373 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz", 374 | "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==", 375 | "cpu": [ 376 | "x64" 377 | ], 378 | "dev": true, 379 | "optional": true, 380 | "os": [ 381 | "sunos" 382 | ], 383 | "engines": { 384 | "node": ">=12" 385 | } 386 | }, 387 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-windows-32": { 388 | "version": "0.14.38", 389 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz", 390 | "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==", 391 | "cpu": [ 392 | "ia32" 393 | ], 394 | "dev": true, 395 | "optional": true, 396 | "os": [ 397 | "win32" 398 | ], 399 | "engines": { 400 | "node": ">=12" 401 | } 402 | }, 403 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-windows-64": { 404 | "version": "0.14.38", 405 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz", 406 | "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==", 407 | "cpu": [ 408 | "x64" 409 | ], 410 | "dev": true, 411 | "optional": true, 412 | "os": [ 413 | "win32" 414 | ], 415 | "engines": { 416 | "node": ">=12" 417 | } 418 | }, 419 | "node_modules/@esbuild-kit/core-utils/node_modules/esbuild-windows-arm64": { 420 | "version": "0.14.38", 421 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz", 422 | "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==", 423 | "cpu": [ 424 | "arm64" 425 | ], 426 | "dev": true, 427 | "optional": true, 428 | "os": [ 429 | "win32" 430 | ], 431 | "engines": { 432 | "node": ">=12" 433 | } 434 | }, 435 | "node_modules/@esbuild-kit/esm-loader": { 436 | "version": "2.2.0", 437 | "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.2.0.tgz", 438 | "integrity": "sha512-DA9v3nkmvUIledvp4Uuf0bq8rWsGB611PwKx8FPTQkWRJe4GrqcoqemiSIXFzteQJIqaDveez9/jJQLZME/5rg==", 439 | "dev": true, 440 | "dependencies": { 441 | "@esbuild-kit/core-utils": "^1.3.1", 442 | "get-tsconfig": "^4.0.0" 443 | } 444 | }, 445 | "node_modules/@esbuild/android-arm": { 446 | "version": "0.18.20", 447 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 448 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 449 | "cpu": [ 450 | "arm" 451 | ], 452 | "dev": true, 453 | "optional": true, 454 | "os": [ 455 | "android" 456 | ], 457 | "engines": { 458 | "node": ">=12" 459 | } 460 | }, 461 | "node_modules/@esbuild/android-arm64": { 462 | "version": "0.18.20", 463 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 464 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 465 | "cpu": [ 466 | "arm64" 467 | ], 468 | "dev": true, 469 | "optional": true, 470 | "os": [ 471 | "android" 472 | ], 473 | "engines": { 474 | "node": ">=12" 475 | } 476 | }, 477 | "node_modules/@esbuild/android-x64": { 478 | "version": "0.18.20", 479 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 480 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 481 | "cpu": [ 482 | "x64" 483 | ], 484 | "dev": true, 485 | "optional": true, 486 | "os": [ 487 | "android" 488 | ], 489 | "engines": { 490 | "node": ">=12" 491 | } 492 | }, 493 | "node_modules/@esbuild/darwin-arm64": { 494 | "version": "0.18.20", 495 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 496 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 497 | "cpu": [ 498 | "arm64" 499 | ], 500 | "dev": true, 501 | "optional": true, 502 | "os": [ 503 | "darwin" 504 | ], 505 | "engines": { 506 | "node": ">=12" 507 | } 508 | }, 509 | "node_modules/@esbuild/darwin-x64": { 510 | "version": "0.18.20", 511 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 512 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 513 | "cpu": [ 514 | "x64" 515 | ], 516 | "dev": true, 517 | "optional": true, 518 | "os": [ 519 | "darwin" 520 | ], 521 | "engines": { 522 | "node": ">=12" 523 | } 524 | }, 525 | "node_modules/@esbuild/freebsd-arm64": { 526 | "version": "0.18.20", 527 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 528 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 529 | "cpu": [ 530 | "arm64" 531 | ], 532 | "dev": true, 533 | "optional": true, 534 | "os": [ 535 | "freebsd" 536 | ], 537 | "engines": { 538 | "node": ">=12" 539 | } 540 | }, 541 | "node_modules/@esbuild/freebsd-x64": { 542 | "version": "0.18.20", 543 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 544 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 545 | "cpu": [ 546 | "x64" 547 | ], 548 | "dev": true, 549 | "optional": true, 550 | "os": [ 551 | "freebsd" 552 | ], 553 | "engines": { 554 | "node": ">=12" 555 | } 556 | }, 557 | "node_modules/@esbuild/linux-arm": { 558 | "version": "0.18.20", 559 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 560 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 561 | "cpu": [ 562 | "arm" 563 | ], 564 | "dev": true, 565 | "optional": true, 566 | "os": [ 567 | "linux" 568 | ], 569 | "engines": { 570 | "node": ">=12" 571 | } 572 | }, 573 | "node_modules/@esbuild/linux-arm64": { 574 | "version": "0.18.20", 575 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 576 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 577 | "cpu": [ 578 | "arm64" 579 | ], 580 | "dev": true, 581 | "optional": true, 582 | "os": [ 583 | "linux" 584 | ], 585 | "engines": { 586 | "node": ">=12" 587 | } 588 | }, 589 | "node_modules/@esbuild/linux-ia32": { 590 | "version": "0.18.20", 591 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 592 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 593 | "cpu": [ 594 | "ia32" 595 | ], 596 | "dev": true, 597 | "optional": true, 598 | "os": [ 599 | "linux" 600 | ], 601 | "engines": { 602 | "node": ">=12" 603 | } 604 | }, 605 | "node_modules/@esbuild/linux-loong64": { 606 | "version": "0.18.20", 607 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 608 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 609 | "cpu": [ 610 | "loong64" 611 | ], 612 | "dev": true, 613 | "optional": true, 614 | "os": [ 615 | "linux" 616 | ], 617 | "engines": { 618 | "node": ">=12" 619 | } 620 | }, 621 | "node_modules/@esbuild/linux-mips64el": { 622 | "version": "0.18.20", 623 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 624 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 625 | "cpu": [ 626 | "mips64el" 627 | ], 628 | "dev": true, 629 | "optional": true, 630 | "os": [ 631 | "linux" 632 | ], 633 | "engines": { 634 | "node": ">=12" 635 | } 636 | }, 637 | "node_modules/@esbuild/linux-ppc64": { 638 | "version": "0.18.20", 639 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 640 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 641 | "cpu": [ 642 | "ppc64" 643 | ], 644 | "dev": true, 645 | "optional": true, 646 | "os": [ 647 | "linux" 648 | ], 649 | "engines": { 650 | "node": ">=12" 651 | } 652 | }, 653 | "node_modules/@esbuild/linux-riscv64": { 654 | "version": "0.18.20", 655 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 656 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 657 | "cpu": [ 658 | "riscv64" 659 | ], 660 | "dev": true, 661 | "optional": true, 662 | "os": [ 663 | "linux" 664 | ], 665 | "engines": { 666 | "node": ">=12" 667 | } 668 | }, 669 | "node_modules/@esbuild/linux-s390x": { 670 | "version": "0.18.20", 671 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 672 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 673 | "cpu": [ 674 | "s390x" 675 | ], 676 | "dev": true, 677 | "optional": true, 678 | "os": [ 679 | "linux" 680 | ], 681 | "engines": { 682 | "node": ">=12" 683 | } 684 | }, 685 | "node_modules/@esbuild/linux-x64": { 686 | "version": "0.18.20", 687 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 688 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 689 | "cpu": [ 690 | "x64" 691 | ], 692 | "dev": true, 693 | "optional": true, 694 | "os": [ 695 | "linux" 696 | ], 697 | "engines": { 698 | "node": ">=12" 699 | } 700 | }, 701 | "node_modules/@esbuild/netbsd-x64": { 702 | "version": "0.18.20", 703 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 704 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 705 | "cpu": [ 706 | "x64" 707 | ], 708 | "dev": true, 709 | "optional": true, 710 | "os": [ 711 | "netbsd" 712 | ], 713 | "engines": { 714 | "node": ">=12" 715 | } 716 | }, 717 | "node_modules/@esbuild/openbsd-x64": { 718 | "version": "0.18.20", 719 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 720 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 721 | "cpu": [ 722 | "x64" 723 | ], 724 | "dev": true, 725 | "optional": true, 726 | "os": [ 727 | "openbsd" 728 | ], 729 | "engines": { 730 | "node": ">=12" 731 | } 732 | }, 733 | "node_modules/@esbuild/sunos-x64": { 734 | "version": "0.18.20", 735 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 736 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 737 | "cpu": [ 738 | "x64" 739 | ], 740 | "dev": true, 741 | "optional": true, 742 | "os": [ 743 | "sunos" 744 | ], 745 | "engines": { 746 | "node": ">=12" 747 | } 748 | }, 749 | "node_modules/@esbuild/win32-arm64": { 750 | "version": "0.18.20", 751 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 752 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 753 | "cpu": [ 754 | "arm64" 755 | ], 756 | "dev": true, 757 | "optional": true, 758 | "os": [ 759 | "win32" 760 | ], 761 | "engines": { 762 | "node": ">=12" 763 | } 764 | }, 765 | "node_modules/@esbuild/win32-ia32": { 766 | "version": "0.18.20", 767 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 768 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 769 | "cpu": [ 770 | "ia32" 771 | ], 772 | "dev": true, 773 | "optional": true, 774 | "os": [ 775 | "win32" 776 | ], 777 | "engines": { 778 | "node": ">=12" 779 | } 780 | }, 781 | "node_modules/@esbuild/win32-x64": { 782 | "version": "0.18.20", 783 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 784 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 785 | "cpu": [ 786 | "x64" 787 | ], 788 | "dev": true, 789 | "optional": true, 790 | "os": [ 791 | "win32" 792 | ], 793 | "engines": { 794 | "node": ">=12" 795 | } 796 | }, 797 | "node_modules/@isaacs/cliui": { 798 | "version": "8.0.2", 799 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 800 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 801 | "dependencies": { 802 | "string-width": "^5.1.2", 803 | "string-width-cjs": "npm:string-width@^4.2.0", 804 | "strip-ansi": "^7.0.1", 805 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 806 | "wrap-ansi": "^8.1.0", 807 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 808 | }, 809 | "engines": { 810 | "node": ">=12" 811 | } 812 | }, 813 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 814 | "version": "6.0.1", 815 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 816 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 817 | "engines": { 818 | "node": ">=12" 819 | }, 820 | "funding": { 821 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 822 | } 823 | }, 824 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 825 | "version": "7.1.0", 826 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 827 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 828 | "dependencies": { 829 | "ansi-regex": "^6.0.1" 830 | }, 831 | "engines": { 832 | "node": ">=12" 833 | }, 834 | "funding": { 835 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 836 | } 837 | }, 838 | "node_modules/@istanbuljs/schema": { 839 | "version": "0.1.3", 840 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 841 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 842 | "dev": true, 843 | "engines": { 844 | "node": ">=8" 845 | } 846 | }, 847 | "node_modules/@jest/schemas": { 848 | "version": "29.6.3", 849 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", 850 | "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", 851 | "dev": true, 852 | "dependencies": { 853 | "@sinclair/typebox": "^0.27.8" 854 | }, 855 | "engines": { 856 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 857 | } 858 | }, 859 | "node_modules/@jridgewell/gen-mapping": { 860 | "version": "0.3.3", 861 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 862 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 863 | "dev": true, 864 | "dependencies": { 865 | "@jridgewell/set-array": "^1.0.1", 866 | "@jridgewell/sourcemap-codec": "^1.4.10", 867 | "@jridgewell/trace-mapping": "^0.3.9" 868 | }, 869 | "engines": { 870 | "node": ">=6.0.0" 871 | } 872 | }, 873 | "node_modules/@jridgewell/resolve-uri": { 874 | "version": "3.1.1", 875 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 876 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 877 | "dev": true, 878 | "engines": { 879 | "node": ">=6.0.0" 880 | } 881 | }, 882 | "node_modules/@jridgewell/set-array": { 883 | "version": "1.1.2", 884 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 885 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 886 | "dev": true, 887 | "engines": { 888 | "node": ">=6.0.0" 889 | } 890 | }, 891 | "node_modules/@jridgewell/sourcemap-codec": { 892 | "version": "1.4.15", 893 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 894 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 895 | "dev": true 896 | }, 897 | "node_modules/@jridgewell/trace-mapping": { 898 | "version": "0.3.19", 899 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", 900 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", 901 | "dev": true, 902 | "dependencies": { 903 | "@jridgewell/resolve-uri": "^3.1.0", 904 | "@jridgewell/sourcemap-codec": "^1.4.14" 905 | } 906 | }, 907 | "node_modules/@nodelib/fs.scandir": { 908 | "version": "2.1.5", 909 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 910 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 911 | "dependencies": { 912 | "@nodelib/fs.stat": "2.0.5", 913 | "run-parallel": "^1.1.9" 914 | }, 915 | "engines": { 916 | "node": ">= 8" 917 | } 918 | }, 919 | "node_modules/@nodelib/fs.stat": { 920 | "version": "2.0.5", 921 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 922 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 923 | "engines": { 924 | "node": ">= 8" 925 | } 926 | }, 927 | "node_modules/@nodelib/fs.walk": { 928 | "version": "1.2.8", 929 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 930 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 931 | "dependencies": { 932 | "@nodelib/fs.scandir": "2.1.5", 933 | "fastq": "^1.6.0" 934 | }, 935 | "engines": { 936 | "node": ">= 8" 937 | } 938 | }, 939 | "node_modules/@pkgjs/parseargs": { 940 | "version": "0.11.0", 941 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 942 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 943 | "optional": true, 944 | "engines": { 945 | "node": ">=14" 946 | } 947 | }, 948 | "node_modules/@pkgr/utils": { 949 | "version": "2.4.2", 950 | "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", 951 | "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", 952 | "dependencies": { 953 | "cross-spawn": "^7.0.3", 954 | "fast-glob": "^3.3.0", 955 | "is-glob": "^4.0.3", 956 | "open": "^9.1.0", 957 | "picocolors": "^1.0.0", 958 | "tslib": "^2.6.0" 959 | }, 960 | "engines": { 961 | "node": "^12.20.0 || ^14.18.0 || >=16.0.0" 962 | }, 963 | "funding": { 964 | "url": "https://opencollective.com/unts" 965 | } 966 | }, 967 | "node_modules/@sinclair/typebox": { 968 | "version": "0.27.8", 969 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", 970 | "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", 971 | "dev": true 972 | }, 973 | "node_modules/@types/chai": { 974 | "version": "4.3.6", 975 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", 976 | "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", 977 | "dev": true 978 | }, 979 | "node_modules/@types/chai-subset": { 980 | "version": "1.3.3", 981 | "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", 982 | "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", 983 | "dev": true, 984 | "dependencies": { 985 | "@types/chai": "*" 986 | } 987 | }, 988 | "node_modules/@types/istanbul-lib-coverage": { 989 | "version": "2.0.4", 990 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 991 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", 992 | "dev": true 993 | }, 994 | "node_modules/@types/node": { 995 | "version": "20.6.0", 996 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", 997 | "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==", 998 | "dev": true 999 | }, 1000 | "node_modules/@vitest/coverage-v8": { 1001 | "version": "0.34.4", 1002 | "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.4.tgz", 1003 | "integrity": "sha512-TZ5ghzhmg3COQqfBShL+zRQEInHmV9TSwghTdfkHpCTyTOr+rxo6x41vCNcVfWysWULtqtBVpY6YFNovxnESfA==", 1004 | "dev": true, 1005 | "dependencies": { 1006 | "@ampproject/remapping": "^2.2.1", 1007 | "@bcoe/v8-coverage": "^0.2.3", 1008 | "istanbul-lib-coverage": "^3.2.0", 1009 | "istanbul-lib-report": "^3.0.1", 1010 | "istanbul-lib-source-maps": "^4.0.1", 1011 | "istanbul-reports": "^3.1.5", 1012 | "magic-string": "^0.30.1", 1013 | "picocolors": "^1.0.0", 1014 | "std-env": "^3.3.3", 1015 | "test-exclude": "^6.0.0", 1016 | "v8-to-istanbul": "^9.1.0" 1017 | }, 1018 | "funding": { 1019 | "url": "https://opencollective.com/vitest" 1020 | }, 1021 | "peerDependencies": { 1022 | "vitest": ">=0.32.0 <1" 1023 | } 1024 | }, 1025 | "node_modules/@vitest/expect": { 1026 | "version": "0.34.4", 1027 | "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", 1028 | "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", 1029 | "dev": true, 1030 | "dependencies": { 1031 | "@vitest/spy": "0.34.4", 1032 | "@vitest/utils": "0.34.4", 1033 | "chai": "^4.3.7" 1034 | }, 1035 | "funding": { 1036 | "url": "https://opencollective.com/vitest" 1037 | } 1038 | }, 1039 | "node_modules/@vitest/runner": { 1040 | "version": "0.34.4", 1041 | "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", 1042 | "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", 1043 | "dev": true, 1044 | "dependencies": { 1045 | "@vitest/utils": "0.34.4", 1046 | "p-limit": "^4.0.0", 1047 | "pathe": "^1.1.1" 1048 | }, 1049 | "funding": { 1050 | "url": "https://opencollective.com/vitest" 1051 | } 1052 | }, 1053 | "node_modules/@vitest/snapshot": { 1054 | "version": "0.34.4", 1055 | "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", 1056 | "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", 1057 | "dev": true, 1058 | "dependencies": { 1059 | "magic-string": "^0.30.1", 1060 | "pathe": "^1.1.1", 1061 | "pretty-format": "^29.5.0" 1062 | }, 1063 | "funding": { 1064 | "url": "https://opencollective.com/vitest" 1065 | } 1066 | }, 1067 | "node_modules/@vitest/spy": { 1068 | "version": "0.34.4", 1069 | "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", 1070 | "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", 1071 | "dev": true, 1072 | "dependencies": { 1073 | "tinyspy": "^2.1.1" 1074 | }, 1075 | "funding": { 1076 | "url": "https://opencollective.com/vitest" 1077 | } 1078 | }, 1079 | "node_modules/@vitest/utils": { 1080 | "version": "0.34.4", 1081 | "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", 1082 | "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", 1083 | "dev": true, 1084 | "dependencies": { 1085 | "diff-sequences": "^29.4.3", 1086 | "loupe": "^2.3.6", 1087 | "pretty-format": "^29.5.0" 1088 | }, 1089 | "funding": { 1090 | "url": "https://opencollective.com/vitest" 1091 | } 1092 | }, 1093 | "node_modules/acorn": { 1094 | "version": "8.10.0", 1095 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", 1096 | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", 1097 | "dev": true, 1098 | "bin": { 1099 | "acorn": "bin/acorn" 1100 | }, 1101 | "engines": { 1102 | "node": ">=0.4.0" 1103 | } 1104 | }, 1105 | "node_modules/acorn-walk": { 1106 | "version": "8.2.0", 1107 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 1108 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 1109 | "dev": true, 1110 | "engines": { 1111 | "node": ">=0.4.0" 1112 | } 1113 | }, 1114 | "node_modules/ansi-escapes": { 1115 | "version": "5.0.0", 1116 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", 1117 | "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", 1118 | "dependencies": { 1119 | "type-fest": "^1.0.2" 1120 | }, 1121 | "engines": { 1122 | "node": ">=12" 1123 | }, 1124 | "funding": { 1125 | "url": "https://github.com/sponsors/sindresorhus" 1126 | } 1127 | }, 1128 | "node_modules/ansi-regex": { 1129 | "version": "5.0.1", 1130 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1131 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1132 | "engines": { 1133 | "node": ">=8" 1134 | } 1135 | }, 1136 | "node_modules/ansi-styles": { 1137 | "version": "4.3.0", 1138 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1139 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1140 | "dependencies": { 1141 | "color-convert": "^2.0.1" 1142 | }, 1143 | "engines": { 1144 | "node": ">=8" 1145 | }, 1146 | "funding": { 1147 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1148 | } 1149 | }, 1150 | "node_modules/arg": { 1151 | "version": "5.0.1", 1152 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", 1153 | "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" 1154 | }, 1155 | "node_modules/assertion-error": { 1156 | "version": "1.1.0", 1157 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 1158 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 1159 | "dev": true, 1160 | "engines": { 1161 | "node": "*" 1162 | } 1163 | }, 1164 | "node_modules/balanced-match": { 1165 | "version": "1.0.0", 1166 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1167 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 1168 | }, 1169 | "node_modules/big-integer": { 1170 | "version": "1.6.51", 1171 | "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", 1172 | "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", 1173 | "engines": { 1174 | "node": ">=0.6" 1175 | } 1176 | }, 1177 | "node_modules/bplist-parser": { 1178 | "version": "0.2.0", 1179 | "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", 1180 | "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", 1181 | "dependencies": { 1182 | "big-integer": "^1.6.44" 1183 | }, 1184 | "engines": { 1185 | "node": ">= 5.10.0" 1186 | } 1187 | }, 1188 | "node_modules/brace-expansion": { 1189 | "version": "1.1.11", 1190 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1191 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1192 | "dev": true, 1193 | "dependencies": { 1194 | "balanced-match": "^1.0.0", 1195 | "concat-map": "0.0.1" 1196 | } 1197 | }, 1198 | "node_modules/braces": { 1199 | "version": "3.0.2", 1200 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1201 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1202 | "dependencies": { 1203 | "fill-range": "^7.0.1" 1204 | }, 1205 | "engines": { 1206 | "node": ">=8" 1207 | } 1208 | }, 1209 | "node_modules/buffer-from": { 1210 | "version": "1.1.2", 1211 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1212 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1213 | "dev": true 1214 | }, 1215 | "node_modules/bun-types": { 1216 | "version": "1.0.1", 1217 | "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.0.1.tgz", 1218 | "integrity": "sha512-7NrXqhMIaNKmWn2dSWEQ50znMZqrN/5Z0NBMXvQTRu/+Y1CvoXRznFy0pnqLe024CeZgVdXoEpARNO1JZLAPGw==", 1219 | "dev": true 1220 | }, 1221 | "node_modules/bundle-name": { 1222 | "version": "3.0.0", 1223 | "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", 1224 | "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", 1225 | "dependencies": { 1226 | "run-applescript": "^5.0.0" 1227 | }, 1228 | "engines": { 1229 | "node": ">=12" 1230 | }, 1231 | "funding": { 1232 | "url": "https://github.com/sponsors/sindresorhus" 1233 | } 1234 | }, 1235 | "node_modules/cac": { 1236 | "version": "6.7.14", 1237 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 1238 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 1239 | "dev": true, 1240 | "engines": { 1241 | "node": ">=8" 1242 | } 1243 | }, 1244 | "node_modules/chai": { 1245 | "version": "4.3.8", 1246 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", 1247 | "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", 1248 | "dev": true, 1249 | "dependencies": { 1250 | "assertion-error": "^1.1.0", 1251 | "check-error": "^1.0.2", 1252 | "deep-eql": "^4.1.2", 1253 | "get-func-name": "^2.0.0", 1254 | "loupe": "^2.3.1", 1255 | "pathval": "^1.1.1", 1256 | "type-detect": "^4.0.5" 1257 | }, 1258 | "engines": { 1259 | "node": ">=4" 1260 | } 1261 | }, 1262 | "node_modules/check-error": { 1263 | "version": "1.0.2", 1264 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 1265 | "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", 1266 | "dev": true, 1267 | "engines": { 1268 | "node": "*" 1269 | } 1270 | }, 1271 | "node_modules/ci-info": { 1272 | "version": "3.3.0", 1273 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", 1274 | "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" 1275 | }, 1276 | "node_modules/cli-cursor": { 1277 | "version": "4.0.0", 1278 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 1279 | "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 1280 | "dependencies": { 1281 | "restore-cursor": "^4.0.0" 1282 | }, 1283 | "engines": { 1284 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1285 | }, 1286 | "funding": { 1287 | "url": "https://github.com/sponsors/sindresorhus" 1288 | } 1289 | }, 1290 | "node_modules/cli-truncate": { 1291 | "version": "3.1.0", 1292 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", 1293 | "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", 1294 | "dependencies": { 1295 | "slice-ansi": "^5.0.0", 1296 | "string-width": "^5.0.0" 1297 | }, 1298 | "engines": { 1299 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1300 | }, 1301 | "funding": { 1302 | "url": "https://github.com/sponsors/sindresorhus" 1303 | } 1304 | }, 1305 | "node_modules/color-convert": { 1306 | "version": "2.0.1", 1307 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1308 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1309 | "dependencies": { 1310 | "color-name": "~1.1.4" 1311 | }, 1312 | "engines": { 1313 | "node": ">=7.0.0" 1314 | } 1315 | }, 1316 | "node_modules/color-name": { 1317 | "version": "1.1.4", 1318 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1319 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1320 | }, 1321 | "node_modules/colorette": { 1322 | "version": "2.0.20", 1323 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", 1324 | "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" 1325 | }, 1326 | "node_modules/commander": { 1327 | "version": "11.1.0", 1328 | "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", 1329 | "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", 1330 | "engines": { 1331 | "node": ">=16" 1332 | } 1333 | }, 1334 | "node_modules/concat-map": { 1335 | "version": "0.0.1", 1336 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1337 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1338 | "dev": true 1339 | }, 1340 | "node_modules/convert-source-map": { 1341 | "version": "1.9.0", 1342 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 1343 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 1344 | "dev": true 1345 | }, 1346 | "node_modules/cross-spawn": { 1347 | "version": "7.0.3", 1348 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1349 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1350 | "dependencies": { 1351 | "path-key": "^3.1.0", 1352 | "shebang-command": "^2.0.0", 1353 | "which": "^2.0.1" 1354 | }, 1355 | "engines": { 1356 | "node": ">= 8" 1357 | } 1358 | }, 1359 | "node_modules/debug": { 1360 | "version": "4.3.4", 1361 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1362 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1363 | "dependencies": { 1364 | "ms": "2.1.2" 1365 | }, 1366 | "engines": { 1367 | "node": ">=6.0" 1368 | }, 1369 | "peerDependenciesMeta": { 1370 | "supports-color": { 1371 | "optional": true 1372 | } 1373 | } 1374 | }, 1375 | "node_modules/deep-eql": { 1376 | "version": "4.1.3", 1377 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", 1378 | "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", 1379 | "dev": true, 1380 | "dependencies": { 1381 | "type-detect": "^4.0.0" 1382 | }, 1383 | "engines": { 1384 | "node": ">=6" 1385 | } 1386 | }, 1387 | "node_modules/default-browser": { 1388 | "version": "4.0.0", 1389 | "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", 1390 | "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", 1391 | "dependencies": { 1392 | "bundle-name": "^3.0.0", 1393 | "default-browser-id": "^3.0.0", 1394 | "execa": "^7.1.1", 1395 | "titleize": "^3.0.0" 1396 | }, 1397 | "engines": { 1398 | "node": ">=14.16" 1399 | }, 1400 | "funding": { 1401 | "url": "https://github.com/sponsors/sindresorhus" 1402 | } 1403 | }, 1404 | "node_modules/default-browser-id": { 1405 | "version": "3.0.0", 1406 | "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", 1407 | "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", 1408 | "dependencies": { 1409 | "bplist-parser": "^0.2.0", 1410 | "untildify": "^4.0.0" 1411 | }, 1412 | "engines": { 1413 | "node": ">=12" 1414 | }, 1415 | "funding": { 1416 | "url": "https://github.com/sponsors/sindresorhus" 1417 | } 1418 | }, 1419 | "node_modules/define-lazy-prop": { 1420 | "version": "3.0.0", 1421 | "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", 1422 | "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", 1423 | "engines": { 1424 | "node": ">=12" 1425 | }, 1426 | "funding": { 1427 | "url": "https://github.com/sponsors/sindresorhus" 1428 | } 1429 | }, 1430 | "node_modules/detect-indent": { 1431 | "version": "7.0.1", 1432 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", 1433 | "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", 1434 | "engines": { 1435 | "node": ">=12.20" 1436 | } 1437 | }, 1438 | "node_modules/detect-newline": { 1439 | "version": "4.0.1", 1440 | "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", 1441 | "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", 1442 | "engines": { 1443 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1444 | }, 1445 | "funding": { 1446 | "url": "https://github.com/sponsors/sindresorhus" 1447 | } 1448 | }, 1449 | "node_modules/diff-sequences": { 1450 | "version": "29.6.3", 1451 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", 1452 | "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", 1453 | "dev": true, 1454 | "engines": { 1455 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 1456 | } 1457 | }, 1458 | "node_modules/dir-glob": { 1459 | "version": "3.0.1", 1460 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1461 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1462 | "dependencies": { 1463 | "path-type": "^4.0.0" 1464 | }, 1465 | "engines": { 1466 | "node": ">=8" 1467 | } 1468 | }, 1469 | "node_modules/eastasianwidth": { 1470 | "version": "0.2.0", 1471 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1472 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" 1473 | }, 1474 | "node_modules/emoji-regex": { 1475 | "version": "9.2.2", 1476 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1477 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 1478 | }, 1479 | "node_modules/esbuild": { 1480 | "version": "0.18.20", 1481 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", 1482 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 1483 | "dev": true, 1484 | "hasInstallScript": true, 1485 | "bin": { 1486 | "esbuild": "bin/esbuild" 1487 | }, 1488 | "engines": { 1489 | "node": ">=12" 1490 | }, 1491 | "optionalDependencies": { 1492 | "@esbuild/android-arm": "0.18.20", 1493 | "@esbuild/android-arm64": "0.18.20", 1494 | "@esbuild/android-x64": "0.18.20", 1495 | "@esbuild/darwin-arm64": "0.18.20", 1496 | "@esbuild/darwin-x64": "0.18.20", 1497 | "@esbuild/freebsd-arm64": "0.18.20", 1498 | "@esbuild/freebsd-x64": "0.18.20", 1499 | "@esbuild/linux-arm": "0.18.20", 1500 | "@esbuild/linux-arm64": "0.18.20", 1501 | "@esbuild/linux-ia32": "0.18.20", 1502 | "@esbuild/linux-loong64": "0.18.20", 1503 | "@esbuild/linux-mips64el": "0.18.20", 1504 | "@esbuild/linux-ppc64": "0.18.20", 1505 | "@esbuild/linux-riscv64": "0.18.20", 1506 | "@esbuild/linux-s390x": "0.18.20", 1507 | "@esbuild/linux-x64": "0.18.20", 1508 | "@esbuild/netbsd-x64": "0.18.20", 1509 | "@esbuild/openbsd-x64": "0.18.20", 1510 | "@esbuild/sunos-x64": "0.18.20", 1511 | "@esbuild/win32-arm64": "0.18.20", 1512 | "@esbuild/win32-ia32": "0.18.20", 1513 | "@esbuild/win32-x64": "0.18.20" 1514 | } 1515 | }, 1516 | "node_modules/eventemitter3": { 1517 | "version": "5.0.1", 1518 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 1519 | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" 1520 | }, 1521 | "node_modules/execa": { 1522 | "version": "7.2.0", 1523 | "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", 1524 | "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", 1525 | "dependencies": { 1526 | "cross-spawn": "^7.0.3", 1527 | "get-stream": "^6.0.1", 1528 | "human-signals": "^4.3.0", 1529 | "is-stream": "^3.0.0", 1530 | "merge-stream": "^2.0.0", 1531 | "npm-run-path": "^5.1.0", 1532 | "onetime": "^6.0.0", 1533 | "signal-exit": "^3.0.7", 1534 | "strip-final-newline": "^3.0.0" 1535 | }, 1536 | "engines": { 1537 | "node": "^14.18.0 || ^16.14.0 || >=18.0.0" 1538 | }, 1539 | "funding": { 1540 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 1541 | } 1542 | }, 1543 | "node_modules/fast-glob": { 1544 | "version": "3.3.1", 1545 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", 1546 | "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", 1547 | "dependencies": { 1548 | "@nodelib/fs.stat": "^2.0.2", 1549 | "@nodelib/fs.walk": "^1.2.3", 1550 | "glob-parent": "^5.1.2", 1551 | "merge2": "^1.3.0", 1552 | "micromatch": "^4.0.4" 1553 | }, 1554 | "engines": { 1555 | "node": ">=8.6.0" 1556 | } 1557 | }, 1558 | "node_modules/fastq": { 1559 | "version": "1.15.0", 1560 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 1561 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 1562 | "dependencies": { 1563 | "reusify": "^1.0.4" 1564 | } 1565 | }, 1566 | "node_modules/fill-range": { 1567 | "version": "7.0.1", 1568 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1569 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1570 | "dependencies": { 1571 | "to-regex-range": "^5.0.1" 1572 | }, 1573 | "engines": { 1574 | "node": ">=8" 1575 | } 1576 | }, 1577 | "node_modules/find-up": { 1578 | "version": "6.2.0", 1579 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.2.0.tgz", 1580 | "integrity": "sha512-yWHzMzXCaFoABSnFTCPKNFlYoq4mSga9QLRRKOCLSJ33hSkzROB14ITbAWW0QDQDyuzsPQ33S1DsOWQb/oW1yA==", 1581 | "dependencies": { 1582 | "locate-path": "^7.0.0", 1583 | "path-exists": "^5.0.0" 1584 | }, 1585 | "engines": { 1586 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1587 | }, 1588 | "funding": { 1589 | "url": "https://github.com/sponsors/sindresorhus" 1590 | } 1591 | }, 1592 | "node_modules/foreground-child": { 1593 | "version": "3.1.1", 1594 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", 1595 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 1596 | "dependencies": { 1597 | "cross-spawn": "^7.0.0", 1598 | "signal-exit": "^4.0.1" 1599 | }, 1600 | "engines": { 1601 | "node": ">=14" 1602 | }, 1603 | "funding": { 1604 | "url": "https://github.com/sponsors/isaacs" 1605 | } 1606 | }, 1607 | "node_modules/foreground-child/node_modules/signal-exit": { 1608 | "version": "4.1.0", 1609 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1610 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1611 | "engines": { 1612 | "node": ">=14" 1613 | }, 1614 | "funding": { 1615 | "url": "https://github.com/sponsors/isaacs" 1616 | } 1617 | }, 1618 | "node_modules/fs.realpath": { 1619 | "version": "1.0.0", 1620 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1621 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1622 | "dev": true 1623 | }, 1624 | "node_modules/fsevents": { 1625 | "version": "2.3.2", 1626 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1627 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1628 | "dev": true, 1629 | "hasInstallScript": true, 1630 | "optional": true, 1631 | "os": [ 1632 | "darwin" 1633 | ], 1634 | "engines": { 1635 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1636 | } 1637 | }, 1638 | "node_modules/get-func-name": { 1639 | "version": "2.0.2", 1640 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", 1641 | "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", 1642 | "dev": true, 1643 | "engines": { 1644 | "node": "*" 1645 | } 1646 | }, 1647 | "node_modules/get-stdin": { 1648 | "version": "9.0.0", 1649 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", 1650 | "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", 1651 | "engines": { 1652 | "node": ">=12" 1653 | }, 1654 | "funding": { 1655 | "url": "https://github.com/sponsors/sindresorhus" 1656 | } 1657 | }, 1658 | "node_modules/get-stream": { 1659 | "version": "6.0.1", 1660 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 1661 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 1662 | "engines": { 1663 | "node": ">=10" 1664 | }, 1665 | "funding": { 1666 | "url": "https://github.com/sponsors/sindresorhus" 1667 | } 1668 | }, 1669 | "node_modules/get-tsconfig": { 1670 | "version": "4.0.0", 1671 | "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.0.0.tgz", 1672 | "integrity": "sha512-WvnskjM5QJbSjuZrJkG3CeIE/ywYjL9/UMYu5dpOa3iD6GjefbQq7J/nrZY4yo6QSYuYwmj7G7Xd9qzCjMMKUw==", 1673 | "dev": true, 1674 | "funding": { 1675 | "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 1676 | } 1677 | }, 1678 | "node_modules/git-hooks-list": { 1679 | "version": "3.1.0", 1680 | "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.1.0.tgz", 1681 | "integrity": "sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==", 1682 | "funding": { 1683 | "url": "https://github.com/fisker/git-hooks-list?sponsor=1" 1684 | } 1685 | }, 1686 | "node_modules/glob": { 1687 | "version": "10.3.4", 1688 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", 1689 | "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", 1690 | "dependencies": { 1691 | "foreground-child": "^3.1.0", 1692 | "jackspeak": "^2.0.3", 1693 | "minimatch": "^9.0.1", 1694 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", 1695 | "path-scurry": "^1.10.1" 1696 | }, 1697 | "bin": { 1698 | "glob": "dist/cjs/src/bin.js" 1699 | }, 1700 | "engines": { 1701 | "node": ">=16 || 14 >=14.17" 1702 | }, 1703 | "funding": { 1704 | "url": "https://github.com/sponsors/isaacs" 1705 | } 1706 | }, 1707 | "node_modules/glob-parent": { 1708 | "version": "5.1.2", 1709 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1710 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1711 | "dependencies": { 1712 | "is-glob": "^4.0.1" 1713 | }, 1714 | "engines": { 1715 | "node": ">= 6" 1716 | } 1717 | }, 1718 | "node_modules/glob/node_modules/brace-expansion": { 1719 | "version": "2.0.1", 1720 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1721 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1722 | "dependencies": { 1723 | "balanced-match": "^1.0.0" 1724 | } 1725 | }, 1726 | "node_modules/glob/node_modules/minimatch": { 1727 | "version": "9.0.3", 1728 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 1729 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 1730 | "dependencies": { 1731 | "brace-expansion": "^2.0.1" 1732 | }, 1733 | "engines": { 1734 | "node": ">=16 || 14 >=14.17" 1735 | }, 1736 | "funding": { 1737 | "url": "https://github.com/sponsors/isaacs" 1738 | } 1739 | }, 1740 | "node_modules/globby": { 1741 | "version": "13.2.2", 1742 | "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", 1743 | "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", 1744 | "dependencies": { 1745 | "dir-glob": "^3.0.1", 1746 | "fast-glob": "^3.3.0", 1747 | "ignore": "^5.2.4", 1748 | "merge2": "^1.4.1", 1749 | "slash": "^4.0.0" 1750 | }, 1751 | "engines": { 1752 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1753 | }, 1754 | "funding": { 1755 | "url": "https://github.com/sponsors/sindresorhus" 1756 | } 1757 | }, 1758 | "node_modules/has-flag": { 1759 | "version": "4.0.0", 1760 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1761 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1762 | "dev": true, 1763 | "engines": { 1764 | "node": ">=8" 1765 | } 1766 | }, 1767 | "node_modules/html-escaper": { 1768 | "version": "2.0.2", 1769 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1770 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1771 | "dev": true 1772 | }, 1773 | "node_modules/human-signals": { 1774 | "version": "4.3.1", 1775 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", 1776 | "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", 1777 | "engines": { 1778 | "node": ">=14.18.0" 1779 | } 1780 | }, 1781 | "node_modules/husky": { 1782 | "version": "8.0.1", 1783 | "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", 1784 | "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", 1785 | "bin": { 1786 | "husky": "lib/bin.js" 1787 | }, 1788 | "engines": { 1789 | "node": ">=14" 1790 | }, 1791 | "funding": { 1792 | "url": "https://github.com/sponsors/typicode" 1793 | } 1794 | }, 1795 | "node_modules/ignore": { 1796 | "version": "5.2.4", 1797 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1798 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 1799 | "engines": { 1800 | "node": ">= 4" 1801 | } 1802 | }, 1803 | "node_modules/inflight": { 1804 | "version": "1.0.6", 1805 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1806 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1807 | "dev": true, 1808 | "dependencies": { 1809 | "once": "^1.3.0", 1810 | "wrappy": "1" 1811 | } 1812 | }, 1813 | "node_modules/inherits": { 1814 | "version": "2.0.4", 1815 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1816 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1817 | "dev": true 1818 | }, 1819 | "node_modules/is-docker": { 1820 | "version": "3.0.0", 1821 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", 1822 | "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", 1823 | "bin": { 1824 | "is-docker": "cli.js" 1825 | }, 1826 | "engines": { 1827 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1828 | }, 1829 | "funding": { 1830 | "url": "https://github.com/sponsors/sindresorhus" 1831 | } 1832 | }, 1833 | "node_modules/is-extglob": { 1834 | "version": "2.1.1", 1835 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1836 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1837 | "engines": { 1838 | "node": ">=0.10.0" 1839 | } 1840 | }, 1841 | "node_modules/is-fullwidth-code-point": { 1842 | "version": "4.0.0", 1843 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 1844 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 1845 | "engines": { 1846 | "node": ">=12" 1847 | }, 1848 | "funding": { 1849 | "url": "https://github.com/sponsors/sindresorhus" 1850 | } 1851 | }, 1852 | "node_modules/is-glob": { 1853 | "version": "4.0.3", 1854 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1855 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1856 | "dependencies": { 1857 | "is-extglob": "^2.1.1" 1858 | }, 1859 | "engines": { 1860 | "node": ">=0.10.0" 1861 | } 1862 | }, 1863 | "node_modules/is-inside-container": { 1864 | "version": "1.0.0", 1865 | "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", 1866 | "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", 1867 | "dependencies": { 1868 | "is-docker": "^3.0.0" 1869 | }, 1870 | "bin": { 1871 | "is-inside-container": "cli.js" 1872 | }, 1873 | "engines": { 1874 | "node": ">=14.16" 1875 | }, 1876 | "funding": { 1877 | "url": "https://github.com/sponsors/sindresorhus" 1878 | } 1879 | }, 1880 | "node_modules/is-number": { 1881 | "version": "7.0.0", 1882 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1883 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1884 | "engines": { 1885 | "node": ">=0.12.0" 1886 | } 1887 | }, 1888 | "node_modules/is-plain-obj": { 1889 | "version": "4.1.0", 1890 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", 1891 | "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", 1892 | "engines": { 1893 | "node": ">=12" 1894 | }, 1895 | "funding": { 1896 | "url": "https://github.com/sponsors/sindresorhus" 1897 | } 1898 | }, 1899 | "node_modules/is-stream": { 1900 | "version": "3.0.0", 1901 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 1902 | "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 1903 | "engines": { 1904 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1905 | }, 1906 | "funding": { 1907 | "url": "https://github.com/sponsors/sindresorhus" 1908 | } 1909 | }, 1910 | "node_modules/is-wsl": { 1911 | "version": "2.2.0", 1912 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 1913 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 1914 | "dependencies": { 1915 | "is-docker": "^2.0.0" 1916 | }, 1917 | "engines": { 1918 | "node": ">=8" 1919 | } 1920 | }, 1921 | "node_modules/is-wsl/node_modules/is-docker": { 1922 | "version": "2.2.1", 1923 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 1924 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 1925 | "bin": { 1926 | "is-docker": "cli.js" 1927 | }, 1928 | "engines": { 1929 | "node": ">=8" 1930 | }, 1931 | "funding": { 1932 | "url": "https://github.com/sponsors/sindresorhus" 1933 | } 1934 | }, 1935 | "node_modules/isexe": { 1936 | "version": "2.0.0", 1937 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1938 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1939 | }, 1940 | "node_modules/istanbul-lib-coverage": { 1941 | "version": "3.2.0", 1942 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", 1943 | "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", 1944 | "dev": true, 1945 | "engines": { 1946 | "node": ">=8" 1947 | } 1948 | }, 1949 | "node_modules/istanbul-lib-report": { 1950 | "version": "3.0.1", 1951 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 1952 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 1953 | "dev": true, 1954 | "dependencies": { 1955 | "istanbul-lib-coverage": "^3.0.0", 1956 | "make-dir": "^4.0.0", 1957 | "supports-color": "^7.1.0" 1958 | }, 1959 | "engines": { 1960 | "node": ">=10" 1961 | } 1962 | }, 1963 | "node_modules/istanbul-lib-source-maps": { 1964 | "version": "4.0.1", 1965 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", 1966 | "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", 1967 | "dev": true, 1968 | "dependencies": { 1969 | "debug": "^4.1.1", 1970 | "istanbul-lib-coverage": "^3.0.0", 1971 | "source-map": "^0.6.1" 1972 | }, 1973 | "engines": { 1974 | "node": ">=10" 1975 | } 1976 | }, 1977 | "node_modules/istanbul-reports": { 1978 | "version": "3.1.6", 1979 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", 1980 | "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", 1981 | "dev": true, 1982 | "dependencies": { 1983 | "html-escaper": "^2.0.0", 1984 | "istanbul-lib-report": "^3.0.0" 1985 | }, 1986 | "engines": { 1987 | "node": ">=8" 1988 | } 1989 | }, 1990 | "node_modules/jackspeak": { 1991 | "version": "2.3.3", 1992 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", 1993 | "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", 1994 | "dependencies": { 1995 | "@isaacs/cliui": "^8.0.2" 1996 | }, 1997 | "engines": { 1998 | "node": ">=14" 1999 | }, 2000 | "funding": { 2001 | "url": "https://github.com/sponsors/isaacs" 2002 | }, 2003 | "optionalDependencies": { 2004 | "@pkgjs/parseargs": "^0.11.0" 2005 | } 2006 | }, 2007 | "node_modules/jsonc-parser": { 2008 | "version": "3.2.0", 2009 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", 2010 | "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", 2011 | "dev": true 2012 | }, 2013 | "node_modules/lilconfig": { 2014 | "version": "2.1.0", 2015 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 2016 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 2017 | "engines": { 2018 | "node": ">=10" 2019 | } 2020 | }, 2021 | "node_modules/lint-staged": { 2022 | "version": "15.0.2", 2023 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.2.tgz", 2024 | "integrity": "sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==", 2025 | "dependencies": { 2026 | "chalk": "5.3.0", 2027 | "commander": "11.1.0", 2028 | "debug": "4.3.4", 2029 | "execa": "8.0.1", 2030 | "lilconfig": "2.1.0", 2031 | "listr2": "7.0.2", 2032 | "micromatch": "4.0.5", 2033 | "pidtree": "0.6.0", 2034 | "string-argv": "0.3.2", 2035 | "yaml": "2.3.3" 2036 | }, 2037 | "bin": { 2038 | "lint-staged": "bin/lint-staged.js" 2039 | }, 2040 | "engines": { 2041 | "node": ">=18.12.0" 2042 | }, 2043 | "funding": { 2044 | "url": "https://opencollective.com/lint-staged" 2045 | } 2046 | }, 2047 | "node_modules/lint-staged/node_modules/chalk": { 2048 | "version": "5.3.0", 2049 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 2050 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 2051 | "engines": { 2052 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 2053 | }, 2054 | "funding": { 2055 | "url": "https://github.com/chalk/chalk?sponsor=1" 2056 | } 2057 | }, 2058 | "node_modules/lint-staged/node_modules/execa": { 2059 | "version": "8.0.1", 2060 | "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", 2061 | "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", 2062 | "dependencies": { 2063 | "cross-spawn": "^7.0.3", 2064 | "get-stream": "^8.0.1", 2065 | "human-signals": "^5.0.0", 2066 | "is-stream": "^3.0.0", 2067 | "merge-stream": "^2.0.0", 2068 | "npm-run-path": "^5.1.0", 2069 | "onetime": "^6.0.0", 2070 | "signal-exit": "^4.1.0", 2071 | "strip-final-newline": "^3.0.0" 2072 | }, 2073 | "engines": { 2074 | "node": ">=16.17" 2075 | }, 2076 | "funding": { 2077 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 2078 | } 2079 | }, 2080 | "node_modules/lint-staged/node_modules/get-stream": { 2081 | "version": "8.0.1", 2082 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", 2083 | "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", 2084 | "engines": { 2085 | "node": ">=16" 2086 | }, 2087 | "funding": { 2088 | "url": "https://github.com/sponsors/sindresorhus" 2089 | } 2090 | }, 2091 | "node_modules/lint-staged/node_modules/human-signals": { 2092 | "version": "5.0.0", 2093 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", 2094 | "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", 2095 | "engines": { 2096 | "node": ">=16.17.0" 2097 | } 2098 | }, 2099 | "node_modules/lint-staged/node_modules/signal-exit": { 2100 | "version": "4.1.0", 2101 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2102 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2103 | "engines": { 2104 | "node": ">=14" 2105 | }, 2106 | "funding": { 2107 | "url": "https://github.com/sponsors/isaacs" 2108 | } 2109 | }, 2110 | "node_modules/listr2": { 2111 | "version": "7.0.2", 2112 | "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.2.tgz", 2113 | "integrity": "sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==", 2114 | "dependencies": { 2115 | "cli-truncate": "^3.1.0", 2116 | "colorette": "^2.0.20", 2117 | "eventemitter3": "^5.0.1", 2118 | "log-update": "^5.0.1", 2119 | "rfdc": "^1.3.0", 2120 | "wrap-ansi": "^8.1.0" 2121 | }, 2122 | "engines": { 2123 | "node": ">=16.0.0" 2124 | } 2125 | }, 2126 | "node_modules/load-json-file": { 2127 | "version": "7.0.1", 2128 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", 2129 | "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", 2130 | "engines": { 2131 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2132 | }, 2133 | "funding": { 2134 | "url": "https://github.com/sponsors/sindresorhus" 2135 | } 2136 | }, 2137 | "node_modules/local-pkg": { 2138 | "version": "0.4.3", 2139 | "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", 2140 | "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", 2141 | "dev": true, 2142 | "engines": { 2143 | "node": ">=14" 2144 | }, 2145 | "funding": { 2146 | "url": "https://github.com/sponsors/antfu" 2147 | } 2148 | }, 2149 | "node_modules/locate-path": { 2150 | "version": "7.0.0", 2151 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.0.0.tgz", 2152 | "integrity": "sha512-+cg2yXqDUKfo4hsFxwa3G1cBJeA+gs1vD8FyV9/odWoUlQe/4syxHQ5DPtKjtfm6gnKbZzjCqzX03kXosvZB1w==", 2153 | "dependencies": { 2154 | "p-locate": "^6.0.0" 2155 | }, 2156 | "engines": { 2157 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2158 | }, 2159 | "funding": { 2160 | "url": "https://github.com/sponsors/sindresorhus" 2161 | } 2162 | }, 2163 | "node_modules/log-update": { 2164 | "version": "5.0.1", 2165 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", 2166 | "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", 2167 | "dependencies": { 2168 | "ansi-escapes": "^5.0.0", 2169 | "cli-cursor": "^4.0.0", 2170 | "slice-ansi": "^5.0.0", 2171 | "strip-ansi": "^7.0.1", 2172 | "wrap-ansi": "^8.0.1" 2173 | }, 2174 | "engines": { 2175 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2176 | }, 2177 | "funding": { 2178 | "url": "https://github.com/sponsors/sindresorhus" 2179 | } 2180 | }, 2181 | "node_modules/log-update/node_modules/ansi-regex": { 2182 | "version": "6.0.1", 2183 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 2184 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 2185 | "engines": { 2186 | "node": ">=12" 2187 | }, 2188 | "funding": { 2189 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 2190 | } 2191 | }, 2192 | "node_modules/log-update/node_modules/strip-ansi": { 2193 | "version": "7.1.0", 2194 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2195 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2196 | "dependencies": { 2197 | "ansi-regex": "^6.0.1" 2198 | }, 2199 | "engines": { 2200 | "node": ">=12" 2201 | }, 2202 | "funding": { 2203 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2204 | } 2205 | }, 2206 | "node_modules/loupe": { 2207 | "version": "2.3.6", 2208 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", 2209 | "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", 2210 | "dev": true, 2211 | "dependencies": { 2212 | "get-func-name": "^2.0.0" 2213 | } 2214 | }, 2215 | "node_modules/lru-cache": { 2216 | "version": "10.0.1", 2217 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", 2218 | "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", 2219 | "engines": { 2220 | "node": "14 || >=16.14" 2221 | } 2222 | }, 2223 | "node_modules/magic-string": { 2224 | "version": "0.30.3", 2225 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", 2226 | "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", 2227 | "dev": true, 2228 | "dependencies": { 2229 | "@jridgewell/sourcemap-codec": "^1.4.15" 2230 | }, 2231 | "engines": { 2232 | "node": ">=12" 2233 | } 2234 | }, 2235 | "node_modules/make-dir": { 2236 | "version": "4.0.0", 2237 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 2238 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 2239 | "dev": true, 2240 | "dependencies": { 2241 | "semver": "^7.5.3" 2242 | }, 2243 | "engines": { 2244 | "node": ">=10" 2245 | }, 2246 | "funding": { 2247 | "url": "https://github.com/sponsors/sindresorhus" 2248 | } 2249 | }, 2250 | "node_modules/merge-stream": { 2251 | "version": "2.0.0", 2252 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2253 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" 2254 | }, 2255 | "node_modules/merge2": { 2256 | "version": "1.4.1", 2257 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2258 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2259 | "engines": { 2260 | "node": ">= 8" 2261 | } 2262 | }, 2263 | "node_modules/micromatch": { 2264 | "version": "4.0.5", 2265 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2266 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2267 | "dependencies": { 2268 | "braces": "^3.0.2", 2269 | "picomatch": "^2.3.1" 2270 | }, 2271 | "engines": { 2272 | "node": ">=8.6" 2273 | } 2274 | }, 2275 | "node_modules/mimic-fn": { 2276 | "version": "4.0.0", 2277 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", 2278 | "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 2279 | "engines": { 2280 | "node": ">=12" 2281 | }, 2282 | "funding": { 2283 | "url": "https://github.com/sponsors/sindresorhus" 2284 | } 2285 | }, 2286 | "node_modules/minimatch": { 2287 | "version": "3.1.2", 2288 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2289 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2290 | "dev": true, 2291 | "dependencies": { 2292 | "brace-expansion": "^1.1.7" 2293 | }, 2294 | "engines": { 2295 | "node": "*" 2296 | } 2297 | }, 2298 | "node_modules/minipass": { 2299 | "version": "7.0.3", 2300 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", 2301 | "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", 2302 | "engines": { 2303 | "node": ">=16 || 14 >=14.17" 2304 | } 2305 | }, 2306 | "node_modules/mlly": { 2307 | "version": "1.4.2", 2308 | "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", 2309 | "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", 2310 | "dev": true, 2311 | "dependencies": { 2312 | "acorn": "^8.10.0", 2313 | "pathe": "^1.1.1", 2314 | "pkg-types": "^1.0.3", 2315 | "ufo": "^1.3.0" 2316 | } 2317 | }, 2318 | "node_modules/ms": { 2319 | "version": "2.1.2", 2320 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2321 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2322 | }, 2323 | "node_modules/nanoid": { 2324 | "version": "3.3.6", 2325 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 2326 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 2327 | "dev": true, 2328 | "funding": [ 2329 | { 2330 | "type": "github", 2331 | "url": "https://github.com/sponsors/ai" 2332 | } 2333 | ], 2334 | "bin": { 2335 | "nanoid": "bin/nanoid.cjs" 2336 | }, 2337 | "engines": { 2338 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2339 | } 2340 | }, 2341 | "node_modules/npm-run-path": { 2342 | "version": "5.1.0", 2343 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", 2344 | "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", 2345 | "dependencies": { 2346 | "path-key": "^4.0.0" 2347 | }, 2348 | "engines": { 2349 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2350 | }, 2351 | "funding": { 2352 | "url": "https://github.com/sponsors/sindresorhus" 2353 | } 2354 | }, 2355 | "node_modules/npm-run-path/node_modules/path-key": { 2356 | "version": "4.0.0", 2357 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", 2358 | "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", 2359 | "engines": { 2360 | "node": ">=12" 2361 | }, 2362 | "funding": { 2363 | "url": "https://github.com/sponsors/sindresorhus" 2364 | } 2365 | }, 2366 | "node_modules/once": { 2367 | "version": "1.4.0", 2368 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2369 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2370 | "dev": true, 2371 | "dependencies": { 2372 | "wrappy": "1" 2373 | } 2374 | }, 2375 | "node_modules/onetime": { 2376 | "version": "6.0.0", 2377 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", 2378 | "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", 2379 | "dependencies": { 2380 | "mimic-fn": "^4.0.0" 2381 | }, 2382 | "engines": { 2383 | "node": ">=12" 2384 | }, 2385 | "funding": { 2386 | "url": "https://github.com/sponsors/sindresorhus" 2387 | } 2388 | }, 2389 | "node_modules/open": { 2390 | "version": "9.1.0", 2391 | "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", 2392 | "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", 2393 | "dependencies": { 2394 | "default-browser": "^4.0.0", 2395 | "define-lazy-prop": "^3.0.0", 2396 | "is-inside-container": "^1.0.0", 2397 | "is-wsl": "^2.2.0" 2398 | }, 2399 | "engines": { 2400 | "node": ">=14.16" 2401 | }, 2402 | "funding": { 2403 | "url": "https://github.com/sponsors/sindresorhus" 2404 | } 2405 | }, 2406 | "node_modules/p-limit": { 2407 | "version": "4.0.0", 2408 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", 2409 | "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", 2410 | "dependencies": { 2411 | "yocto-queue": "^1.0.0" 2412 | }, 2413 | "engines": { 2414 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2415 | }, 2416 | "funding": { 2417 | "url": "https://github.com/sponsors/sindresorhus" 2418 | } 2419 | }, 2420 | "node_modules/p-locate": { 2421 | "version": "6.0.0", 2422 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", 2423 | "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", 2424 | "dependencies": { 2425 | "p-limit": "^4.0.0" 2426 | }, 2427 | "engines": { 2428 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2429 | }, 2430 | "funding": { 2431 | "url": "https://github.com/sponsors/sindresorhus" 2432 | } 2433 | }, 2434 | "node_modules/path-exists": { 2435 | "version": "5.0.0", 2436 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", 2437 | "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", 2438 | "engines": { 2439 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2440 | } 2441 | }, 2442 | "node_modules/path-is-absolute": { 2443 | "version": "1.0.1", 2444 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2445 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2446 | "dev": true, 2447 | "engines": { 2448 | "node": ">=0.10.0" 2449 | } 2450 | }, 2451 | "node_modules/path-key": { 2452 | "version": "3.1.1", 2453 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2454 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2455 | "engines": { 2456 | "node": ">=8" 2457 | } 2458 | }, 2459 | "node_modules/path-scurry": { 2460 | "version": "1.10.1", 2461 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", 2462 | "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", 2463 | "dependencies": { 2464 | "lru-cache": "^9.1.1 || ^10.0.0", 2465 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 2466 | }, 2467 | "engines": { 2468 | "node": ">=16 || 14 >=14.17" 2469 | }, 2470 | "funding": { 2471 | "url": "https://github.com/sponsors/isaacs" 2472 | } 2473 | }, 2474 | "node_modules/path-type": { 2475 | "version": "4.0.0", 2476 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2477 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2478 | "engines": { 2479 | "node": ">=8" 2480 | } 2481 | }, 2482 | "node_modules/pathe": { 2483 | "version": "1.1.1", 2484 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", 2485 | "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", 2486 | "dev": true 2487 | }, 2488 | "node_modules/pathval": { 2489 | "version": "1.1.1", 2490 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 2491 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 2492 | "dev": true, 2493 | "engines": { 2494 | "node": "*" 2495 | } 2496 | }, 2497 | "node_modules/picocolors": { 2498 | "version": "1.0.0", 2499 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2500 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 2501 | }, 2502 | "node_modules/picomatch": { 2503 | "version": "2.3.1", 2504 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2505 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2506 | "engines": { 2507 | "node": ">=8.6" 2508 | }, 2509 | "funding": { 2510 | "url": "https://github.com/sponsors/jonschlinkert" 2511 | } 2512 | }, 2513 | "node_modules/pidtree": { 2514 | "version": "0.6.0", 2515 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", 2516 | "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", 2517 | "bin": { 2518 | "pidtree": "bin/pidtree.js" 2519 | }, 2520 | "engines": { 2521 | "node": ">=0.10" 2522 | } 2523 | }, 2524 | "node_modules/pkg-conf": { 2525 | "version": "4.0.0", 2526 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz", 2527 | "integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==", 2528 | "dependencies": { 2529 | "find-up": "^6.0.0", 2530 | "load-json-file": "^7.0.0" 2531 | }, 2532 | "engines": { 2533 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2534 | }, 2535 | "funding": { 2536 | "url": "https://github.com/sponsors/sindresorhus" 2537 | } 2538 | }, 2539 | "node_modules/pkg-types": { 2540 | "version": "1.0.3", 2541 | "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", 2542 | "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", 2543 | "dev": true, 2544 | "dependencies": { 2545 | "jsonc-parser": "^3.2.0", 2546 | "mlly": "^1.2.0", 2547 | "pathe": "^1.1.0" 2548 | } 2549 | }, 2550 | "node_modules/postcss": { 2551 | "version": "8.4.31", 2552 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 2553 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 2554 | "dev": true, 2555 | "funding": [ 2556 | { 2557 | "type": "opencollective", 2558 | "url": "https://opencollective.com/postcss/" 2559 | }, 2560 | { 2561 | "type": "tidelift", 2562 | "url": "https://tidelift.com/funding/github/npm/postcss" 2563 | }, 2564 | { 2565 | "type": "github", 2566 | "url": "https://github.com/sponsors/ai" 2567 | } 2568 | ], 2569 | "dependencies": { 2570 | "nanoid": "^3.3.6", 2571 | "picocolors": "^1.0.0", 2572 | "source-map-js": "^1.0.2" 2573 | }, 2574 | "engines": { 2575 | "node": "^10 || ^12 || >=14" 2576 | } 2577 | }, 2578 | "node_modules/prettier": { 2579 | "version": "3.0.3", 2580 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", 2581 | "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", 2582 | "bin": { 2583 | "prettier": "bin/prettier.cjs" 2584 | }, 2585 | "engines": { 2586 | "node": ">=14" 2587 | }, 2588 | "funding": { 2589 | "url": "https://github.com/prettier/prettier?sponsor=1" 2590 | } 2591 | }, 2592 | "node_modules/prettier-plugin-packagejson": { 2593 | "version": "2.4.6", 2594 | "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.4.6.tgz", 2595 | "integrity": "sha512-5JGfzkJRL0DLNyhwmiAV9mV0hZLHDwddFCs2lc9CNxOChpoWUQVe8K4qTMktmevmDlMpok2uT10nvHUyU59sNw==", 2596 | "dependencies": { 2597 | "sort-package-json": "2.6.0", 2598 | "synckit": "0.8.5" 2599 | }, 2600 | "peerDependencies": { 2601 | "prettier": ">= 1.16.0" 2602 | }, 2603 | "peerDependenciesMeta": { 2604 | "prettier": { 2605 | "optional": true 2606 | } 2607 | } 2608 | }, 2609 | "node_modules/pretty-format": { 2610 | "version": "29.6.3", 2611 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", 2612 | "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", 2613 | "dev": true, 2614 | "dependencies": { 2615 | "@jest/schemas": "^29.6.3", 2616 | "ansi-styles": "^5.0.0", 2617 | "react-is": "^18.0.0" 2618 | }, 2619 | "engines": { 2620 | "node": "^14.15.0 || ^16.10.0 || >=18.0.0" 2621 | } 2622 | }, 2623 | "node_modules/pretty-format/node_modules/ansi-styles": { 2624 | "version": "5.2.0", 2625 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 2626 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 2627 | "dev": true, 2628 | "engines": { 2629 | "node": ">=10" 2630 | }, 2631 | "funding": { 2632 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2633 | } 2634 | }, 2635 | "node_modules/queue-microtask": { 2636 | "version": "1.2.3", 2637 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2638 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2639 | "funding": [ 2640 | { 2641 | "type": "github", 2642 | "url": "https://github.com/sponsors/feross" 2643 | }, 2644 | { 2645 | "type": "patreon", 2646 | "url": "https://www.patreon.com/feross" 2647 | }, 2648 | { 2649 | "type": "consulting", 2650 | "url": "https://feross.org/support" 2651 | } 2652 | ] 2653 | }, 2654 | "node_modules/react-is": { 2655 | "version": "18.2.0", 2656 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", 2657 | "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", 2658 | "dev": true 2659 | }, 2660 | "node_modules/restore-cursor": { 2661 | "version": "4.0.0", 2662 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 2663 | "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 2664 | "dependencies": { 2665 | "onetime": "^5.1.0", 2666 | "signal-exit": "^3.0.2" 2667 | }, 2668 | "engines": { 2669 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2670 | }, 2671 | "funding": { 2672 | "url": "https://github.com/sponsors/sindresorhus" 2673 | } 2674 | }, 2675 | "node_modules/restore-cursor/node_modules/mimic-fn": { 2676 | "version": "2.1.0", 2677 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2678 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2679 | "engines": { 2680 | "node": ">=6" 2681 | } 2682 | }, 2683 | "node_modules/restore-cursor/node_modules/onetime": { 2684 | "version": "5.1.2", 2685 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 2686 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 2687 | "dependencies": { 2688 | "mimic-fn": "^2.1.0" 2689 | }, 2690 | "engines": { 2691 | "node": ">=6" 2692 | }, 2693 | "funding": { 2694 | "url": "https://github.com/sponsors/sindresorhus" 2695 | } 2696 | }, 2697 | "node_modules/reusify": { 2698 | "version": "1.0.4", 2699 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2700 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2701 | "engines": { 2702 | "iojs": ">=1.0.0", 2703 | "node": ">=0.10.0" 2704 | } 2705 | }, 2706 | "node_modules/rfdc": { 2707 | "version": "1.3.0", 2708 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 2709 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" 2710 | }, 2711 | "node_modules/rimraf": { 2712 | "version": "5.0.1", 2713 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", 2714 | "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", 2715 | "dependencies": { 2716 | "glob": "^10.2.5" 2717 | }, 2718 | "bin": { 2719 | "rimraf": "dist/cjs/src/bin.js" 2720 | }, 2721 | "engines": { 2722 | "node": ">=14" 2723 | }, 2724 | "funding": { 2725 | "url": "https://github.com/sponsors/isaacs" 2726 | } 2727 | }, 2728 | "node_modules/rollup": { 2729 | "version": "3.29.0", 2730 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.0.tgz", 2731 | "integrity": "sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==", 2732 | "dev": true, 2733 | "bin": { 2734 | "rollup": "dist/bin/rollup" 2735 | }, 2736 | "engines": { 2737 | "node": ">=14.18.0", 2738 | "npm": ">=8.0.0" 2739 | }, 2740 | "optionalDependencies": { 2741 | "fsevents": "~2.3.2" 2742 | } 2743 | }, 2744 | "node_modules/run-applescript": { 2745 | "version": "5.0.0", 2746 | "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", 2747 | "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", 2748 | "dependencies": { 2749 | "execa": "^5.0.0" 2750 | }, 2751 | "engines": { 2752 | "node": ">=12" 2753 | }, 2754 | "funding": { 2755 | "url": "https://github.com/sponsors/sindresorhus" 2756 | } 2757 | }, 2758 | "node_modules/run-applescript/node_modules/execa": { 2759 | "version": "5.1.1", 2760 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 2761 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 2762 | "dependencies": { 2763 | "cross-spawn": "^7.0.3", 2764 | "get-stream": "^6.0.0", 2765 | "human-signals": "^2.1.0", 2766 | "is-stream": "^2.0.0", 2767 | "merge-stream": "^2.0.0", 2768 | "npm-run-path": "^4.0.1", 2769 | "onetime": "^5.1.2", 2770 | "signal-exit": "^3.0.3", 2771 | "strip-final-newline": "^2.0.0" 2772 | }, 2773 | "engines": { 2774 | "node": ">=10" 2775 | }, 2776 | "funding": { 2777 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 2778 | } 2779 | }, 2780 | "node_modules/run-applescript/node_modules/human-signals": { 2781 | "version": "2.1.0", 2782 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 2783 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 2784 | "engines": { 2785 | "node": ">=10.17.0" 2786 | } 2787 | }, 2788 | "node_modules/run-applescript/node_modules/is-stream": { 2789 | "version": "2.0.1", 2790 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2791 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2792 | "engines": { 2793 | "node": ">=8" 2794 | }, 2795 | "funding": { 2796 | "url": "https://github.com/sponsors/sindresorhus" 2797 | } 2798 | }, 2799 | "node_modules/run-applescript/node_modules/mimic-fn": { 2800 | "version": "2.1.0", 2801 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2802 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2803 | "engines": { 2804 | "node": ">=6" 2805 | } 2806 | }, 2807 | "node_modules/run-applescript/node_modules/npm-run-path": { 2808 | "version": "4.0.1", 2809 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 2810 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 2811 | "dependencies": { 2812 | "path-key": "^3.0.0" 2813 | }, 2814 | "engines": { 2815 | "node": ">=8" 2816 | } 2817 | }, 2818 | "node_modules/run-applescript/node_modules/onetime": { 2819 | "version": "5.1.2", 2820 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 2821 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 2822 | "dependencies": { 2823 | "mimic-fn": "^2.1.0" 2824 | }, 2825 | "engines": { 2826 | "node": ">=6" 2827 | }, 2828 | "funding": { 2829 | "url": "https://github.com/sponsors/sindresorhus" 2830 | } 2831 | }, 2832 | "node_modules/run-applescript/node_modules/strip-final-newline": { 2833 | "version": "2.0.0", 2834 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 2835 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 2836 | "engines": { 2837 | "node": ">=6" 2838 | } 2839 | }, 2840 | "node_modules/run-parallel": { 2841 | "version": "1.2.0", 2842 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2843 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2844 | "funding": [ 2845 | { 2846 | "type": "github", 2847 | "url": "https://github.com/sponsors/feross" 2848 | }, 2849 | { 2850 | "type": "patreon", 2851 | "url": "https://www.patreon.com/feross" 2852 | }, 2853 | { 2854 | "type": "consulting", 2855 | "url": "https://feross.org/support" 2856 | } 2857 | ], 2858 | "dependencies": { 2859 | "queue-microtask": "^1.2.2" 2860 | } 2861 | }, 2862 | "node_modules/semver": { 2863 | "version": "7.5.4", 2864 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 2865 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 2866 | "dev": true, 2867 | "dependencies": { 2868 | "lru-cache": "^6.0.0" 2869 | }, 2870 | "bin": { 2871 | "semver": "bin/semver.js" 2872 | }, 2873 | "engines": { 2874 | "node": ">=10" 2875 | } 2876 | }, 2877 | "node_modules/semver/node_modules/lru-cache": { 2878 | "version": "6.0.0", 2879 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2880 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2881 | "dev": true, 2882 | "dependencies": { 2883 | "yallist": "^4.0.0" 2884 | }, 2885 | "engines": { 2886 | "node": ">=10" 2887 | } 2888 | }, 2889 | "node_modules/shebang-command": { 2890 | "version": "2.0.0", 2891 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2892 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2893 | "dependencies": { 2894 | "shebang-regex": "^3.0.0" 2895 | }, 2896 | "engines": { 2897 | "node": ">=8" 2898 | } 2899 | }, 2900 | "node_modules/shebang-regex": { 2901 | "version": "3.0.0", 2902 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2903 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2904 | "engines": { 2905 | "node": ">=8" 2906 | } 2907 | }, 2908 | "node_modules/siginfo": { 2909 | "version": "2.0.0", 2910 | "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", 2911 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 2912 | "dev": true 2913 | }, 2914 | "node_modules/signal-exit": { 2915 | "version": "3.0.7", 2916 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2917 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 2918 | }, 2919 | "node_modules/slash": { 2920 | "version": "4.0.0", 2921 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 2922 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", 2923 | "engines": { 2924 | "node": ">=12" 2925 | }, 2926 | "funding": { 2927 | "url": "https://github.com/sponsors/sindresorhus" 2928 | } 2929 | }, 2930 | "node_modules/slice-ansi": { 2931 | "version": "5.0.0", 2932 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 2933 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 2934 | "dependencies": { 2935 | "ansi-styles": "^6.0.0", 2936 | "is-fullwidth-code-point": "^4.0.0" 2937 | }, 2938 | "engines": { 2939 | "node": ">=12" 2940 | }, 2941 | "funding": { 2942 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 2943 | } 2944 | }, 2945 | "node_modules/slice-ansi/node_modules/ansi-styles": { 2946 | "version": "6.2.1", 2947 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 2948 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 2949 | "engines": { 2950 | "node": ">=12" 2951 | }, 2952 | "funding": { 2953 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2954 | } 2955 | }, 2956 | "node_modules/sort-object-keys": { 2957 | "version": "1.1.3", 2958 | "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", 2959 | "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==" 2960 | }, 2961 | "node_modules/sort-package-json": { 2962 | "version": "2.6.0", 2963 | "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.6.0.tgz", 2964 | "integrity": "sha512-XSQ+lY9bAYA8ZsoChcEoPlgcSMaheziEp1beox1JVxy1SV4F2jSq9+h2rJ+3mC/Dhu9Ius1DLnInD5AWcsDXZw==", 2965 | "dependencies": { 2966 | "detect-indent": "^7.0.1", 2967 | "detect-newline": "^4.0.0", 2968 | "get-stdin": "^9.0.0", 2969 | "git-hooks-list": "^3.0.0", 2970 | "globby": "^13.1.2", 2971 | "is-plain-obj": "^4.1.0", 2972 | "sort-object-keys": "^1.1.3" 2973 | }, 2974 | "bin": { 2975 | "sort-package-json": "cli.js" 2976 | } 2977 | }, 2978 | "node_modules/source-map": { 2979 | "version": "0.6.1", 2980 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2981 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2982 | "dev": true, 2983 | "engines": { 2984 | "node": ">=0.10.0" 2985 | } 2986 | }, 2987 | "node_modules/source-map-js": { 2988 | "version": "1.0.2", 2989 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2990 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2991 | "dev": true, 2992 | "engines": { 2993 | "node": ">=0.10.0" 2994 | } 2995 | }, 2996 | "node_modules/source-map-support": { 2997 | "version": "0.5.21", 2998 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 2999 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3000 | "dev": true, 3001 | "dependencies": { 3002 | "buffer-from": "^1.0.0", 3003 | "source-map": "^0.6.0" 3004 | } 3005 | }, 3006 | "node_modules/stackback": { 3007 | "version": "0.0.2", 3008 | "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", 3009 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 3010 | "dev": true 3011 | }, 3012 | "node_modules/std-env": { 3013 | "version": "3.4.3", 3014 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", 3015 | "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", 3016 | "dev": true 3017 | }, 3018 | "node_modules/string-argv": { 3019 | "version": "0.3.2", 3020 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", 3021 | "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", 3022 | "engines": { 3023 | "node": ">=0.6.19" 3024 | } 3025 | }, 3026 | "node_modules/string-width": { 3027 | "version": "5.1.2", 3028 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 3029 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 3030 | "dependencies": { 3031 | "eastasianwidth": "^0.2.0", 3032 | "emoji-regex": "^9.2.2", 3033 | "strip-ansi": "^7.0.1" 3034 | }, 3035 | "engines": { 3036 | "node": ">=12" 3037 | }, 3038 | "funding": { 3039 | "url": "https://github.com/sponsors/sindresorhus" 3040 | } 3041 | }, 3042 | "node_modules/string-width-cjs": { 3043 | "name": "string-width", 3044 | "version": "4.2.3", 3045 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3046 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3047 | "dependencies": { 3048 | "emoji-regex": "^8.0.0", 3049 | "is-fullwidth-code-point": "^3.0.0", 3050 | "strip-ansi": "^6.0.1" 3051 | }, 3052 | "engines": { 3053 | "node": ">=8" 3054 | } 3055 | }, 3056 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 3057 | "version": "8.0.0", 3058 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3059 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 3060 | }, 3061 | "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { 3062 | "version": "3.0.0", 3063 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3064 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3065 | "engines": { 3066 | "node": ">=8" 3067 | } 3068 | }, 3069 | "node_modules/string-width/node_modules/ansi-regex": { 3070 | "version": "6.0.1", 3071 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 3072 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 3073 | "engines": { 3074 | "node": ">=12" 3075 | }, 3076 | "funding": { 3077 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 3078 | } 3079 | }, 3080 | "node_modules/string-width/node_modules/strip-ansi": { 3081 | "version": "7.1.0", 3082 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 3083 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 3084 | "dependencies": { 3085 | "ansi-regex": "^6.0.1" 3086 | }, 3087 | "engines": { 3088 | "node": ">=12" 3089 | }, 3090 | "funding": { 3091 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 3092 | } 3093 | }, 3094 | "node_modules/strip-ansi": { 3095 | "version": "6.0.1", 3096 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3097 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3098 | "dependencies": { 3099 | "ansi-regex": "^5.0.1" 3100 | }, 3101 | "engines": { 3102 | "node": ">=8" 3103 | } 3104 | }, 3105 | "node_modules/strip-ansi-cjs": { 3106 | "name": "strip-ansi", 3107 | "version": "6.0.1", 3108 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3109 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3110 | "dependencies": { 3111 | "ansi-regex": "^5.0.1" 3112 | }, 3113 | "engines": { 3114 | "node": ">=8" 3115 | } 3116 | }, 3117 | "node_modules/strip-final-newline": { 3118 | "version": "3.0.0", 3119 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", 3120 | "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", 3121 | "engines": { 3122 | "node": ">=12" 3123 | }, 3124 | "funding": { 3125 | "url": "https://github.com/sponsors/sindresorhus" 3126 | } 3127 | }, 3128 | "node_modules/strip-literal": { 3129 | "version": "1.3.0", 3130 | "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", 3131 | "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", 3132 | "dev": true, 3133 | "dependencies": { 3134 | "acorn": "^8.10.0" 3135 | }, 3136 | "funding": { 3137 | "url": "https://github.com/sponsors/antfu" 3138 | } 3139 | }, 3140 | "node_modules/supports-color": { 3141 | "version": "7.2.0", 3142 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3143 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3144 | "dev": true, 3145 | "dependencies": { 3146 | "has-flag": "^4.0.0" 3147 | }, 3148 | "engines": { 3149 | "node": ">=8" 3150 | } 3151 | }, 3152 | "node_modules/synckit": { 3153 | "version": "0.8.5", 3154 | "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", 3155 | "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", 3156 | "dependencies": { 3157 | "@pkgr/utils": "^2.3.1", 3158 | "tslib": "^2.5.0" 3159 | }, 3160 | "engines": { 3161 | "node": "^14.18.0 || >=16.0.0" 3162 | }, 3163 | "funding": { 3164 | "url": "https://opencollective.com/unts" 3165 | } 3166 | }, 3167 | "node_modules/test-exclude": { 3168 | "version": "6.0.0", 3169 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 3170 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 3171 | "dev": true, 3172 | "dependencies": { 3173 | "@istanbuljs/schema": "^0.1.2", 3174 | "glob": "^7.1.4", 3175 | "minimatch": "^3.0.4" 3176 | }, 3177 | "engines": { 3178 | "node": ">=8" 3179 | } 3180 | }, 3181 | "node_modules/test-exclude/node_modules/glob": { 3182 | "version": "7.2.3", 3183 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 3184 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 3185 | "dev": true, 3186 | "dependencies": { 3187 | "fs.realpath": "^1.0.0", 3188 | "inflight": "^1.0.4", 3189 | "inherits": "2", 3190 | "minimatch": "^3.1.1", 3191 | "once": "^1.3.0", 3192 | "path-is-absolute": "^1.0.0" 3193 | }, 3194 | "engines": { 3195 | "node": "*" 3196 | }, 3197 | "funding": { 3198 | "url": "https://github.com/sponsors/isaacs" 3199 | } 3200 | }, 3201 | "node_modules/tinybench": { 3202 | "version": "2.5.0", 3203 | "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", 3204 | "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==", 3205 | "dev": true 3206 | }, 3207 | "node_modules/tinypool": { 3208 | "version": "0.7.0", 3209 | "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", 3210 | "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", 3211 | "dev": true, 3212 | "engines": { 3213 | "node": ">=14.0.0" 3214 | } 3215 | }, 3216 | "node_modules/tinyspy": { 3217 | "version": "2.1.1", 3218 | "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", 3219 | "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", 3220 | "dev": true, 3221 | "engines": { 3222 | "node": ">=14.0.0" 3223 | } 3224 | }, 3225 | "node_modules/titleize": { 3226 | "version": "3.0.0", 3227 | "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", 3228 | "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", 3229 | "engines": { 3230 | "node": ">=12" 3231 | }, 3232 | "funding": { 3233 | "url": "https://github.com/sponsors/sindresorhus" 3234 | } 3235 | }, 3236 | "node_modules/to-regex-range": { 3237 | "version": "5.0.1", 3238 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3239 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3240 | "dependencies": { 3241 | "is-number": "^7.0.0" 3242 | }, 3243 | "engines": { 3244 | "node": ">=8.0" 3245 | } 3246 | }, 3247 | "node_modules/tslib": { 3248 | "version": "2.6.2", 3249 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 3250 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 3251 | }, 3252 | "node_modules/tsx": { 3253 | "version": "3.4.2", 3254 | "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.4.2.tgz", 3255 | "integrity": "sha512-Rd1gm2noOUiVynF+VFxo4bVBNbzS6haWKWtlQ0bEfCLLEqm+GG3R98D3Rqk6foQ3NnJk6JAWOx1ragwcAPj4Lg==", 3256 | "dev": true, 3257 | "dependencies": { 3258 | "@esbuild-kit/cjs-loader": "^2.0.1", 3259 | "@esbuild-kit/core-utils": "^1.2.0", 3260 | "@esbuild-kit/esm-loader": "^2.1.3" 3261 | }, 3262 | "bin": { 3263 | "tsx": "dist/cli.js" 3264 | }, 3265 | "optionalDependencies": { 3266 | "fsevents": "~2.3.2" 3267 | } 3268 | }, 3269 | "node_modules/type-detect": { 3270 | "version": "4.0.8", 3271 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 3272 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 3273 | "dev": true, 3274 | "engines": { 3275 | "node": ">=4" 3276 | } 3277 | }, 3278 | "node_modules/type-fest": { 3279 | "version": "1.4.0", 3280 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 3281 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", 3282 | "engines": { 3283 | "node": ">=10" 3284 | }, 3285 | "funding": { 3286 | "url": "https://github.com/sponsors/sindresorhus" 3287 | } 3288 | }, 3289 | "node_modules/typescript": { 3290 | "version": "5.2.2", 3291 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", 3292 | "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", 3293 | "dev": true, 3294 | "bin": { 3295 | "tsc": "bin/tsc", 3296 | "tsserver": "bin/tsserver" 3297 | }, 3298 | "engines": { 3299 | "node": ">=14.17" 3300 | } 3301 | }, 3302 | "node_modules/ufo": { 3303 | "version": "1.3.0", 3304 | "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", 3305 | "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", 3306 | "dev": true 3307 | }, 3308 | "node_modules/untildify": { 3309 | "version": "4.0.0", 3310 | "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", 3311 | "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", 3312 | "engines": { 3313 | "node": ">=8" 3314 | } 3315 | }, 3316 | "node_modules/v8-to-istanbul": { 3317 | "version": "9.1.0", 3318 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", 3319 | "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", 3320 | "dev": true, 3321 | "dependencies": { 3322 | "@jridgewell/trace-mapping": "^0.3.12", 3323 | "@types/istanbul-lib-coverage": "^2.0.1", 3324 | "convert-source-map": "^1.6.0" 3325 | }, 3326 | "engines": { 3327 | "node": ">=10.12.0" 3328 | } 3329 | }, 3330 | "node_modules/vite": { 3331 | "version": "4.4.9", 3332 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", 3333 | "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", 3334 | "dev": true, 3335 | "dependencies": { 3336 | "esbuild": "^0.18.10", 3337 | "postcss": "^8.4.27", 3338 | "rollup": "^3.27.1" 3339 | }, 3340 | "bin": { 3341 | "vite": "bin/vite.js" 3342 | }, 3343 | "engines": { 3344 | "node": "^14.18.0 || >=16.0.0" 3345 | }, 3346 | "funding": { 3347 | "url": "https://github.com/vitejs/vite?sponsor=1" 3348 | }, 3349 | "optionalDependencies": { 3350 | "fsevents": "~2.3.2" 3351 | }, 3352 | "peerDependencies": { 3353 | "@types/node": ">= 14", 3354 | "less": "*", 3355 | "lightningcss": "^1.21.0", 3356 | "sass": "*", 3357 | "stylus": "*", 3358 | "sugarss": "*", 3359 | "terser": "^5.4.0" 3360 | }, 3361 | "peerDependenciesMeta": { 3362 | "@types/node": { 3363 | "optional": true 3364 | }, 3365 | "less": { 3366 | "optional": true 3367 | }, 3368 | "lightningcss": { 3369 | "optional": true 3370 | }, 3371 | "sass": { 3372 | "optional": true 3373 | }, 3374 | "stylus": { 3375 | "optional": true 3376 | }, 3377 | "sugarss": { 3378 | "optional": true 3379 | }, 3380 | "terser": { 3381 | "optional": true 3382 | } 3383 | } 3384 | }, 3385 | "node_modules/vite-node": { 3386 | "version": "0.34.4", 3387 | "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", 3388 | "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", 3389 | "dev": true, 3390 | "dependencies": { 3391 | "cac": "^6.7.14", 3392 | "debug": "^4.3.4", 3393 | "mlly": "^1.4.0", 3394 | "pathe": "^1.1.1", 3395 | "picocolors": "^1.0.0", 3396 | "vite": "^3.0.0 || ^4.0.0" 3397 | }, 3398 | "bin": { 3399 | "vite-node": "vite-node.mjs" 3400 | }, 3401 | "engines": { 3402 | "node": ">=v14.18.0" 3403 | }, 3404 | "funding": { 3405 | "url": "https://opencollective.com/vitest" 3406 | } 3407 | }, 3408 | "node_modules/vitest": { 3409 | "version": "0.34.4", 3410 | "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", 3411 | "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", 3412 | "dev": true, 3413 | "dependencies": { 3414 | "@types/chai": "^4.3.5", 3415 | "@types/chai-subset": "^1.3.3", 3416 | "@types/node": "*", 3417 | "@vitest/expect": "0.34.4", 3418 | "@vitest/runner": "0.34.4", 3419 | "@vitest/snapshot": "0.34.4", 3420 | "@vitest/spy": "0.34.4", 3421 | "@vitest/utils": "0.34.4", 3422 | "acorn": "^8.9.0", 3423 | "acorn-walk": "^8.2.0", 3424 | "cac": "^6.7.14", 3425 | "chai": "^4.3.7", 3426 | "debug": "^4.3.4", 3427 | "local-pkg": "^0.4.3", 3428 | "magic-string": "^0.30.1", 3429 | "pathe": "^1.1.1", 3430 | "picocolors": "^1.0.0", 3431 | "std-env": "^3.3.3", 3432 | "strip-literal": "^1.0.1", 3433 | "tinybench": "^2.5.0", 3434 | "tinypool": "^0.7.0", 3435 | "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", 3436 | "vite-node": "0.34.4", 3437 | "why-is-node-running": "^2.2.2" 3438 | }, 3439 | "bin": { 3440 | "vitest": "vitest.mjs" 3441 | }, 3442 | "engines": { 3443 | "node": ">=v14.18.0" 3444 | }, 3445 | "funding": { 3446 | "url": "https://opencollective.com/vitest" 3447 | }, 3448 | "peerDependencies": { 3449 | "@edge-runtime/vm": "*", 3450 | "@vitest/browser": "*", 3451 | "@vitest/ui": "*", 3452 | "happy-dom": "*", 3453 | "jsdom": "*", 3454 | "playwright": "*", 3455 | "safaridriver": "*", 3456 | "webdriverio": "*" 3457 | }, 3458 | "peerDependenciesMeta": { 3459 | "@edge-runtime/vm": { 3460 | "optional": true 3461 | }, 3462 | "@vitest/browser": { 3463 | "optional": true 3464 | }, 3465 | "@vitest/ui": { 3466 | "optional": true 3467 | }, 3468 | "happy-dom": { 3469 | "optional": true 3470 | }, 3471 | "jsdom": { 3472 | "optional": true 3473 | }, 3474 | "playwright": { 3475 | "optional": true 3476 | }, 3477 | "safaridriver": { 3478 | "optional": true 3479 | }, 3480 | "webdriverio": { 3481 | "optional": true 3482 | } 3483 | } 3484 | }, 3485 | "node_modules/which": { 3486 | "version": "2.0.2", 3487 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3488 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3489 | "dependencies": { 3490 | "isexe": "^2.0.0" 3491 | }, 3492 | "bin": { 3493 | "node-which": "bin/node-which" 3494 | }, 3495 | "engines": { 3496 | "node": ">= 8" 3497 | } 3498 | }, 3499 | "node_modules/why-is-node-running": { 3500 | "version": "2.2.2", 3501 | "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", 3502 | "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", 3503 | "dev": true, 3504 | "dependencies": { 3505 | "siginfo": "^2.0.0", 3506 | "stackback": "0.0.2" 3507 | }, 3508 | "bin": { 3509 | "why-is-node-running": "cli.js" 3510 | }, 3511 | "engines": { 3512 | "node": ">=8" 3513 | } 3514 | }, 3515 | "node_modules/wrap-ansi": { 3516 | "version": "8.1.0", 3517 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 3518 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 3519 | "dependencies": { 3520 | "ansi-styles": "^6.1.0", 3521 | "string-width": "^5.0.1", 3522 | "strip-ansi": "^7.0.1" 3523 | }, 3524 | "engines": { 3525 | "node": ">=12" 3526 | }, 3527 | "funding": { 3528 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3529 | } 3530 | }, 3531 | "node_modules/wrap-ansi-cjs": { 3532 | "name": "wrap-ansi", 3533 | "version": "7.0.0", 3534 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3535 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3536 | "dependencies": { 3537 | "ansi-styles": "^4.0.0", 3538 | "string-width": "^4.1.0", 3539 | "strip-ansi": "^6.0.0" 3540 | }, 3541 | "engines": { 3542 | "node": ">=10" 3543 | }, 3544 | "funding": { 3545 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3546 | } 3547 | }, 3548 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 3549 | "version": "8.0.0", 3550 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3551 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 3552 | }, 3553 | "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { 3554 | "version": "3.0.0", 3555 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3556 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3557 | "engines": { 3558 | "node": ">=8" 3559 | } 3560 | }, 3561 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 3562 | "version": "4.2.3", 3563 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3564 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3565 | "dependencies": { 3566 | "emoji-regex": "^8.0.0", 3567 | "is-fullwidth-code-point": "^3.0.0", 3568 | "strip-ansi": "^6.0.1" 3569 | }, 3570 | "engines": { 3571 | "node": ">=8" 3572 | } 3573 | }, 3574 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 3575 | "version": "6.0.1", 3576 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 3577 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 3578 | "engines": { 3579 | "node": ">=12" 3580 | }, 3581 | "funding": { 3582 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 3583 | } 3584 | }, 3585 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 3586 | "version": "6.2.1", 3587 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 3588 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 3589 | "engines": { 3590 | "node": ">=12" 3591 | }, 3592 | "funding": { 3593 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3594 | } 3595 | }, 3596 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 3597 | "version": "7.1.0", 3598 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 3599 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 3600 | "dependencies": { 3601 | "ansi-regex": "^6.0.1" 3602 | }, 3603 | "engines": { 3604 | "node": ">=12" 3605 | }, 3606 | "funding": { 3607 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 3608 | } 3609 | }, 3610 | "node_modules/wrappy": { 3611 | "version": "1.0.2", 3612 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3613 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3614 | "dev": true 3615 | }, 3616 | "node_modules/yallist": { 3617 | "version": "4.0.0", 3618 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3619 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3620 | "dev": true 3621 | }, 3622 | "node_modules/yaml": { 3623 | "version": "2.3.3", 3624 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", 3625 | "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", 3626 | "engines": { 3627 | "node": ">= 14" 3628 | } 3629 | }, 3630 | "node_modules/yocto-queue": { 3631 | "version": "1.0.0", 3632 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", 3633 | "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", 3634 | "engines": { 3635 | "node": ">=12.20" 3636 | }, 3637 | "funding": { 3638 | "url": "https://github.com/sponsors/sindresorhus" 3639 | } 3640 | }, 3641 | "node_modules/zod": { 3642 | "version": "3.22.4", 3643 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", 3644 | "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", 3645 | "funding": { 3646 | "url": "https://github.com/sponsors/colinhacks" 3647 | } 3648 | } 3649 | } 3650 | } 3651 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@borderless/ts-scripts", 3 | "version": "0.15.0", 4 | "description": "Simple, mostly opinionated, scripts to build TypeScript modules", 5 | "keywords": [ 6 | "scripts", 7 | "typescript", 8 | "package", 9 | "maintain" 10 | ], 11 | "homepage": "https://github.com/borderless/ts-scripts", 12 | "bugs": { 13 | "url": "https://github.com/borderless/ts-scripts/issues" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git://github.com/borderless/ts-scripts.git" 18 | }, 19 | "license": "MIT", 20 | "author": { 21 | "name": "Blake Embrey", 22 | "email": "hello@blakeembrey.com", 23 | "url": "http://blakeembrey.me" 24 | }, 25 | "type": "module", 26 | "exports": { 27 | ".": "./dist/index.js", 28 | "./configs/tsconfig.json": "./configs/tsconfig.json" 29 | }, 30 | "types": "dist/index.d.ts", 31 | "bin": { 32 | "ts-scripts": "dist/bin.js" 33 | }, 34 | "files": [ 35 | "configs/", 36 | "dist/" 37 | ], 38 | "scripts": { 39 | "build": "${BIN_EXEC:=tsx} src/bin.ts build", 40 | "check": "${BIN_EXEC:=tsx} src/bin.ts check", 41 | "format": "${BIN_EXEC:=tsx} src/bin.ts format", 42 | "prepare": "${BIN_EXEC:=tsx} src/bin.ts install", 43 | "prepublishOnly": "npm run build", 44 | "specs": "${BIN_EXEC:=tsx} src/bin.ts specs", 45 | "test": "${BIN_EXEC:=tsx} src/bin.ts test" 46 | }, 47 | "dependencies": { 48 | "arg": "^5.0.1", 49 | "ci-info": "^3.3.0", 50 | "find-up": "^6.2.0", 51 | "husky": "^8.0.1", 52 | "lint-staged": "^15.0.2", 53 | "pkg-conf": "^4.0.0", 54 | "prettier": "^3.0.3", 55 | "prettier-plugin-packagejson": "^2.4.6", 56 | "rimraf": "^5.0.1", 57 | "zod": "^3.17.3" 58 | }, 59 | "devDependencies": { 60 | "@types/node": "^20.6.0", 61 | "@vitest/coverage-v8": "^0.34.4", 62 | "bun-types": "^1.0.1", 63 | "tsx": "^3.4.2", 64 | "typescript": "^5.2.2", 65 | "vitest": "^0.34.4" 66 | }, 67 | "peerDependencies": { 68 | "typescript": "*" 69 | }, 70 | "engines": { 71 | "node": ">=16" 72 | }, 73 | "publishConfig": { 74 | "access": "public" 75 | }, 76 | "ts-scripts": { 77 | "project": [ 78 | "tsconfig.build.json" 79 | ] 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/bin.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import arg from "arg"; 4 | import { main } from "./index.js"; 5 | 6 | const { _: args, "--help": help } = arg( 7 | { "--help": Boolean }, 8 | { stopAtPositional: true }, 9 | ); 10 | 11 | if (help || args.length === 0) { 12 | process.stdout.write(` 13 | Supported commands: build, pre-commit, format, specs, test, lint, check, install 14 | `); 15 | process.exit(0); 16 | } 17 | 18 | main(args, { cwd: process.cwd() }).catch((err) => { 19 | console.error(`❌ ${err.message}`); 20 | process.exit(1); 21 | }); 22 | -------------------------------------------------------------------------------- /src/index.spec.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from "vitest"; 2 | import { main } from "./index.js"; 3 | 4 | describe("ts-scripts", () => { 5 | it("should export a main function", () => { 6 | expect(main).toBeInstanceOf(Function); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import arg from "arg"; 2 | import { packageConfig, packageJsonPath } from "pkg-conf"; 3 | import { isCI } from "ci-info"; 4 | import { resolve, join, posix, dirname } from "path"; 5 | import { fileURLToPath } from "url"; 6 | import { object, string, array, boolean, union, ZodType } from "zod"; 7 | import { findUp } from "find-up"; 8 | 9 | /** 10 | * Test configuration object. 11 | */ 12 | export interface Test { 13 | dir: string | undefined; 14 | config: string | undefined; 15 | } 16 | 17 | /** 18 | * Configuration object. 19 | */ 20 | export interface Config { 21 | debug: boolean; 22 | dir: string; 23 | src: string[]; 24 | ignore: string[]; 25 | dist: string[]; 26 | project: string[]; 27 | checkProject: string[]; 28 | test: Test[]; 29 | } 30 | 31 | /** 32 | * Configuration files. 33 | */ 34 | const filename = fileURLToPath(import.meta.url); 35 | const fileDirname = dirname(filename); 36 | const configDir = resolve(fileDirname, "../configs"); 37 | 38 | /** 39 | * Resolves the absolute path to files within node modules. 40 | */ 41 | async function resolvePath(path: string) { 42 | const result = await findUp(join("node_modules", path), { cwd: fileDirname }); 43 | if (!result) throw TypeError(`Unable to resolve: ${path}`); 44 | return result; 45 | } 46 | 47 | /** 48 | * Paths to node.js CLIs in use. 49 | */ 50 | const PATHS = { 51 | prettier() { 52 | return resolvePath("prettier/bin/prettier.cjs"); 53 | }, 54 | typescript() { 55 | return resolvePath("typescript/bin/tsc"); 56 | }, 57 | lintStaged() { 58 | return resolvePath("lint-staged/bin/lint-staged.js"); 59 | }, 60 | vitest() { 61 | return resolvePath("vitest/vitest.mjs"); 62 | }, 63 | } as const; 64 | 65 | /** Prettier supported glob files. */ 66 | const PRETTIER_GLOB = "*.{js,jsx,ts,tsx,cjs,mjs,json,css,md,yml,yaml}"; 67 | 68 | /** 69 | * Run command configuration. 70 | */ 71 | interface RunOptions { 72 | name: string; 73 | config: Config; 74 | env?: Record; 75 | debug?: boolean; 76 | } 77 | 78 | /** 79 | * Log the step being run. 80 | */ 81 | function logStep(name: string, info?: string) { 82 | console.log(`> Running "${name}"...${info ? ` (${info})` : ""}`); 83 | } 84 | 85 | /** 86 | * Spawn a CLI command process. 87 | */ 88 | async function run( 89 | path: string, 90 | args: string[] = [], 91 | { name, config, env = {} }: RunOptions, 92 | ) { 93 | logStep(name); 94 | 95 | if (config.debug) { 96 | console.log(`> Path: ${JSON.stringify(path)}"`); 97 | console.log(`> Args: ${JSON.stringify(args.join(" "))}`); 98 | } 99 | 100 | if (typeof Bun === "object") { 101 | // Bun has a bug where it exits the parent process when using `spawn`. 102 | const child = Bun.spawnSync([process.argv0, path, ...args], { 103 | stdio: ["inherit", "inherit", "inherit"], 104 | cwd: config.dir, 105 | env: { 106 | ...process.env, 107 | ...env, 108 | }, 109 | }); 110 | 111 | if (child.exitCode) { 112 | throw new Error(`"${name}" exited with ${child.exitCode}`); 113 | } 114 | return; 115 | } 116 | 117 | const { spawn } = await import("child_process"); 118 | 119 | return new Promise((resolve, reject) => { 120 | const child = spawn(process.argv0, [path, ...args], { 121 | stdio: "inherit", 122 | cwd: config.dir, 123 | env: { 124 | ...process.env, 125 | ...env, 126 | }, 127 | }); 128 | 129 | child.on("error", (err) => { 130 | reject(err); 131 | }); 132 | child.on("close", (code, signal) => { 133 | if (code || signal) { 134 | return reject(new Error(`"${name}" exited with ${code || signal}`)); 135 | } 136 | return resolve(); 137 | }); 138 | }); 139 | } 140 | 141 | /** 142 | * Build args from a set of possible values. 143 | */ 144 | function args(...values: Array) { 145 | const result: string[] = []; 146 | for (const arg of values) { 147 | if (Array.isArray(arg)) { 148 | result.push(...arg); 149 | } else if (arg) { 150 | result.push(arg); 151 | } 152 | } 153 | return result; 154 | } 155 | 156 | /** 157 | * Build the project using `tsc`. 158 | */ 159 | export async function build(argv: string[], config: Config) { 160 | const { "--no-clean": noClean } = arg( 161 | { 162 | "--no-clean": Boolean, 163 | }, 164 | { argv }, 165 | ); 166 | 167 | if (!noClean) { 168 | const paths = [ 169 | ...config.dist, 170 | ...config.project.map((x) => x.replace(/\.json$/, ".tsbuildinfo")), 171 | ]; 172 | 173 | // Skip `rimraf` if dist and project have been disabled. 174 | if (paths.length) { 175 | logStep("rimraf"); 176 | 177 | const rimraf = await import("rimraf"); 178 | await rimraf.rimraf(paths); 179 | } 180 | } 181 | 182 | // Build all project references using `--build`. 183 | if (config.project.length) { 184 | await run(await PATHS.typescript(), ["--build", ...config.project], { 185 | name: "tsc --build", 186 | config, 187 | }); 188 | } 189 | } 190 | 191 | /** 192 | * Run the pre-commit hook on every `git commit`. 193 | */ 194 | export async function preCommit(argv: string[], config: Config) { 195 | await run( 196 | await PATHS.lintStaged(), 197 | ["--config", join(configDir, "lint-staged.cjs")], 198 | { 199 | name: "lint-staged", 200 | config, 201 | env: { 202 | TS_SCRIPTS_FORMAT_GLOB: PRETTIER_GLOB, 203 | }, 204 | }, 205 | ); 206 | } 207 | 208 | /** 209 | * Run checks intended for CI, basically formatting without auto-fixing. 210 | */ 211 | export async function check(argv: string[], config: Config) { 212 | await format(["--check"], config); 213 | 214 | // Type check with typescript. 215 | for (const project of config.checkProject) { 216 | await run(await PATHS.typescript(), ["--noEmit", "--project", project], { 217 | name: `tsc --noEmit --project ${project}`, 218 | config, 219 | }); 220 | } 221 | } 222 | 223 | /** 224 | * Run specs using `jest`. 225 | */ 226 | export async function specs(argv: string[], config: Config) { 227 | const { 228 | _: paths, 229 | "--changed": changed, 230 | "--coverage": coverage, 231 | "--since": since, 232 | "--test-pattern": testPattern, 233 | "--ui": ui, 234 | "--update": update, 235 | "--watch": watch, 236 | } = arg( 237 | { 238 | "--changed": Boolean, 239 | "--coverage": Boolean, 240 | "--since": String, 241 | "--test-pattern": String, 242 | "--ui": Boolean, 243 | "--update": Boolean, 244 | "--watch": Number, 245 | "-t": "--test-pattern", 246 | "-u": "--update", 247 | }, 248 | { argv }, 249 | ); 250 | 251 | const path = await PATHS.vitest(); 252 | const defaultArgs = args( 253 | "--passWithNoTests", 254 | coverage && "--coverage", 255 | update && "--update", 256 | changed && !since && "--changed", 257 | testPattern && "--testNamePattern", 258 | since && ["--changed", since], 259 | ui && "--ui", 260 | paths, 261 | ); 262 | 263 | if (watch) { 264 | const test = config.test[watch]; 265 | if (!test) throw new TypeError(`No test config at: ${watch}`); 266 | 267 | return run( 268 | path, 269 | args( 270 | "watch", 271 | test.config && ["--config", test.config], 272 | test.dir && ["--dir", test.dir], 273 | defaultArgs, 274 | ), 275 | { 276 | name: `vitest watch ${test.dir ?? "."}`, 277 | config, 278 | }, 279 | ); 280 | } 281 | 282 | for (const test of config.test) { 283 | await run( 284 | await PATHS.vitest(), 285 | args( 286 | "run", 287 | test.config && ["--config", test.config], 288 | test.dir && ["--dir", test.dir], 289 | defaultArgs, 290 | ), 291 | { 292 | name: `vitest run ${test.dir ?? "."}`, 293 | config, 294 | }, 295 | ); 296 | } 297 | } 298 | 299 | /** 300 | * Run full test suite without automatic fixes. 301 | */ 302 | export async function test(argv: string[], config: Config) { 303 | await build(["--no-clean"], config); 304 | await check([], config); 305 | await specs(["--coverage"], config); 306 | } 307 | 308 | /** 309 | * Format code using `prettier`. 310 | */ 311 | export async function format(argv: string[], config: Config) { 312 | const { _: paths, "--check": check } = arg( 313 | { 314 | "--check": Boolean, 315 | }, 316 | { argv }, 317 | ); 318 | 319 | if (!paths.length) { 320 | paths.push(PRETTIER_GLOB); 321 | for (const src of config.src) { 322 | paths.push(posix.join(src, `**/${PRETTIER_GLOB}`)); 323 | } 324 | } 325 | 326 | for (const ignore of config.ignore) { 327 | paths.push(`!${ignore}`); 328 | } 329 | 330 | const prettierPath = await PATHS.prettier(); 331 | 332 | await run( 333 | prettierPath, 334 | args( 335 | ["--config", join(configDir, "prettier.js")], 336 | !check && "--write", 337 | check && "--check", 338 | paths, 339 | ), 340 | { 341 | name: "prettier", 342 | config, 343 | }, 344 | ); 345 | } 346 | 347 | /** 348 | * Install any configuration needed for `ts-scripts` to work. 349 | */ 350 | export async function install(argv: string[], config: Config) { 351 | if (isCI) return; 352 | 353 | const dir = typeof Bun === "object" ? "bun" : "node"; 354 | 355 | logStep("husky", `using ${dir}`); 356 | 357 | const husky = await import("husky"); 358 | husky.install(join(configDir, "husky", dir)); 359 | } 360 | 361 | /** 362 | * Prints the generated configuration for debugging. 363 | */ 364 | export async function config(argv: string[], config: Config) { 365 | console.log(JSON.stringify(config, null, 2)); 366 | } 367 | 368 | /** 369 | * Supported scripts. 370 | */ 371 | const scripts = new Map([ 372 | ["build", build], 373 | ["pre-commit", preCommit], 374 | ["format", format], 375 | ["specs", specs], 376 | ["test", test], 377 | ["check", check], 378 | ["install", install], 379 | ["config", config], 380 | ]); 381 | 382 | /** 383 | * Allow array or string values for schema entries. 384 | */ 385 | const arrayifySchema = >(value: T) => { 386 | return union([value, array(value)]); 387 | }; 388 | 389 | /** 390 | * Convert value into array format. 391 | */ 392 | const arrayify = (value: T | T[]) => { 393 | return Array.isArray(value) ? value : [value]; 394 | }; 395 | 396 | /** 397 | * Configuration schema object for validation. 398 | */ 399 | const configSchema = object({ 400 | debug: boolean().optional(), 401 | src: arrayifySchema(string()).optional(), 402 | ignore: arrayifySchema(string()).optional(), 403 | dist: arrayifySchema(string()).optional(), 404 | project: arrayifySchema(string()).optional(), 405 | checkProject: arrayifySchema(string()).optional(), 406 | test: arrayifySchema( 407 | object({ 408 | dir: string().optional(), 409 | config: string().optional(), 410 | }), 411 | ).optional(), 412 | }); 413 | 414 | /** 415 | * Load `ts-scripts` configuration. 416 | */ 417 | export async function getConfig(cwd: string): Promise { 418 | const config = await packageConfig("ts-scripts", { cwd }); 419 | const schema = configSchema.parse(config); 420 | 421 | return { 422 | debug: schema.debug ?? false, 423 | dir: dirname(packageJsonPath(config) ?? cwd), 424 | src: arrayify(schema.src ?? "src"), 425 | ignore: arrayify(schema.ignore ?? []), 426 | dist: arrayify(schema.dist ?? "dist"), 427 | project: arrayify(schema.project ?? "tsconfig.json"), 428 | checkProject: arrayify(schema.checkProject ?? "tsconfig.json"), 429 | test: arrayify(schema.test ?? {}).map((testSchema) => ({ 430 | dir: testSchema.dir, 431 | config: testSchema.config, 432 | })), 433 | }; 434 | } 435 | 436 | /** 437 | * Main configuration options. 438 | */ 439 | export interface Options { 440 | cwd: string; 441 | } 442 | 443 | /** 444 | * Main script runtime. 445 | */ 446 | export async function main(args: string[], options: Options) { 447 | const [command, ...flags] = args; 448 | const script = scripts.get(command); 449 | if (!script) { 450 | throw new TypeError(`Script does not exist: ${command}`); 451 | } 452 | 453 | const config = await getConfig(options.cwd); 454 | return script(flags, config); 455 | } 456 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["src/**/*.spec.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./configs/tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "rootDir": "src", 6 | "types": ["node", "bun-types"] 7 | }, 8 | "include": ["./src/**/*"] 9 | } 10 | --------------------------------------------------------------------------------