├── .editorconfig ├── .github ├── FUNDING.yml └── workflows │ ├── release.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bin.js ├── check.js ├── create-program.js ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── screenshot.png ├── show-help.js ├── show-version.js ├── test ├── __snapshots__ │ ├── check.test.js.snap │ ├── show-help.test.js.snap │ └── show-version.test.js.snap ├── check.test.js ├── fixtures │ ├── both │ │ ├── a.d.ts │ │ ├── a.js │ │ ├── b.d.ts │ │ ├── b.js │ │ └── test │ │ │ ├── a.errors.ts │ │ │ ├── a.types.ts │ │ │ ├── b.errors.ts │ │ │ └── b.types.ts │ ├── ci.js │ ├── empty │ │ └── index.js │ ├── mixed │ │ └── a │ │ │ ├── errors.ts │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── types.ts │ ├── negative │ │ ├── a.d.ts │ │ ├── a.js │ │ ├── b.d.ts │ │ ├── b.js │ │ └── test │ │ │ ├── a.errors.ts │ │ │ ├── a.types.ts │ │ │ ├── b.errors.ts │ │ │ └── b.types.ts │ ├── positive │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test │ │ │ ├── errors.ts │ │ │ ├── index.test.js │ │ │ └── types.ts │ ├── simple │ │ ├── index.d.ts │ │ ├── index.js │ │ └── test │ │ │ ├── errors.ts │ │ │ ├── index.test.js │ │ │ └── types.ts │ ├── tsconfig-with-extends │ │ ├── index.errors.ts │ │ ├── tsconfig.base.json │ │ └── tsconfig.json │ └── tsconfig │ │ ├── b.js │ │ ├── index.ts │ │ ├── tsconfig.json │ │ └── types.ts ├── show-help.test.js └── show-version.test.js └── worker.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ai 2 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | tags: 5 | - '*' 6 | permissions: 7 | contents: write 8 | jobs: 9 | release: 10 | name: Release On Tag 11 | if: startsWith(github.ref, 'refs/tags/') 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout the repository 15 | uses: actions/checkout@v4 16 | - name: Extract the changelog 17 | id: changelog 18 | run: | 19 | TAG_NAME=${GITHUB_REF/refs\/tags\//} 20 | READ_SECTION=false 21 | CHANGELOG="" 22 | while IFS= read -r line; do 23 | if [[ "$line" =~ ^#+\ +(.*) ]]; then 24 | if [[ "${BASH_REMATCH[1]}" == "$TAG_NAME" ]]; then 25 | READ_SECTION=true 26 | elif [[ "$READ_SECTION" == true ]]; then 27 | break 28 | fi 29 | elif [[ "$READ_SECTION" == true ]]; then 30 | CHANGELOG+="$line"$'\n' 31 | fi 32 | done < "CHANGELOG.md" 33 | CHANGELOG=$(echo "$CHANGELOG" | awk '/./ {$1=$1;print}') 34 | echo "changelog_content<> $GITHUB_OUTPUT 35 | echo "$CHANGELOG" >> $GITHUB_OUTPUT 36 | echo "EOF" >> $GITHUB_OUTPUT 37 | - name: Create the release 38 | if: steps.changelog.outputs.changelog_content != '' 39 | uses: softprops/action-gh-release@v1 40 | with: 41 | name: ${{ github.ref_name }} 42 | body: '${{ steps.changelog.outputs.changelog_content }}' 43 | draft: false 44 | prerelease: false 45 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | permissions: 8 | contents: read 9 | jobs: 10 | full: 11 | name: Node.js Latest Full 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout the repository 15 | uses: actions/checkout@v4 16 | - name: Install pnpm 17 | uses: pnpm/action-setup@v4 18 | with: 19 | version: 10 20 | - name: Install Node.js 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: 23 24 | cache: pnpm 25 | - name: Install dependencies 26 | run: pnpm install --frozen-lockfile --ignore-scripts 27 | - name: Run tests 28 | run: pnpm test 29 | short: 30 | runs-on: ubuntu-latest 31 | strategy: 32 | matrix: 33 | node-version: 34 | - 22 35 | - 20 36 | - 18 37 | name: Node.js ${{ matrix.node-version }} Quick 38 | steps: 39 | - name: Checkout the repository 40 | uses: actions/checkout@v4 41 | - name: Install pnpm 42 | uses: pnpm/action-setup@v4 43 | with: 44 | version: 10 45 | - name: Install Node.js ${{ matrix.node-version }} 46 | uses: actions/setup-node@v4 47 | with: 48 | node-version: ${{ matrix.node-version }} 49 | cache: pnpm 50 | - name: Install dependencies 51 | run: pnpm install --frozen-lockfile --ignore-scripts 52 | - name: Run unit tests 53 | run: node --experimental-vm-modules node_modules/jest/bin/jest.js 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | coverage/ 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | coverage/ 2 | test/ 3 | 4 | screenshot.png 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | This project adheres to [Semantic Versioning](http://semver.org/). 3 | 4 | ## 0.9.0 5 | * Use files list from TypeScript instead of taking everything. 6 | 7 | ## 0.8.2 8 | * Fixed regression. 9 | 10 | ## 0.8.1 11 | * Fixed `undefined` error message on non-string errors from TS. 12 | * Fix CLI output on error during TS check. 13 | 14 | ## 0.8.0 15 | * Fixed reporting errors not associated with a file (by @nawatts). 16 | * Removed Node.js 14 and Node.js 16 support. 17 | 18 | ## 0.7.2 19 | * Fix rare TypeScript errors support (by Brian Takita). 20 | 21 | ## 0.7.1 22 | * Fixed support of `extends` in `tsconfig.json` (by Bijela Gora). 23 | 24 | ## 0.7 25 | * Removed Node.js 12 support. 26 | * Fixed comments support in `tsconfig.json` (by @shrpne). 27 | 28 | ## 0.6.7 29 | * Updated `nanospinner`. 30 | 31 | ## 0.6.6 32 | * Updated `nanospinner`. 33 | 34 | ## 0.6.5 35 | * Updated `nanospinner`. 36 | 37 | ## 0.6.4 38 | * Fixed TypeScript 4.5 support. 39 | 40 | ## 0.6.3 41 | * Updated `nanospinner`. 42 | 43 | ## 0.6.2 44 | * Fixed spinner. 45 | 46 | ## 0.6.1 47 | * Fixed `typescript` peer dependencies. 48 | 49 | ## 0.6 50 | * Moved TypeScript to peer dependencies. 51 | * Replaced `nanocolors` dependency with `picocolors`. 52 | * Replaced `mico-spinner` dependency with `nanospinner`. 53 | * Reduced dependencies by moving from `globby` to `fast-glob`. 54 | 55 | ## 0.5.6 56 | * Replaced `coloretter` dependency with `nanocolors`. 57 | 58 | ## 0.5.5 59 | * Fixed for missed `allowJs` in custom `tsconfig.json`. 60 | 61 | ## 0.5.4 62 | * Fixed custom `tsconfig.json` support (by Vladimir Dementyev). 63 | 64 | ## 0.5.3 65 | * Fixed `package.engines` (by @chenaski). 66 | 67 | ## 0.5.2 68 | * Fixed Windows support (by Vasilii Kovalev). 69 | 70 | ## 0.5.1 71 | * Removed development dependency. 72 | 73 | ## 0.5 74 | * Dropped Node.js 10 support. 75 | * Reduced dependencies. 76 | 77 | ## 0.4.4 78 | * Fixed ES modules support. 79 | 80 | ## 0.4.3 81 | * Fixed `module` support in custom `tsconfig.json`. 82 | 83 | ## 0.4.2 84 | * Fixed `moduleResolution` support in custom `tsconfig.json`. 85 | 86 | ## 0.4.1 87 | * Reduced dependencies number. 88 | 89 | ## 0.4 90 | * Added files arguments (by Budleigh Salterton). 91 | * Changed output to be able to click on line. 92 | 93 | ## 0.3.3 94 | * Use TypeScript 4. 95 | 96 | ## 0.3.2 97 | * Replace color output library. 98 | 99 | ## 0.3.1 100 | * Reduce dependencies. 101 | 102 | ## 0.3 103 | * Use custom `tsconfig.json`. 104 | 105 | ## 0.2 106 | * Prohibit implicit `any`. 107 | 108 | ## 0.1.4 109 | * Show errors from `node_modules`. 110 | 111 | ## 0.1.3 112 | * Allow to put type tests outside of `test/`. 113 | 114 | ## 0.1.2 115 | * Fix Node.js 10 support. 116 | 117 | ## 0.1.1 118 | * Fix tests list. 119 | 120 | ## 0.1 121 | * Initial release. 122 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright 2020 Andrey Sitnik 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Check TypeScript Definitions 2 | 3 | Unit tests for `.d.ts` TypeScript definitions in your JavaScript 4 | open source library. 5 | 6 | It is useful for non-TypeScript project, which wants to provide typing 7 | support for TypeScript users and autocompletion for IDE and text editors. 8 | 9 | It becomes especially useful for complex types with generics, like we have 10 | in [Nano Events] or [Storeon]. 11 | 12 | ```ts 13 | // Negative test: test/index.errors.ts 14 | import lib = require('../') 15 | 16 | interface Events { 17 | 'set': (a: string, b: number) => void 18 | } 19 | // THROWS Expected 3 arguments, but got 2 20 | lib.on('set', 2) 21 | ``` 22 | 23 | ```ts 24 | // Positive test: test/index.types.ts 25 | import lib = require('../') 26 | 27 | interface Events { 28 | 'set': (a: string, b: number) => void 29 | } 30 | lib.on('set', 'prop', 1) 31 | ``` 32 | 33 | [Nano Events]: https://github.com/ai/nanoevents/#typescript 34 | [Storeon]: https://github.com/storeon/storeon#typescript 35 | 36 | Print Snapshots example 37 | 38 | 39 | Sponsored by Evil Martians 41 | 42 | 43 | ## Usage 44 | 45 | 1. Add `.d.ts` files with TypeScript definitions for your JS library. 46 | You can check example in 47 | [Nano Events](https://github.com/ai/nanoevents/blob/main/index.d.ts). 48 | 2. Install `check-dts`: 49 | 50 | ```sh 51 | npm install --save-dev check-dts 52 | ``` 53 | 54 | 3. Create `test/index.types.ts` for positive tests and write correct TypeScript. 55 | You can test IDE autocompletion in this file. 56 | 4. Run `npx check-dts` to test the new file. 57 | 5. Create `test/index.errors.ts` for negative tests and add an incorrect usage 58 | of your library recording to TypeScript. See the next section for details. 59 | 6. Run `npx check-dts` to test both files. 60 | 7. Add `check-dts` to `npm test` to test types on CI: 61 | 62 | ```diff 63 | "scripts": { 64 | - "test": "jest && eslint ." 65 | + "test": "jest && eslint . && check-dts" 66 | } 67 | ``` 68 | 69 | 8. If your library requires an additional TypeScript option, you can define it 70 | for tests in `tsconfig.json`. 71 | 72 | 73 | ## Writing Negative Test 74 | 75 | Add code where you expect TypeScript to report an error. Make sure to add a 76 | line above the expected error like `// THROWS some error messages` 77 | 78 | ```ts 79 | import lib = require('../') 80 | 81 | interface Events { 82 | set: (a: string, b: number) => void 83 | } 84 | lib.on('set', 2) 85 | ``` 86 | 87 | In this case, we expect the error message `Expected 3 arguments, but got 2`. 88 | So we should add comments. You can put only part of the error message 89 | to the `// THROWS comment`. 90 | 91 | ```diff 92 | import lib = require('../') 93 | 94 | interface Events { 95 | set: (a: string, b: number) => void 96 | } 97 | + // THROWS Expected 3 arguments, but got 2 98 | lib.on('set', 2) 99 | ``` 100 | 101 | If TypeScript does not report the error or reports a different error, 102 | `check-dts` will fall with a description: 103 | 104 | ```bash 105 | $ npx check-dts 106 | ✖ Check types 107 | 108 | ✖ test/index.errors.ts:7:23: Wrong error 109 | Expected: Expected 0 arguments, but got 1 110 | Got: Expected 3 arguments, but got 2. 111 | ``` 112 | 113 | 114 | ## CLI Options 115 | 116 | Test all `.ts` and `.js` files in project and run `*.types.ts` and `*.errors.ts` 117 | tests: 118 | 119 | ```bashsh 120 | npx check-dts 121 | ``` 122 | 123 | You can test only specific files by: 124 | 125 | ```sh 126 | npx check-dts **/*.tsx? 127 | npx check-dts **/*.ts !**/index.ts 128 | ``` 129 | 130 | 131 | ## FAQ 132 | 133 | ### It seems that check-dts ignores all d.ts-files. How can I fix this? 134 | 135 | Please make sure that your tsconfig.json doesn’t include `skipLibCheck: true`. 136 | Becuase with this [option](https://www.typescriptlang.org/tsconfig#skipLibCheck) 137 | all `d.ts`-files will be ignored. 138 | 139 | 140 | ### Can I use check-dts as a simple validator for d.ts-files? 141 | 142 | Yes you can. But note if you have the typescript in your project 143 | you can validate whether `d.ts`-files have some issues with the following command: 144 | 145 | ```sh 146 | npx tsc path/to/your/dts/files/**/*.d.ts --noEmit 147 | ``` 148 | 149 | 150 | ### I am getting an error **from Node types**, how do I skip `node_modules`? 151 | 152 | If you are getting an error that looks something like this: 153 | 154 | ``` 155 | ✖ node_modules/@types/node/globals.d.ts:68:13: Type error TS2502 156 | 'AbortController' is referenced directly or indirectly in its own type annotation. 157 | ``` 158 | 159 | You can skip the whole `node_modules` by adding to `tsconfig.json`: 160 | 161 | 162 | ```json 163 | { 164 | "compilerOptions": { 165 | "skipLibCheck": true 166 | } 167 | } 168 | ``` 169 | -------------------------------------------------------------------------------- /bin.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import pico from 'picocolors' 4 | 5 | import { check } from './check.js' 6 | import { showHelp } from './show-help.js' 7 | import { showVersion } from './show-version.js' 8 | 9 | function error(message) { 10 | process.stderr.write(pico.red(message) + '\n') 11 | } 12 | 13 | function print(...lines) { 14 | process.stdout.write(lines.join('\n') + '\n') 15 | } 16 | 17 | async function run() { 18 | let arg = process.argv[2] 19 | if (arg === '--version') { 20 | showVersion(print) 21 | } else if (arg === '--help') { 22 | showHelp(print) 23 | } else if (!arg) { 24 | let result = await check(process.stderr, process.cwd(), print) 25 | if (!result) process.exit(1) 26 | } else { 27 | let result = await check( 28 | process.stderr, 29 | process.cwd(), 30 | print, 31 | process.argv.slice(2) 32 | ) 33 | if (!result) process.exit(1) 34 | } 35 | } 36 | 37 | run().catch(e => { 38 | if (e.own) { 39 | error(e.message) 40 | } else { 41 | error(e.stack) 42 | } 43 | process.exit(1) 44 | }) 45 | -------------------------------------------------------------------------------- /check.js: -------------------------------------------------------------------------------- 1 | import glob from 'fast-glob' 2 | import { createSpinner } from 'nanospinner' 3 | import { promises as fs } from 'node:fs' 4 | import { createRequire } from 'node:module' 5 | import { basename, dirname, join, relative } from 'node:path' 6 | import { fileURLToPath } from 'node:url' 7 | import { Worker } from 'node:worker_threads' 8 | import pico from 'picocolors' 9 | import ts from 'typescript' 10 | import { location } from 'vfile-location' 11 | 12 | let require = createRequire(import.meta.url) 13 | 14 | let r = pico.red 15 | let b = pico.bold 16 | let g = pico.green 17 | 18 | const ROOT = dirname(fileURLToPath(import.meta.url)) 19 | const TS_DIR = dirname(require.resolve('typescript')) 20 | const WORKER = join(ROOT, 'worker.js') 21 | const PREFIX = '// THROWS ' 22 | 23 | const DEFAULT_OPTIONS = ts.convertCompilerOptionsFromJson( 24 | { 25 | allowJs: true, 26 | allowSyntheticDefaultImports: true, 27 | jsx: 'react', 28 | module: 'esnext', 29 | moduleResolution: 'NodeJs', 30 | noEmit: true, 31 | noImplicitReturns: true, 32 | noUnusedLocals: true, 33 | noUnusedParameters: true, 34 | strict: true, 35 | strictFunctionTypes: false, 36 | stripInternal: true 37 | }, 38 | './' 39 | ) 40 | 41 | export function getConfig(cwd, configName = 'tsconfig.json') { 42 | let configFileName = ts.findConfigFile(cwd, ts.sys.fileExists, configName) 43 | if (configFileName === undefined) { 44 | return DEFAULT_OPTIONS 45 | } 46 | let configFile = ts.readConfigFile(configFileName, ts.sys.readFile) 47 | let parsedCommandLine = ts.parseJsonConfigFileContent( 48 | configFile.config, 49 | ts.sys, 50 | cwd 51 | ) 52 | return parsedCommandLine 53 | } 54 | 55 | function checkFiles(files, compilerOptions) { 56 | return new Promise((resolve, reject) => { 57 | let worker = new Worker(WORKER, { 58 | workerData: { compilerOptions, files } 59 | }) 60 | worker.on('message', resolve) 61 | worker.on('error', reject) 62 | }) 63 | } 64 | 65 | function getText(error) { 66 | if (typeof error.messageText === 'object') { 67 | return error.messageText.messageText 68 | } else { 69 | return error.messageText 70 | } 71 | } 72 | 73 | function formatName(cwd, file, color) { 74 | return pico.gray(relative(cwd, file).replace(basename(file), i => color(i))) 75 | } 76 | 77 | async function parseTest(files) { 78 | let expects = [] 79 | await Promise.all( 80 | files.map(async fileName => { 81 | let source = (await fs.readFile(fileName)).toString() 82 | let pos, prev 83 | let lines = location(source) 84 | while (true) { 85 | pos = source.indexOf(PREFIX, prev + 1) 86 | if (pos === -1) break 87 | let newline = source.slice(pos).search(/\r?\n/) 88 | if (newline !== -1) newline += pos 89 | 90 | let pattern = source.slice(pos + PREFIX.length, newline) 91 | let { column, line } = lines.toPoint(pos) 92 | expects.push({ column, fileName, line: line + 1, pattern }) 93 | prev = pos 94 | } 95 | }) 96 | ) 97 | return expects 98 | } 99 | 100 | export async function check( 101 | stderr, 102 | cwd, 103 | print, 104 | globs = ['**/*.{js,ts,jsx,tsx}'] 105 | ) { 106 | let spinner = createSpinner('Check types', { stream: stderr }) 107 | spinner.start() 108 | 109 | try { 110 | let config = getConfig(cwd) 111 | let all 112 | if (config.fileNames) { 113 | all = config.fileNames.concat( 114 | await glob('**/errors.ts', { 115 | absolute: true, 116 | cwd, 117 | ignore: ['node_modules'] 118 | }) 119 | ) 120 | } else { 121 | all = await glob(globs, { 122 | absolute: true, 123 | cwd, 124 | ignore: ['node_modules'] 125 | }) 126 | } 127 | 128 | if (!all.some(i => /\.tsx?$/.test(i))) { 129 | let err = new Error( 130 | 'TypeScript files were not found. ' + 131 | 'Create .d.ts files and test/types.ts and test/errors.ts.' 132 | ) 133 | err.own = true 134 | throw err 135 | } 136 | 137 | let typeTests = all.filter(i => /\.?(errors|types)\.tsx?/.test(i)) 138 | let failTests = all.filter(i => /\.?errors\.tsx?$/.test(i)) 139 | 140 | all.push(join(TS_DIR, 'lib.dom.d.ts')) 141 | all.push(join(TS_DIR, 'lib.es2018.d.ts')) 142 | 143 | let expects = await parseTest(failTests) 144 | let errors = await checkFiles(all, config.options) 145 | 146 | let bad = {} 147 | function push(file, message) { 148 | if (!bad[file]) bad[file] = [] 149 | bad[file].push(message) 150 | } 151 | 152 | for (let error of errors) { 153 | if (error.messageText.code === 6504 || error.messageText.code === 6054) { 154 | // Unsupported files 155 | // istanbul ignore next 156 | continue 157 | } 158 | 159 | // istanbul ignore next 160 | if (!error.file) { 161 | let message = getText(error).replaceAll(process.cwd(), '.') 162 | push(error, message) 163 | continue 164 | } 165 | 166 | let { column, line } = location(error.file.text).toPoint(error.start) 167 | let expect = expects.find(j => { 168 | return error.file.fileName === j.fileName && line === j.line && !j.used 169 | }) 170 | let prefix = r( 171 | `✖ ${formatName(cwd, error.file.fileName, r)}:${line}:${column}:` 172 | ) 173 | let text = getText(error) 174 | if (!failTests.includes(error.file.fileName)) { 175 | push( 176 | error.fileName, 177 | prefix + 178 | b(' Type error ' + pico.gray(`TS${error.code}`) + '\n') + 179 | ' ' + 180 | r(text) 181 | ) 182 | } else if (!expect) { 183 | push(error.fileName, prefix + b(' Unexpected error\n') + ' ' + r(text)) 184 | } else { 185 | expect.used = true 186 | if (!text.includes(expect.pattern)) { 187 | push( 188 | error.fileName, 189 | prefix + 190 | b(' Wrong error\n') + 191 | ' Expected: ' + 192 | g(expect.pattern) + 193 | '\n' + 194 | ' Got: ' + 195 | r(text) 196 | ) 197 | } 198 | } 199 | } 200 | let unused = expects.filter(i => !i.used) 201 | for (let i of unused) { 202 | push( 203 | i.fileName, 204 | r(`✖ ${formatName(cwd, i.fileName, r)}:${i.line}:${i.column}:`) + 205 | b(' Error was not found\n') + 206 | ' ' + 207 | r(i.pattern) 208 | ) 209 | } 210 | 211 | let failed = Object.keys(bad).length > 0 212 | if (failed) { 213 | spinner.error() 214 | print('') 215 | for (let file in bad) { 216 | let messages = (bad[file] || []).sort((msg1, msg2) => { 217 | let match1 = msg1.match(/(\d+):/) 218 | let match2 = msg2.match(/(\d+):/) 219 | // istanbul ignore next 220 | if (!match1) return -1 221 | // istanbul ignore next 222 | if (!match2) return 1 223 | let line1 = parseInt(msg1.match(/(\d+):/)[1]) 224 | let line2 = parseInt(msg2.match(/(\d+):/)[1]) 225 | return line1 - line2 226 | }) 227 | for (let i of messages) { 228 | print(i + '\n') 229 | } 230 | } 231 | return false 232 | } else { 233 | spinner.success() 234 | for (let i of typeTests) { 235 | print(g('✔ ') + formatName(cwd, i, pico.white)) 236 | } 237 | return true 238 | } 239 | } catch (e) { 240 | spinner.error() 241 | throw e 242 | } 243 | } 244 | -------------------------------------------------------------------------------- /create-program.js: -------------------------------------------------------------------------------- 1 | import { createRequire } from 'node:module' 2 | import { dirname, join } from 'node:path' 3 | import ts from 'typescript' 4 | 5 | let require = createRequire(import.meta.url) 6 | 7 | const TS_DIR = dirname(require.resolve('typescript')) 8 | 9 | export function createProgram(files, options) { 10 | options.moduleResolution = ts.ModuleResolutionKind.NodeJs 11 | 12 | if (options.lib) { 13 | for (let path of options.lib) { 14 | files.push(join(TS_DIR, path)) 15 | } 16 | options.lib.length = 0 17 | } 18 | 19 | options.noEmit = true 20 | 21 | return ts.getPreEmitDiagnostics(ts.createProgram(files, options)) 22 | } 23 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import loguxTsConfig from '@logux/eslint-config' 2 | 3 | export default [ 4 | ...loguxTsConfig, 5 | { 6 | files: ['test/**/*.test.js'], 7 | languageOptions: { 8 | globals: { 9 | expect: 'readonly', 10 | it: 'readonly' 11 | } 12 | } 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "check-dts", 3 | "version": "0.9.0", 4 | "description": "Unit tests for .d.ts TypeScript definitions", 5 | "keywords": [ 6 | "typescript", 7 | "types", 8 | "test", 9 | "check" 10 | ], 11 | "bin": "./bin.js", 12 | "type": "module", 13 | "engines": { 14 | "node": ">=18.0.0" 15 | }, 16 | "funding": [ 17 | { 18 | "type": "github", 19 | "url": "https://github.com/sponsors/ai" 20 | } 21 | ], 22 | "scripts": { 23 | "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage && eslint ." 24 | }, 25 | "peerDependencies": { 26 | "typescript": ">=4.0.0" 27 | }, 28 | "dependencies": { 29 | "fast-glob": "^3.3.3", 30 | "nanospinner": "^1.2.2", 31 | "picocolors": "^1.1.1", 32 | "vfile-location": "^5.0.3" 33 | }, 34 | "author": "Andrey Sitnik ", 35 | "license": "MIT", 36 | "repository": "ai/check-dts", 37 | "devDependencies": { 38 | "@babel/core": "^7.26.10", 39 | "@logux/eslint-config": "^55.2.0", 40 | "clean-publish": "^5.1.0", 41 | "eslint": "^9.23.0", 42 | "jest": "^29.7.0", 43 | "print-snapshots": "^0.4.2", 44 | "typescript": "^5.8.2" 45 | }, 46 | "jest": { 47 | "testEnvironment": "node", 48 | "modulePathIgnorePatterns": [ 49 | "/test/fixtures" 50 | ], 51 | "coverageThreshold": { 52 | "global": { 53 | "statements": 100 54 | } 55 | } 56 | }, 57 | "prettier": { 58 | "arrowParens": "avoid", 59 | "jsxSingleQuote": false, 60 | "quoteProps": "consistent", 61 | "semi": false, 62 | "singleQuote": true, 63 | "trailingComma": "none" 64 | }, 65 | "clean-publish": { 66 | "cleanDocs": true 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | fast-glob: 12 | specifier: ^3.3.3 13 | version: 3.3.3 14 | nanospinner: 15 | specifier: ^1.2.2 16 | version: 1.2.2 17 | picocolors: 18 | specifier: ^1.1.1 19 | version: 1.1.1 20 | vfile-location: 21 | specifier: ^5.0.3 22 | version: 5.0.3 23 | devDependencies: 24 | '@babel/core': 25 | specifier: ^7.26.10 26 | version: 7.26.10 27 | '@logux/eslint-config': 28 | specifier: ^55.2.0 29 | version: 55.2.0(eslint@9.23.0)(typescript@5.8.2) 30 | clean-publish: 31 | specifier: ^5.1.0 32 | version: 5.1.0 33 | eslint: 34 | specifier: ^9.23.0 35 | version: 9.23.0 36 | jest: 37 | specifier: ^29.7.0 38 | version: 29.7.0(@types/node@22.13.14) 39 | print-snapshots: 40 | specifier: ^0.4.2 41 | version: 0.4.2 42 | typescript: 43 | specifier: ^5.8.2 44 | version: 5.8.2 45 | 46 | packages: 47 | 48 | '@ampproject/remapping@2.3.0': 49 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 50 | engines: {node: '>=6.0.0'} 51 | 52 | '@babel/code-frame@7.26.2': 53 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 54 | engines: {node: '>=6.9.0'} 55 | 56 | '@babel/compat-data@7.26.8': 57 | resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} 58 | engines: {node: '>=6.9.0'} 59 | 60 | '@babel/core@7.26.10': 61 | resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} 62 | engines: {node: '>=6.9.0'} 63 | 64 | '@babel/generator@7.27.0': 65 | resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} 66 | engines: {node: '>=6.9.0'} 67 | 68 | '@babel/helper-compilation-targets@7.27.0': 69 | resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} 70 | engines: {node: '>=6.9.0'} 71 | 72 | '@babel/helper-module-imports@7.25.9': 73 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 74 | engines: {node: '>=6.9.0'} 75 | 76 | '@babel/helper-module-transforms@7.26.0': 77 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 78 | engines: {node: '>=6.9.0'} 79 | peerDependencies: 80 | '@babel/core': ^7.0.0 81 | 82 | '@babel/helper-plugin-utils@7.26.5': 83 | resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} 84 | engines: {node: '>=6.9.0'} 85 | 86 | '@babel/helper-string-parser@7.25.9': 87 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 88 | engines: {node: '>=6.9.0'} 89 | 90 | '@babel/helper-validator-identifier@7.25.9': 91 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 92 | engines: {node: '>=6.9.0'} 93 | 94 | '@babel/helper-validator-option@7.25.9': 95 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 96 | engines: {node: '>=6.9.0'} 97 | 98 | '@babel/helpers@7.27.0': 99 | resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} 100 | engines: {node: '>=6.9.0'} 101 | 102 | '@babel/parser@7.27.0': 103 | resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} 104 | engines: {node: '>=6.0.0'} 105 | hasBin: true 106 | 107 | '@babel/plugin-syntax-async-generators@7.8.4': 108 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 109 | peerDependencies: 110 | '@babel/core': ^7.0.0-0 111 | 112 | '@babel/plugin-syntax-bigint@7.8.3': 113 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 114 | peerDependencies: 115 | '@babel/core': ^7.0.0-0 116 | 117 | '@babel/plugin-syntax-class-properties@7.12.13': 118 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 119 | peerDependencies: 120 | '@babel/core': ^7.0.0-0 121 | 122 | '@babel/plugin-syntax-class-static-block@7.14.5': 123 | resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} 124 | engines: {node: '>=6.9.0'} 125 | peerDependencies: 126 | '@babel/core': ^7.0.0-0 127 | 128 | '@babel/plugin-syntax-import-attributes@7.26.0': 129 | resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} 130 | engines: {node: '>=6.9.0'} 131 | peerDependencies: 132 | '@babel/core': ^7.0.0-0 133 | 134 | '@babel/plugin-syntax-import-meta@7.10.4': 135 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 136 | peerDependencies: 137 | '@babel/core': ^7.0.0-0 138 | 139 | '@babel/plugin-syntax-json-strings@7.8.3': 140 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 141 | peerDependencies: 142 | '@babel/core': ^7.0.0-0 143 | 144 | '@babel/plugin-syntax-jsx@7.25.9': 145 | resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} 146 | engines: {node: '>=6.9.0'} 147 | peerDependencies: 148 | '@babel/core': ^7.0.0-0 149 | 150 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4': 151 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 152 | peerDependencies: 153 | '@babel/core': ^7.0.0-0 154 | 155 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': 156 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 157 | peerDependencies: 158 | '@babel/core': ^7.0.0-0 159 | 160 | '@babel/plugin-syntax-numeric-separator@7.10.4': 161 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 162 | peerDependencies: 163 | '@babel/core': ^7.0.0-0 164 | 165 | '@babel/plugin-syntax-object-rest-spread@7.8.3': 166 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 167 | peerDependencies: 168 | '@babel/core': ^7.0.0-0 169 | 170 | '@babel/plugin-syntax-optional-catch-binding@7.8.3': 171 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 172 | peerDependencies: 173 | '@babel/core': ^7.0.0-0 174 | 175 | '@babel/plugin-syntax-optional-chaining@7.8.3': 176 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 177 | peerDependencies: 178 | '@babel/core': ^7.0.0-0 179 | 180 | '@babel/plugin-syntax-private-property-in-object@7.14.5': 181 | resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} 182 | engines: {node: '>=6.9.0'} 183 | peerDependencies: 184 | '@babel/core': ^7.0.0-0 185 | 186 | '@babel/plugin-syntax-top-level-await@7.14.5': 187 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 188 | engines: {node: '>=6.9.0'} 189 | peerDependencies: 190 | '@babel/core': ^7.0.0-0 191 | 192 | '@babel/plugin-syntax-typescript@7.25.9': 193 | resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} 194 | engines: {node: '>=6.9.0'} 195 | peerDependencies: 196 | '@babel/core': ^7.0.0-0 197 | 198 | '@babel/template@7.27.0': 199 | resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} 200 | engines: {node: '>=6.9.0'} 201 | 202 | '@babel/traverse@7.27.0': 203 | resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} 204 | engines: {node: '>=6.9.0'} 205 | 206 | '@babel/types@7.27.0': 207 | resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} 208 | engines: {node: '>=6.9.0'} 209 | 210 | '@bcoe/v8-coverage@0.2.3': 211 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 212 | 213 | '@emnapi/core@1.4.0': 214 | resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==} 215 | 216 | '@emnapi/runtime@1.4.0': 217 | resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==} 218 | 219 | '@emnapi/wasi-threads@1.0.1': 220 | resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} 221 | 222 | '@eslint-community/eslint-utils@4.5.1': 223 | resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} 224 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 225 | peerDependencies: 226 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 227 | 228 | '@eslint-community/regexpp@4.12.1': 229 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 230 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 231 | 232 | '@eslint/config-array@0.19.2': 233 | resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} 234 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 235 | 236 | '@eslint/config-helpers@0.2.0': 237 | resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} 238 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 239 | 240 | '@eslint/core@0.12.0': 241 | resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 242 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 243 | 244 | '@eslint/eslintrc@3.3.1': 245 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 246 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 247 | 248 | '@eslint/js@9.23.0': 249 | resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} 250 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 251 | 252 | '@eslint/object-schema@2.1.6': 253 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 254 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 255 | 256 | '@eslint/plugin-kit@0.2.7': 257 | resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@humanfs/core@0.19.1': 261 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 262 | engines: {node: '>=18.18.0'} 263 | 264 | '@humanfs/node@0.16.6': 265 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 266 | engines: {node: '>=18.18.0'} 267 | 268 | '@humanwhocodes/module-importer@1.0.1': 269 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 270 | engines: {node: '>=12.22'} 271 | 272 | '@humanwhocodes/retry@0.3.1': 273 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 274 | engines: {node: '>=18.18'} 275 | 276 | '@humanwhocodes/retry@0.4.2': 277 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 278 | engines: {node: '>=18.18'} 279 | 280 | '@istanbuljs/load-nyc-config@1.1.0': 281 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 282 | engines: {node: '>=8'} 283 | 284 | '@istanbuljs/schema@0.1.3': 285 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 286 | engines: {node: '>=8'} 287 | 288 | '@jest/console@29.7.0': 289 | resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} 290 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 291 | 292 | '@jest/core@29.7.0': 293 | resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} 294 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 295 | peerDependencies: 296 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 297 | peerDependenciesMeta: 298 | node-notifier: 299 | optional: true 300 | 301 | '@jest/environment@29.7.0': 302 | resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} 303 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 304 | 305 | '@jest/expect-utils@29.7.0': 306 | resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} 307 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 308 | 309 | '@jest/expect@29.7.0': 310 | resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} 311 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 312 | 313 | '@jest/fake-timers@29.7.0': 314 | resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} 315 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 316 | 317 | '@jest/globals@29.7.0': 318 | resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} 319 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 320 | 321 | '@jest/reporters@29.7.0': 322 | resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} 323 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 324 | peerDependencies: 325 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 326 | peerDependenciesMeta: 327 | node-notifier: 328 | optional: true 329 | 330 | '@jest/schemas@29.6.3': 331 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 332 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 333 | 334 | '@jest/source-map@29.6.3': 335 | resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} 336 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 337 | 338 | '@jest/test-result@29.7.0': 339 | resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} 340 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 341 | 342 | '@jest/test-sequencer@29.7.0': 343 | resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} 344 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 345 | 346 | '@jest/transform@29.7.0': 347 | resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} 348 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 349 | 350 | '@jest/types@29.6.3': 351 | resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} 352 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 353 | 354 | '@jridgewell/gen-mapping@0.3.8': 355 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 356 | engines: {node: '>=6.0.0'} 357 | 358 | '@jridgewell/resolve-uri@3.1.2': 359 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 360 | engines: {node: '>=6.0.0'} 361 | 362 | '@jridgewell/set-array@1.2.1': 363 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 364 | engines: {node: '>=6.0.0'} 365 | 366 | '@jridgewell/sourcemap-codec@1.5.0': 367 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 368 | 369 | '@jridgewell/trace-mapping@0.3.25': 370 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 371 | 372 | '@logux/eslint-config@55.2.0': 373 | resolution: {integrity: sha512-lB432ohq+Y7OFY3/2JDGEMFFP/l9UuzN+z+3TKQT/YLETZYWwqzmNqL9ek6Uuno7duQGwOABbaSHRXrup+dPYw==} 374 | engines: {node: '>=18.0.0'} 375 | peerDependencies: 376 | eslint: ^8.57.0 || ^9.0.0 377 | eslint-plugin-svelte: ^3.0.0 378 | svelte: ^4.2.12 || ^5.0.0 379 | svelte-eslint-parser: ^1.0.0 380 | peerDependenciesMeta: 381 | eslint-plugin-svelte: 382 | optional: true 383 | svelte: 384 | optional: true 385 | svelte-eslint-parser: 386 | optional: true 387 | 388 | '@napi-rs/wasm-runtime@0.2.7': 389 | resolution: {integrity: sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==} 390 | 391 | '@nodelib/fs.scandir@2.1.5': 392 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 393 | engines: {node: '>= 8'} 394 | 395 | '@nodelib/fs.stat@2.0.5': 396 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 397 | engines: {node: '>= 8'} 398 | 399 | '@nodelib/fs.walk@1.2.8': 400 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 401 | engines: {node: '>= 8'} 402 | 403 | '@sinclair/typebox@0.27.8': 404 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 405 | 406 | '@sinonjs/commons@3.0.1': 407 | resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} 408 | 409 | '@sinonjs/fake-timers@10.3.0': 410 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} 411 | 412 | '@tybys/wasm-util@0.9.0': 413 | resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} 414 | 415 | '@types/babel__core@7.20.5': 416 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 417 | 418 | '@types/babel__generator@7.6.8': 419 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 420 | 421 | '@types/babel__template@7.4.4': 422 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 423 | 424 | '@types/babel__traverse@7.20.7': 425 | resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} 426 | 427 | '@types/doctrine@0.0.9': 428 | resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} 429 | 430 | '@types/estree@1.0.7': 431 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 432 | 433 | '@types/graceful-fs@4.1.9': 434 | resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} 435 | 436 | '@types/istanbul-lib-coverage@2.0.6': 437 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} 438 | 439 | '@types/istanbul-lib-report@3.0.3': 440 | resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} 441 | 442 | '@types/istanbul-reports@3.0.4': 443 | resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} 444 | 445 | '@types/json-schema@7.0.15': 446 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 447 | 448 | '@types/node@22.13.14': 449 | resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==} 450 | 451 | '@types/stack-utils@2.0.3': 452 | resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} 453 | 454 | '@types/unist@3.0.3': 455 | resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 456 | 457 | '@types/yargs-parser@21.0.3': 458 | resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} 459 | 460 | '@types/yargs@17.0.33': 461 | resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} 462 | 463 | '@typescript-eslint/eslint-plugin@8.28.0': 464 | resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} 465 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 466 | peerDependencies: 467 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 468 | eslint: ^8.57.0 || ^9.0.0 469 | typescript: '>=4.8.4 <5.9.0' 470 | 471 | '@typescript-eslint/parser@8.28.0': 472 | resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} 473 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 474 | peerDependencies: 475 | eslint: ^8.57.0 || ^9.0.0 476 | typescript: '>=4.8.4 <5.9.0' 477 | 478 | '@typescript-eslint/scope-manager@8.28.0': 479 | resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} 480 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 481 | 482 | '@typescript-eslint/type-utils@8.28.0': 483 | resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} 484 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 485 | peerDependencies: 486 | eslint: ^8.57.0 || ^9.0.0 487 | typescript: '>=4.8.4 <5.9.0' 488 | 489 | '@typescript-eslint/types@8.28.0': 490 | resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} 491 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 492 | 493 | '@typescript-eslint/typescript-estree@8.28.0': 494 | resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} 495 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 496 | peerDependencies: 497 | typescript: '>=4.8.4 <5.9.0' 498 | 499 | '@typescript-eslint/utils@8.28.0': 500 | resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} 501 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 502 | peerDependencies: 503 | eslint: ^8.57.0 || ^9.0.0 504 | typescript: '>=4.8.4 <5.9.0' 505 | 506 | '@typescript-eslint/visitor-keys@8.28.0': 507 | resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} 508 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 509 | 510 | '@unrs/resolver-binding-darwin-arm64@1.3.3': 511 | resolution: {integrity: sha512-EpRILdWr3/xDa/7MoyfO7JuBIJqpBMphtu4+80BK1bRfFcniVT74h3Z7q1+WOc92FuIAYatB1vn9TJR67sORGw==} 512 | cpu: [arm64] 513 | os: [darwin] 514 | 515 | '@unrs/resolver-binding-darwin-x64@1.3.3': 516 | resolution: {integrity: sha512-ntj/g7lPyqwinMJWZ+DKHBse8HhVxswGTmNgFKJtdgGub3M3zp5BSZ3bvMP+kBT6dnYJLSVlDqdwOq1P8i0+/g==} 517 | cpu: [x64] 518 | os: [darwin] 519 | 520 | '@unrs/resolver-binding-freebsd-x64@1.3.3': 521 | resolution: {integrity: sha512-l6BT8f2CU821EW7U8hSUK8XPq4bmyTlt9Mn4ERrfjJNoCw0/JoHAh9amZZtV3cwC3bwwIat+GUnrcHTG9+qixw==} 522 | cpu: [x64] 523 | os: [freebsd] 524 | 525 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.3': 526 | resolution: {integrity: sha512-8ScEc5a4y7oE2BonRvzJ+2GSkBaYWyh0/Ko4Q25e/ix6ANpJNhwEPZvCR6GVRmsQAYMIfQvYLdM6YEN+qRjnAQ==} 527 | cpu: [arm] 528 | os: [linux] 529 | 530 | '@unrs/resolver-binding-linux-arm-musleabihf@1.3.3': 531 | resolution: {integrity: sha512-8qQ6l1VTzLNd3xb2IEXISOKwMGXDCzY/UNy/7SovFW2Sp0K3YbL7Ao7R18v6SQkLqQlhhqSBIFRk+u6+qu5R5A==} 532 | cpu: [arm] 533 | os: [linux] 534 | 535 | '@unrs/resolver-binding-linux-arm64-gnu@1.3.3': 536 | resolution: {integrity: sha512-v81R2wjqcWXJlQY23byqYHt9221h4anQ6wwN64oMD/WAE+FmxPHFZee5bhRkNVtzqO/q7wki33VFWlhiADwUeQ==} 537 | cpu: [arm64] 538 | os: [linux] 539 | 540 | '@unrs/resolver-binding-linux-arm64-musl@1.3.3': 541 | resolution: {integrity: sha512-cAOx/j0u5coMg4oct/BwMzvWJdVciVauUvsd+GQB/1FZYKQZmqPy0EjJzJGbVzFc6gbnfEcSqvQE6gvbGf2N8Q==} 542 | cpu: [arm64] 543 | os: [linux] 544 | 545 | '@unrs/resolver-binding-linux-ppc64-gnu@1.3.3': 546 | resolution: {integrity: sha512-mq2blqwErgDJD4gtFDlTX/HZ7lNP8YCHYFij2gkXPtMzrXxPW1hOtxL6xg4NWxvnj4bppppb0W3s/buvM55yfg==} 547 | cpu: [ppc64] 548 | os: [linux] 549 | 550 | '@unrs/resolver-binding-linux-s390x-gnu@1.3.3': 551 | resolution: {integrity: sha512-u0VRzfFYysarYHnztj2k2xr+eu9rmgoTUUgCCIT37Nr+j0A05Xk2c3RY8Mh5+DhCl2aYibihnaAEJHeR0UOFIQ==} 552 | cpu: [s390x] 553 | os: [linux] 554 | 555 | '@unrs/resolver-binding-linux-x64-gnu@1.3.3': 556 | resolution: {integrity: sha512-OrVo5ZsG29kBF0Ug95a2KidS16PqAMmQNozM6InbquOfW/udouk063e25JVLqIBhHLB2WyBnixOQ19tmeC/hIg==} 557 | cpu: [x64] 558 | os: [linux] 559 | 560 | '@unrs/resolver-binding-linux-x64-musl@1.3.3': 561 | resolution: {integrity: sha512-PYnmrwZ4HMp9SkrOhqPghY/aoL+Rtd4CQbr93GlrRTjK6kDzfMfgz3UH3jt6elrQAfupa1qyr1uXzeVmoEAxUA==} 562 | cpu: [x64] 563 | os: [linux] 564 | 565 | '@unrs/resolver-binding-wasm32-wasi@1.3.3': 566 | resolution: {integrity: sha512-81AnQY6fShmktQw4hWDUIilsKSdvr/acdJ5azAreu2IWNlaJOKphJSsUVWE+yCk6kBMoQyG9ZHCb/krb5K0PEA==} 567 | engines: {node: '>=14.0.0'} 568 | cpu: [wasm32] 569 | 570 | '@unrs/resolver-binding-win32-arm64-msvc@1.3.3': 571 | resolution: {integrity: sha512-X/42BMNw7cW6xrB9syuP5RusRnWGoq+IqvJO8IDpp/BZg64J1uuIW6qA/1Cl13Y4LyLXbJVYbYNSKwR/FiHEng==} 572 | cpu: [arm64] 573 | os: [win32] 574 | 575 | '@unrs/resolver-binding-win32-ia32-msvc@1.3.3': 576 | resolution: {integrity: sha512-EGNnNGQxMU5aTN7js3ETYvuw882zcO+dsVjs+DwO2j/fRVKth87C8e2GzxW1L3+iWAXMyJhvFBKRavk9Og1Z6A==} 577 | cpu: [ia32] 578 | os: [win32] 579 | 580 | '@unrs/resolver-binding-win32-x64-msvc@1.3.3': 581 | resolution: {integrity: sha512-GraLbYqOJcmW1qY3osB+2YIiD62nVf2/bVLHZmrb4t/YSUwE03l7TwcDJl08T/Tm3SVhepX8RQkpzWbag/Sb4w==} 582 | cpu: [x64] 583 | os: [win32] 584 | 585 | acorn-jsx@5.3.2: 586 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 587 | peerDependencies: 588 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 589 | 590 | acorn@8.14.1: 591 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 592 | engines: {node: '>=0.4.0'} 593 | hasBin: true 594 | 595 | ajv@6.12.6: 596 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 597 | 598 | ansi-escapes@4.3.2: 599 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 600 | engines: {node: '>=8'} 601 | 602 | ansi-regex@5.0.1: 603 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 604 | engines: {node: '>=8'} 605 | 606 | ansi-styles@4.3.0: 607 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 608 | engines: {node: '>=8'} 609 | 610 | ansi-styles@5.2.0: 611 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 612 | engines: {node: '>=10'} 613 | 614 | anymatch@3.1.3: 615 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 616 | engines: {node: '>= 8'} 617 | 618 | argparse@1.0.10: 619 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 620 | 621 | argparse@2.0.1: 622 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 623 | 624 | babel-jest@29.7.0: 625 | resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} 626 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 627 | peerDependencies: 628 | '@babel/core': ^7.8.0 629 | 630 | babel-plugin-istanbul@6.1.1: 631 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 632 | engines: {node: '>=8'} 633 | 634 | babel-plugin-jest-hoist@29.6.3: 635 | resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} 636 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 637 | 638 | babel-preset-current-node-syntax@1.1.0: 639 | resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} 640 | peerDependencies: 641 | '@babel/core': ^7.0.0 642 | 643 | babel-preset-jest@29.6.3: 644 | resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} 645 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 646 | peerDependencies: 647 | '@babel/core': ^7.0.0 648 | 649 | balanced-match@1.0.2: 650 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 651 | 652 | binary-extensions@2.3.0: 653 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 654 | engines: {node: '>=8'} 655 | 656 | brace-expansion@1.1.11: 657 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 658 | 659 | brace-expansion@2.0.1: 660 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 661 | 662 | braces@3.0.3: 663 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 664 | engines: {node: '>=8'} 665 | 666 | browserslist@4.24.4: 667 | resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 668 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 669 | hasBin: true 670 | 671 | bser@2.1.1: 672 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 673 | 674 | buffer-from@1.1.2: 675 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 676 | 677 | callsites@3.1.0: 678 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 679 | engines: {node: '>=6'} 680 | 681 | camelcase@5.3.1: 682 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 683 | engines: {node: '>=6'} 684 | 685 | camelcase@6.3.0: 686 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 687 | engines: {node: '>=10'} 688 | 689 | caniuse-lite@1.0.30001707: 690 | resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} 691 | 692 | chalk@4.1.2: 693 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 694 | engines: {node: '>=10'} 695 | 696 | char-regex@1.0.2: 697 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 698 | engines: {node: '>=10'} 699 | 700 | chokidar@3.6.0: 701 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 702 | engines: {node: '>= 8.10.0'} 703 | 704 | ci-info@3.9.0: 705 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 706 | engines: {node: '>=8'} 707 | 708 | cjs-module-lexer@1.4.3: 709 | resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} 710 | 711 | clean-publish@5.1.0: 712 | resolution: {integrity: sha512-Gbz8x7sL/sn0j+2B+yYEumD17WmPT6pHLN+A5nhcd0Sdh86EYblQleU+dUIICXVFalFMFBdW2aGynrVJ6k1u4Q==} 713 | engines: {node: '>= 18.0.0'} 714 | hasBin: true 715 | 716 | cliui@8.0.1: 717 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 718 | engines: {node: '>=12'} 719 | 720 | co@4.6.0: 721 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 722 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 723 | 724 | collect-v8-coverage@1.0.2: 725 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} 726 | 727 | color-convert@2.0.1: 728 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 729 | engines: {node: '>=7.0.0'} 730 | 731 | color-name@1.1.4: 732 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 733 | 734 | concat-map@0.0.1: 735 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 736 | 737 | convert-source-map@2.0.0: 738 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 739 | 740 | create-jest@29.7.0: 741 | resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} 742 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 743 | hasBin: true 744 | 745 | cross-spawn@7.0.6: 746 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 747 | engines: {node: '>= 8'} 748 | 749 | debug@3.2.7: 750 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 751 | peerDependencies: 752 | supports-color: '*' 753 | peerDependenciesMeta: 754 | supports-color: 755 | optional: true 756 | 757 | debug@4.4.0: 758 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 759 | engines: {node: '>=6.0'} 760 | peerDependencies: 761 | supports-color: '*' 762 | peerDependenciesMeta: 763 | supports-color: 764 | optional: true 765 | 766 | dedent@1.5.3: 767 | resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} 768 | peerDependencies: 769 | babel-plugin-macros: ^3.1.0 770 | peerDependenciesMeta: 771 | babel-plugin-macros: 772 | optional: true 773 | 774 | deep-is@0.1.4: 775 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 776 | 777 | deepmerge@4.3.1: 778 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 779 | engines: {node: '>=0.10.0'} 780 | 781 | detect-newline@3.1.0: 782 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 783 | engines: {node: '>=8'} 784 | 785 | diff-sequences@29.6.3: 786 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 787 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 788 | 789 | doctrine@3.0.0: 790 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 791 | engines: {node: '>=6.0.0'} 792 | 793 | electron-to-chromium@1.5.128: 794 | resolution: {integrity: sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==} 795 | 796 | emittery@0.13.1: 797 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 798 | engines: {node: '>=12'} 799 | 800 | emoji-regex@8.0.0: 801 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 802 | 803 | enhanced-resolve@5.18.1: 804 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 805 | engines: {node: '>=10.13.0'} 806 | 807 | error-ex@1.3.2: 808 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 809 | 810 | escalade@3.2.0: 811 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 812 | engines: {node: '>=6'} 813 | 814 | escape-string-regexp@2.0.0: 815 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 816 | engines: {node: '>=8'} 817 | 818 | escape-string-regexp@4.0.0: 819 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 820 | engines: {node: '>=10'} 821 | 822 | eslint-compat-utils@0.5.1: 823 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 824 | engines: {node: '>=12'} 825 | peerDependencies: 826 | eslint: '>=6.0.0' 827 | 828 | eslint-import-resolver-node@0.3.9: 829 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 830 | 831 | eslint-plugin-es-x@7.8.0: 832 | resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} 833 | engines: {node: ^14.18.0 || >=16.0.0} 834 | peerDependencies: 835 | eslint: '>=8' 836 | 837 | eslint-plugin-import-x@4.9.4: 838 | resolution: {integrity: sha512-IPWbN0KBgBCpAiSlUcS17zc1eqMzRlYz15AzsFrw2Qfqt+e0IupxYbvYD96bGLKVlNdkNwa4ggv1skztpaZR/g==} 839 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 840 | peerDependencies: 841 | eslint: ^8.57.0 || ^9.0.0 842 | 843 | eslint-plugin-n@17.17.0: 844 | resolution: {integrity: sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==} 845 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 846 | peerDependencies: 847 | eslint: '>=8.23.0' 848 | 849 | eslint-plugin-perfectionist@4.10.1: 850 | resolution: {integrity: sha512-GXwFfL47RfBLZRGQdrvGZw9Ali2T2GPW8p4Gyj2fyWQ9396R/HgJMf0m9kn7D6WXRwrINfTDGLS+QYIeok9qEg==} 851 | engines: {node: ^18.0.0 || >=20.0.0} 852 | peerDependencies: 853 | eslint: '>=8.45.0' 854 | 855 | eslint-plugin-prefer-let@4.0.0: 856 | resolution: {integrity: sha512-X4ep5PMO1320HKaNC9DM5+p6XvOhwv+RcqGjhv3aiw9iAtHhiFtdIUB5l0Zya0iM22ys2BGKzrNI9Xpw/ZHooQ==} 857 | engines: {node: '>=0.10.0'} 858 | 859 | eslint-plugin-promise@7.2.1: 860 | resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} 861 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 862 | peerDependencies: 863 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 864 | 865 | eslint-scope@8.3.0: 866 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 867 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 868 | 869 | eslint-visitor-keys@3.4.3: 870 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 871 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 872 | 873 | eslint-visitor-keys@4.2.0: 874 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 875 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 876 | 877 | eslint@9.23.0: 878 | resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} 879 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 880 | hasBin: true 881 | peerDependencies: 882 | jiti: '*' 883 | peerDependenciesMeta: 884 | jiti: 885 | optional: true 886 | 887 | espree@10.3.0: 888 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 889 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 890 | 891 | esprima@4.0.1: 892 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 893 | engines: {node: '>=4'} 894 | hasBin: true 895 | 896 | esquery@1.6.0: 897 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 898 | engines: {node: '>=0.10'} 899 | 900 | esrecurse@4.3.0: 901 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 902 | engines: {node: '>=4.0'} 903 | 904 | estraverse@5.3.0: 905 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 906 | engines: {node: '>=4.0'} 907 | 908 | esutils@2.0.3: 909 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 910 | engines: {node: '>=0.10.0'} 911 | 912 | execa@5.1.1: 913 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 914 | engines: {node: '>=10'} 915 | 916 | exit@0.1.2: 917 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} 918 | engines: {node: '>= 0.8.0'} 919 | 920 | expect@29.7.0: 921 | resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} 922 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 923 | 924 | fast-deep-equal@3.1.3: 925 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 926 | 927 | fast-glob@3.3.3: 928 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 929 | engines: {node: '>=8.6.0'} 930 | 931 | fast-json-stable-stringify@2.1.0: 932 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 933 | 934 | fast-levenshtein@2.0.6: 935 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 936 | 937 | fastq@1.19.1: 938 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 939 | 940 | fb-watchman@2.0.2: 941 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 942 | 943 | file-entry-cache@8.0.0: 944 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 945 | engines: {node: '>=16.0.0'} 946 | 947 | fill-range@7.1.1: 948 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 949 | engines: {node: '>=8'} 950 | 951 | find-up@4.1.0: 952 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 953 | engines: {node: '>=8'} 954 | 955 | find-up@5.0.0: 956 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 957 | engines: {node: '>=10'} 958 | 959 | flat-cache@4.0.1: 960 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 961 | engines: {node: '>=16'} 962 | 963 | flatted@3.3.3: 964 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 965 | 966 | fs.realpath@1.0.0: 967 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 968 | 969 | fsevents@2.3.3: 970 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 971 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 972 | os: [darwin] 973 | 974 | function-bind@1.1.2: 975 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 976 | 977 | gensync@1.0.0-beta.2: 978 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 979 | engines: {node: '>=6.9.0'} 980 | 981 | get-caller-file@2.0.5: 982 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 983 | engines: {node: 6.* || 8.* || >= 10.*} 984 | 985 | get-package-type@0.1.0: 986 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 987 | engines: {node: '>=8.0.0'} 988 | 989 | get-stream@6.0.1: 990 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 991 | engines: {node: '>=10'} 992 | 993 | get-tsconfig@4.10.0: 994 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 995 | 996 | glob-parent@5.1.2: 997 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 998 | engines: {node: '>= 6'} 999 | 1000 | glob-parent@6.0.2: 1001 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1002 | engines: {node: '>=10.13.0'} 1003 | 1004 | glob@7.2.3: 1005 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1006 | deprecated: Glob versions prior to v9 are no longer supported 1007 | 1008 | globals@11.12.0: 1009 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1010 | engines: {node: '>=4'} 1011 | 1012 | globals@14.0.0: 1013 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1014 | engines: {node: '>=18'} 1015 | 1016 | globals@15.15.0: 1017 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1018 | engines: {node: '>=18'} 1019 | 1020 | globals@16.0.0: 1021 | resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} 1022 | engines: {node: '>=18'} 1023 | 1024 | graceful-fs@4.2.11: 1025 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1026 | 1027 | graphemer@1.4.0: 1028 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1029 | 1030 | has-flag@4.0.0: 1031 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1032 | engines: {node: '>=8'} 1033 | 1034 | hasown@2.0.2: 1035 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1036 | engines: {node: '>= 0.4'} 1037 | 1038 | html-escaper@2.0.2: 1039 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1040 | 1041 | human-signals@2.1.0: 1042 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1043 | engines: {node: '>=10.17.0'} 1044 | 1045 | ignore@5.3.2: 1046 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1047 | engines: {node: '>= 4'} 1048 | 1049 | import-fresh@3.3.1: 1050 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1051 | engines: {node: '>=6'} 1052 | 1053 | import-local@3.2.0: 1054 | resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} 1055 | engines: {node: '>=8'} 1056 | hasBin: true 1057 | 1058 | imurmurhash@0.1.4: 1059 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1060 | engines: {node: '>=0.8.19'} 1061 | 1062 | inflight@1.0.6: 1063 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1064 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1065 | 1066 | inherits@2.0.4: 1067 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1068 | 1069 | is-arrayish@0.2.1: 1070 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1071 | 1072 | is-binary-path@2.1.0: 1073 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1074 | engines: {node: '>=8'} 1075 | 1076 | is-core-module@2.16.1: 1077 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1078 | engines: {node: '>= 0.4'} 1079 | 1080 | is-extglob@2.1.1: 1081 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1082 | engines: {node: '>=0.10.0'} 1083 | 1084 | is-fullwidth-code-point@3.0.0: 1085 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1086 | engines: {node: '>=8'} 1087 | 1088 | is-generator-fn@2.1.0: 1089 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1090 | engines: {node: '>=6'} 1091 | 1092 | is-glob@4.0.3: 1093 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1094 | engines: {node: '>=0.10.0'} 1095 | 1096 | is-number@7.0.0: 1097 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1098 | engines: {node: '>=0.12.0'} 1099 | 1100 | is-stream@2.0.1: 1101 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1102 | engines: {node: '>=8'} 1103 | 1104 | isexe@2.0.0: 1105 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1106 | 1107 | istanbul-lib-coverage@3.2.2: 1108 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 1109 | engines: {node: '>=8'} 1110 | 1111 | istanbul-lib-instrument@5.2.1: 1112 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} 1113 | engines: {node: '>=8'} 1114 | 1115 | istanbul-lib-instrument@6.0.3: 1116 | resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} 1117 | engines: {node: '>=10'} 1118 | 1119 | istanbul-lib-report@3.0.1: 1120 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1121 | engines: {node: '>=10'} 1122 | 1123 | istanbul-lib-source-maps@4.0.1: 1124 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 1125 | engines: {node: '>=10'} 1126 | 1127 | istanbul-reports@3.1.7: 1128 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 1129 | engines: {node: '>=8'} 1130 | 1131 | jest-changed-files@29.7.0: 1132 | resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} 1133 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1134 | 1135 | jest-circus@29.7.0: 1136 | resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} 1137 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1138 | 1139 | jest-cli@29.7.0: 1140 | resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} 1141 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1142 | hasBin: true 1143 | peerDependencies: 1144 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1145 | peerDependenciesMeta: 1146 | node-notifier: 1147 | optional: true 1148 | 1149 | jest-config@29.7.0: 1150 | resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} 1151 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1152 | peerDependencies: 1153 | '@types/node': '*' 1154 | ts-node: '>=9.0.0' 1155 | peerDependenciesMeta: 1156 | '@types/node': 1157 | optional: true 1158 | ts-node: 1159 | optional: true 1160 | 1161 | jest-diff@29.7.0: 1162 | resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} 1163 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1164 | 1165 | jest-docblock@29.7.0: 1166 | resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} 1167 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1168 | 1169 | jest-each@29.7.0: 1170 | resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} 1171 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1172 | 1173 | jest-environment-node@29.7.0: 1174 | resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} 1175 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1176 | 1177 | jest-get-type@29.6.3: 1178 | resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} 1179 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1180 | 1181 | jest-haste-map@29.7.0: 1182 | resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} 1183 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1184 | 1185 | jest-leak-detector@29.7.0: 1186 | resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} 1187 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1188 | 1189 | jest-matcher-utils@29.7.0: 1190 | resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} 1191 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1192 | 1193 | jest-message-util@29.7.0: 1194 | resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} 1195 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1196 | 1197 | jest-mock@29.7.0: 1198 | resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} 1199 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1200 | 1201 | jest-pnp-resolver@1.2.3: 1202 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 1203 | engines: {node: '>=6'} 1204 | peerDependencies: 1205 | jest-resolve: '*' 1206 | peerDependenciesMeta: 1207 | jest-resolve: 1208 | optional: true 1209 | 1210 | jest-regex-util@29.6.3: 1211 | resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} 1212 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1213 | 1214 | jest-resolve-dependencies@29.7.0: 1215 | resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} 1216 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1217 | 1218 | jest-resolve@29.7.0: 1219 | resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} 1220 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1221 | 1222 | jest-runner@29.7.0: 1223 | resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} 1224 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1225 | 1226 | jest-runtime@29.7.0: 1227 | resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} 1228 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1229 | 1230 | jest-snapshot@29.7.0: 1231 | resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} 1232 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1233 | 1234 | jest-util@29.7.0: 1235 | resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} 1236 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1237 | 1238 | jest-validate@29.7.0: 1239 | resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} 1240 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1241 | 1242 | jest-watcher@29.7.0: 1243 | resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} 1244 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1245 | 1246 | jest-worker@29.7.0: 1247 | resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} 1248 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1249 | 1250 | jest@29.7.0: 1251 | resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} 1252 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1253 | hasBin: true 1254 | peerDependencies: 1255 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1256 | peerDependenciesMeta: 1257 | node-notifier: 1258 | optional: true 1259 | 1260 | js-tokens@4.0.0: 1261 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1262 | 1263 | js-yaml@3.14.1: 1264 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1265 | hasBin: true 1266 | 1267 | js-yaml@4.1.0: 1268 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1269 | hasBin: true 1270 | 1271 | jsesc@3.1.0: 1272 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1273 | engines: {node: '>=6'} 1274 | hasBin: true 1275 | 1276 | json-buffer@3.0.1: 1277 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1278 | 1279 | json-parse-even-better-errors@2.3.1: 1280 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1281 | 1282 | json-schema-traverse@0.4.1: 1283 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1284 | 1285 | json-stable-stringify-without-jsonify@1.0.1: 1286 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1287 | 1288 | json5@2.2.3: 1289 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1290 | engines: {node: '>=6'} 1291 | hasBin: true 1292 | 1293 | keyv@4.5.4: 1294 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1295 | 1296 | kleur@3.0.3: 1297 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1298 | engines: {node: '>=6'} 1299 | 1300 | leven@3.1.0: 1301 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 1302 | engines: {node: '>=6'} 1303 | 1304 | levn@0.4.1: 1305 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1306 | engines: {node: '>= 0.8.0'} 1307 | 1308 | lilconfig@3.1.3: 1309 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1310 | engines: {node: '>=14'} 1311 | 1312 | lines-and-columns@1.2.4: 1313 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1314 | 1315 | locate-path@5.0.0: 1316 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1317 | engines: {node: '>=8'} 1318 | 1319 | locate-path@6.0.0: 1320 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1321 | engines: {node: '>=10'} 1322 | 1323 | lodash.merge@4.6.2: 1324 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1325 | 1326 | lru-cache@5.1.1: 1327 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1328 | 1329 | make-dir@4.0.0: 1330 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1331 | engines: {node: '>=10'} 1332 | 1333 | makeerror@1.0.12: 1334 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 1335 | 1336 | merge-stream@2.0.0: 1337 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1338 | 1339 | merge2@1.4.1: 1340 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1341 | engines: {node: '>= 8'} 1342 | 1343 | micromatch@4.0.8: 1344 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1345 | engines: {node: '>=8.6'} 1346 | 1347 | mimic-fn@2.1.0: 1348 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1349 | engines: {node: '>=6'} 1350 | 1351 | minimatch@10.0.1: 1352 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 1353 | engines: {node: 20 || >=22} 1354 | 1355 | minimatch@3.1.2: 1356 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1357 | 1358 | minimatch@9.0.5: 1359 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1360 | engines: {node: '>=16 || 14 >=14.17'} 1361 | 1362 | ms@2.1.3: 1363 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1364 | 1365 | nanospinner@1.2.2: 1366 | resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} 1367 | 1368 | natural-compare@1.4.0: 1369 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1370 | 1371 | natural-orderby@5.0.0: 1372 | resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} 1373 | engines: {node: '>=18'} 1374 | 1375 | node-int64@0.4.0: 1376 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 1377 | 1378 | node-releases@2.0.19: 1379 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1380 | 1381 | normalize-path@3.0.0: 1382 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1383 | engines: {node: '>=0.10.0'} 1384 | 1385 | npm-run-path@4.0.1: 1386 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1387 | engines: {node: '>=8'} 1388 | 1389 | once@1.4.0: 1390 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1391 | 1392 | onetime@5.1.2: 1393 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1394 | engines: {node: '>=6'} 1395 | 1396 | optionator@0.9.4: 1397 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1398 | engines: {node: '>= 0.8.0'} 1399 | 1400 | p-limit@2.3.0: 1401 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1402 | engines: {node: '>=6'} 1403 | 1404 | p-limit@3.1.0: 1405 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1406 | engines: {node: '>=10'} 1407 | 1408 | p-locate@4.1.0: 1409 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1410 | engines: {node: '>=8'} 1411 | 1412 | p-locate@5.0.0: 1413 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1414 | engines: {node: '>=10'} 1415 | 1416 | p-try@2.2.0: 1417 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1418 | engines: {node: '>=6'} 1419 | 1420 | parent-module@1.0.1: 1421 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1422 | engines: {node: '>=6'} 1423 | 1424 | parse-gitignore@1.0.1: 1425 | resolution: {integrity: sha512-UGyowyjtx26n65kdAMWhm6/3uy5uSrpcuH7tt+QEVudiBoVS+eqHxD5kbi9oWVRwj7sCzXqwuM+rUGw7earl6A==} 1426 | engines: {node: '>=6'} 1427 | 1428 | parse-json@5.2.0: 1429 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1430 | engines: {node: '>=8'} 1431 | 1432 | path-exists@4.0.0: 1433 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1434 | engines: {node: '>=8'} 1435 | 1436 | path-is-absolute@1.0.1: 1437 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1438 | engines: {node: '>=0.10.0'} 1439 | 1440 | path-key@3.1.1: 1441 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1442 | engines: {node: '>=8'} 1443 | 1444 | path-parse@1.0.7: 1445 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1446 | 1447 | picocolors@1.1.1: 1448 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1449 | 1450 | picomatch@2.3.1: 1451 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1452 | engines: {node: '>=8.6'} 1453 | 1454 | pirates@4.0.7: 1455 | resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} 1456 | engines: {node: '>= 6'} 1457 | 1458 | pkg-dir@4.2.0: 1459 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1460 | engines: {node: '>=8'} 1461 | 1462 | prelude-ls@1.2.1: 1463 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1464 | engines: {node: '>= 0.8.0'} 1465 | 1466 | pretty-format@29.7.0: 1467 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 1468 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1469 | 1470 | print-snapshots@0.4.2: 1471 | resolution: {integrity: sha512-YQ1QIrOFK3fIrbmbV4NQAs1fuC/RNpWImkxy1B9Hnuyiieaclt5xORgsNBEtY/1C7tbIu/x8vPqvUeoQ0reu1g==} 1472 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 1473 | hasBin: true 1474 | 1475 | prompts@2.4.2: 1476 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1477 | engines: {node: '>= 6'} 1478 | 1479 | punycode@2.3.1: 1480 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1481 | engines: {node: '>=6'} 1482 | 1483 | pure-rand@6.1.0: 1484 | resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} 1485 | 1486 | queue-microtask@1.2.3: 1487 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1488 | 1489 | react-is@18.3.1: 1490 | resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} 1491 | 1492 | readdirp@3.6.0: 1493 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1494 | engines: {node: '>=8.10.0'} 1495 | 1496 | require-directory@2.1.1: 1497 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1498 | engines: {node: '>=0.10.0'} 1499 | 1500 | requireindex@1.2.0: 1501 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} 1502 | engines: {node: '>=0.10.5'} 1503 | 1504 | resolve-cwd@3.0.0: 1505 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1506 | engines: {node: '>=8'} 1507 | 1508 | resolve-from@4.0.0: 1509 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1510 | engines: {node: '>=4'} 1511 | 1512 | resolve-from@5.0.0: 1513 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1514 | engines: {node: '>=8'} 1515 | 1516 | resolve-pkg-maps@1.0.0: 1517 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1518 | 1519 | resolve.exports@2.0.3: 1520 | resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} 1521 | engines: {node: '>=10'} 1522 | 1523 | resolve@1.22.10: 1524 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1525 | engines: {node: '>= 0.4'} 1526 | hasBin: true 1527 | 1528 | reusify@1.1.0: 1529 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1530 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1531 | 1532 | run-parallel@1.2.0: 1533 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1534 | 1535 | semver@6.3.1: 1536 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1537 | hasBin: true 1538 | 1539 | semver@7.7.1: 1540 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1541 | engines: {node: '>=10'} 1542 | hasBin: true 1543 | 1544 | shebang-command@2.0.0: 1545 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1546 | engines: {node: '>=8'} 1547 | 1548 | shebang-regex@3.0.0: 1549 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1550 | engines: {node: '>=8'} 1551 | 1552 | signal-exit@3.0.7: 1553 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1554 | 1555 | sisteransi@1.0.5: 1556 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 1557 | 1558 | slash@3.0.0: 1559 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1560 | engines: {node: '>=8'} 1561 | 1562 | source-map-support@0.5.13: 1563 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} 1564 | 1565 | source-map@0.6.1: 1566 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1567 | engines: {node: '>=0.10.0'} 1568 | 1569 | sprintf-js@1.0.3: 1570 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1571 | 1572 | stable-hash@0.0.5: 1573 | resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} 1574 | 1575 | stack-utils@2.0.6: 1576 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 1577 | engines: {node: '>=10'} 1578 | 1579 | string-length@4.0.2: 1580 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 1581 | engines: {node: '>=10'} 1582 | 1583 | string-width@4.2.3: 1584 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1585 | engines: {node: '>=8'} 1586 | 1587 | strip-ansi@6.0.1: 1588 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1589 | engines: {node: '>=8'} 1590 | 1591 | strip-bom@4.0.0: 1592 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 1593 | engines: {node: '>=8'} 1594 | 1595 | strip-final-newline@2.0.0: 1596 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1597 | engines: {node: '>=6'} 1598 | 1599 | strip-json-comments@3.1.1: 1600 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1601 | engines: {node: '>=8'} 1602 | 1603 | supports-color@7.2.0: 1604 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1605 | engines: {node: '>=8'} 1606 | 1607 | supports-color@8.1.1: 1608 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1609 | engines: {node: '>=10'} 1610 | 1611 | supports-preserve-symlinks-flag@1.0.0: 1612 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1613 | engines: {node: '>= 0.4'} 1614 | 1615 | tapable@2.2.1: 1616 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 1617 | engines: {node: '>=6'} 1618 | 1619 | test-exclude@6.0.0: 1620 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 1621 | engines: {node: '>=8'} 1622 | 1623 | tmpl@1.0.5: 1624 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 1625 | 1626 | to-regex-range@5.0.1: 1627 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1628 | engines: {node: '>=8.0'} 1629 | 1630 | ts-api-utils@2.1.0: 1631 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1632 | engines: {node: '>=18.12'} 1633 | peerDependencies: 1634 | typescript: '>=4.8.4' 1635 | 1636 | tslib@2.8.1: 1637 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1638 | 1639 | type-check@0.4.0: 1640 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1641 | engines: {node: '>= 0.8.0'} 1642 | 1643 | type-detect@4.0.8: 1644 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 1645 | engines: {node: '>=4'} 1646 | 1647 | type-fest@0.21.3: 1648 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 1649 | engines: {node: '>=10'} 1650 | 1651 | typescript-eslint@8.28.0: 1652 | resolution: {integrity: sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==} 1653 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1654 | peerDependencies: 1655 | eslint: ^8.57.0 || ^9.0.0 1656 | typescript: '>=4.8.4 <5.9.0' 1657 | 1658 | typescript@5.8.2: 1659 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} 1660 | engines: {node: '>=14.17'} 1661 | hasBin: true 1662 | 1663 | undici-types@6.20.0: 1664 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1665 | 1666 | unist-util-stringify-position@4.0.0: 1667 | resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 1668 | 1669 | unrs-resolver@1.3.3: 1670 | resolution: {integrity: sha512-PFLAGQzYlyjniXdbmQ3dnGMZJXX5yrl2YS4DLRfR3BhgUsE1zpRIrccp9XMOGRfIHpdFvCn/nr5N1KMVda4x3A==} 1671 | 1672 | update-browserslist-db@1.1.3: 1673 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1674 | hasBin: true 1675 | peerDependencies: 1676 | browserslist: '>= 4.21.0' 1677 | 1678 | uri-js@4.4.1: 1679 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1680 | 1681 | v8-to-istanbul@9.3.0: 1682 | resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} 1683 | engines: {node: '>=10.12.0'} 1684 | 1685 | vfile-location@5.0.3: 1686 | resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 1687 | 1688 | vfile-message@4.0.2: 1689 | resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} 1690 | 1691 | vfile@6.0.3: 1692 | resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 1693 | 1694 | walker@1.0.8: 1695 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 1696 | 1697 | which@2.0.2: 1698 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1699 | engines: {node: '>= 8'} 1700 | hasBin: true 1701 | 1702 | word-wrap@1.2.5: 1703 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1704 | engines: {node: '>=0.10.0'} 1705 | 1706 | wrap-ansi@7.0.0: 1707 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1708 | engines: {node: '>=10'} 1709 | 1710 | wrappy@1.0.2: 1711 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1712 | 1713 | write-file-atomic@4.0.2: 1714 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} 1715 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1716 | 1717 | y18n@5.0.8: 1718 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1719 | engines: {node: '>=10'} 1720 | 1721 | yallist@3.1.1: 1722 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1723 | 1724 | yargs-parser@21.1.1: 1725 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1726 | engines: {node: '>=12'} 1727 | 1728 | yargs@17.7.2: 1729 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1730 | engines: {node: '>=12'} 1731 | 1732 | yocto-queue@0.1.0: 1733 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1734 | engines: {node: '>=10'} 1735 | 1736 | snapshots: 1737 | 1738 | '@ampproject/remapping@2.3.0': 1739 | dependencies: 1740 | '@jridgewell/gen-mapping': 0.3.8 1741 | '@jridgewell/trace-mapping': 0.3.25 1742 | 1743 | '@babel/code-frame@7.26.2': 1744 | dependencies: 1745 | '@babel/helper-validator-identifier': 7.25.9 1746 | js-tokens: 4.0.0 1747 | picocolors: 1.1.1 1748 | 1749 | '@babel/compat-data@7.26.8': {} 1750 | 1751 | '@babel/core@7.26.10': 1752 | dependencies: 1753 | '@ampproject/remapping': 2.3.0 1754 | '@babel/code-frame': 7.26.2 1755 | '@babel/generator': 7.27.0 1756 | '@babel/helper-compilation-targets': 7.27.0 1757 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) 1758 | '@babel/helpers': 7.27.0 1759 | '@babel/parser': 7.27.0 1760 | '@babel/template': 7.27.0 1761 | '@babel/traverse': 7.27.0 1762 | '@babel/types': 7.27.0 1763 | convert-source-map: 2.0.0 1764 | debug: 4.4.0 1765 | gensync: 1.0.0-beta.2 1766 | json5: 2.2.3 1767 | semver: 6.3.1 1768 | transitivePeerDependencies: 1769 | - supports-color 1770 | 1771 | '@babel/generator@7.27.0': 1772 | dependencies: 1773 | '@babel/parser': 7.27.0 1774 | '@babel/types': 7.27.0 1775 | '@jridgewell/gen-mapping': 0.3.8 1776 | '@jridgewell/trace-mapping': 0.3.25 1777 | jsesc: 3.1.0 1778 | 1779 | '@babel/helper-compilation-targets@7.27.0': 1780 | dependencies: 1781 | '@babel/compat-data': 7.26.8 1782 | '@babel/helper-validator-option': 7.25.9 1783 | browserslist: 4.24.4 1784 | lru-cache: 5.1.1 1785 | semver: 6.3.1 1786 | 1787 | '@babel/helper-module-imports@7.25.9': 1788 | dependencies: 1789 | '@babel/traverse': 7.27.0 1790 | '@babel/types': 7.27.0 1791 | transitivePeerDependencies: 1792 | - supports-color 1793 | 1794 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': 1795 | dependencies: 1796 | '@babel/core': 7.26.10 1797 | '@babel/helper-module-imports': 7.25.9 1798 | '@babel/helper-validator-identifier': 7.25.9 1799 | '@babel/traverse': 7.27.0 1800 | transitivePeerDependencies: 1801 | - supports-color 1802 | 1803 | '@babel/helper-plugin-utils@7.26.5': {} 1804 | 1805 | '@babel/helper-string-parser@7.25.9': {} 1806 | 1807 | '@babel/helper-validator-identifier@7.25.9': {} 1808 | 1809 | '@babel/helper-validator-option@7.25.9': {} 1810 | 1811 | '@babel/helpers@7.27.0': 1812 | dependencies: 1813 | '@babel/template': 7.27.0 1814 | '@babel/types': 7.27.0 1815 | 1816 | '@babel/parser@7.27.0': 1817 | dependencies: 1818 | '@babel/types': 7.27.0 1819 | 1820 | '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': 1821 | dependencies: 1822 | '@babel/core': 7.26.10 1823 | '@babel/helper-plugin-utils': 7.26.5 1824 | 1825 | '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': 1826 | dependencies: 1827 | '@babel/core': 7.26.10 1828 | '@babel/helper-plugin-utils': 7.26.5 1829 | 1830 | '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': 1831 | dependencies: 1832 | '@babel/core': 7.26.10 1833 | '@babel/helper-plugin-utils': 7.26.5 1834 | 1835 | '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': 1836 | dependencies: 1837 | '@babel/core': 7.26.10 1838 | '@babel/helper-plugin-utils': 7.26.5 1839 | 1840 | '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': 1841 | dependencies: 1842 | '@babel/core': 7.26.10 1843 | '@babel/helper-plugin-utils': 7.26.5 1844 | 1845 | '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': 1846 | dependencies: 1847 | '@babel/core': 7.26.10 1848 | '@babel/helper-plugin-utils': 7.26.5 1849 | 1850 | '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': 1851 | dependencies: 1852 | '@babel/core': 7.26.10 1853 | '@babel/helper-plugin-utils': 7.26.5 1854 | 1855 | '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': 1856 | dependencies: 1857 | '@babel/core': 7.26.10 1858 | '@babel/helper-plugin-utils': 7.26.5 1859 | 1860 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': 1861 | dependencies: 1862 | '@babel/core': 7.26.10 1863 | '@babel/helper-plugin-utils': 7.26.5 1864 | 1865 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': 1866 | dependencies: 1867 | '@babel/core': 7.26.10 1868 | '@babel/helper-plugin-utils': 7.26.5 1869 | 1870 | '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': 1871 | dependencies: 1872 | '@babel/core': 7.26.10 1873 | '@babel/helper-plugin-utils': 7.26.5 1874 | 1875 | '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': 1876 | dependencies: 1877 | '@babel/core': 7.26.10 1878 | '@babel/helper-plugin-utils': 7.26.5 1879 | 1880 | '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': 1881 | dependencies: 1882 | '@babel/core': 7.26.10 1883 | '@babel/helper-plugin-utils': 7.26.5 1884 | 1885 | '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': 1886 | dependencies: 1887 | '@babel/core': 7.26.10 1888 | '@babel/helper-plugin-utils': 7.26.5 1889 | 1890 | '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': 1891 | dependencies: 1892 | '@babel/core': 7.26.10 1893 | '@babel/helper-plugin-utils': 7.26.5 1894 | 1895 | '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': 1896 | dependencies: 1897 | '@babel/core': 7.26.10 1898 | '@babel/helper-plugin-utils': 7.26.5 1899 | 1900 | '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': 1901 | dependencies: 1902 | '@babel/core': 7.26.10 1903 | '@babel/helper-plugin-utils': 7.26.5 1904 | 1905 | '@babel/template@7.27.0': 1906 | dependencies: 1907 | '@babel/code-frame': 7.26.2 1908 | '@babel/parser': 7.27.0 1909 | '@babel/types': 7.27.0 1910 | 1911 | '@babel/traverse@7.27.0': 1912 | dependencies: 1913 | '@babel/code-frame': 7.26.2 1914 | '@babel/generator': 7.27.0 1915 | '@babel/parser': 7.27.0 1916 | '@babel/template': 7.27.0 1917 | '@babel/types': 7.27.0 1918 | debug: 4.4.0 1919 | globals: 11.12.0 1920 | transitivePeerDependencies: 1921 | - supports-color 1922 | 1923 | '@babel/types@7.27.0': 1924 | dependencies: 1925 | '@babel/helper-string-parser': 7.25.9 1926 | '@babel/helper-validator-identifier': 7.25.9 1927 | 1928 | '@bcoe/v8-coverage@0.2.3': {} 1929 | 1930 | '@emnapi/core@1.4.0': 1931 | dependencies: 1932 | '@emnapi/wasi-threads': 1.0.1 1933 | tslib: 2.8.1 1934 | optional: true 1935 | 1936 | '@emnapi/runtime@1.4.0': 1937 | dependencies: 1938 | tslib: 2.8.1 1939 | optional: true 1940 | 1941 | '@emnapi/wasi-threads@1.0.1': 1942 | dependencies: 1943 | tslib: 2.8.1 1944 | optional: true 1945 | 1946 | '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0)': 1947 | dependencies: 1948 | eslint: 9.23.0 1949 | eslint-visitor-keys: 3.4.3 1950 | 1951 | '@eslint-community/regexpp@4.12.1': {} 1952 | 1953 | '@eslint/config-array@0.19.2': 1954 | dependencies: 1955 | '@eslint/object-schema': 2.1.6 1956 | debug: 4.4.0 1957 | minimatch: 3.1.2 1958 | transitivePeerDependencies: 1959 | - supports-color 1960 | 1961 | '@eslint/config-helpers@0.2.0': {} 1962 | 1963 | '@eslint/core@0.12.0': 1964 | dependencies: 1965 | '@types/json-schema': 7.0.15 1966 | 1967 | '@eslint/eslintrc@3.3.1': 1968 | dependencies: 1969 | ajv: 6.12.6 1970 | debug: 4.4.0 1971 | espree: 10.3.0 1972 | globals: 14.0.0 1973 | ignore: 5.3.2 1974 | import-fresh: 3.3.1 1975 | js-yaml: 4.1.0 1976 | minimatch: 3.1.2 1977 | strip-json-comments: 3.1.1 1978 | transitivePeerDependencies: 1979 | - supports-color 1980 | 1981 | '@eslint/js@9.23.0': {} 1982 | 1983 | '@eslint/object-schema@2.1.6': {} 1984 | 1985 | '@eslint/plugin-kit@0.2.7': 1986 | dependencies: 1987 | '@eslint/core': 0.12.0 1988 | levn: 0.4.1 1989 | 1990 | '@humanfs/core@0.19.1': {} 1991 | 1992 | '@humanfs/node@0.16.6': 1993 | dependencies: 1994 | '@humanfs/core': 0.19.1 1995 | '@humanwhocodes/retry': 0.3.1 1996 | 1997 | '@humanwhocodes/module-importer@1.0.1': {} 1998 | 1999 | '@humanwhocodes/retry@0.3.1': {} 2000 | 2001 | '@humanwhocodes/retry@0.4.2': {} 2002 | 2003 | '@istanbuljs/load-nyc-config@1.1.0': 2004 | dependencies: 2005 | camelcase: 5.3.1 2006 | find-up: 4.1.0 2007 | get-package-type: 0.1.0 2008 | js-yaml: 3.14.1 2009 | resolve-from: 5.0.0 2010 | 2011 | '@istanbuljs/schema@0.1.3': {} 2012 | 2013 | '@jest/console@29.7.0': 2014 | dependencies: 2015 | '@jest/types': 29.6.3 2016 | '@types/node': 22.13.14 2017 | chalk: 4.1.2 2018 | jest-message-util: 29.7.0 2019 | jest-util: 29.7.0 2020 | slash: 3.0.0 2021 | 2022 | '@jest/core@29.7.0': 2023 | dependencies: 2024 | '@jest/console': 29.7.0 2025 | '@jest/reporters': 29.7.0 2026 | '@jest/test-result': 29.7.0 2027 | '@jest/transform': 29.7.0 2028 | '@jest/types': 29.6.3 2029 | '@types/node': 22.13.14 2030 | ansi-escapes: 4.3.2 2031 | chalk: 4.1.2 2032 | ci-info: 3.9.0 2033 | exit: 0.1.2 2034 | graceful-fs: 4.2.11 2035 | jest-changed-files: 29.7.0 2036 | jest-config: 29.7.0(@types/node@22.13.14) 2037 | jest-haste-map: 29.7.0 2038 | jest-message-util: 29.7.0 2039 | jest-regex-util: 29.6.3 2040 | jest-resolve: 29.7.0 2041 | jest-resolve-dependencies: 29.7.0 2042 | jest-runner: 29.7.0 2043 | jest-runtime: 29.7.0 2044 | jest-snapshot: 29.7.0 2045 | jest-util: 29.7.0 2046 | jest-validate: 29.7.0 2047 | jest-watcher: 29.7.0 2048 | micromatch: 4.0.8 2049 | pretty-format: 29.7.0 2050 | slash: 3.0.0 2051 | strip-ansi: 6.0.1 2052 | transitivePeerDependencies: 2053 | - babel-plugin-macros 2054 | - supports-color 2055 | - ts-node 2056 | 2057 | '@jest/environment@29.7.0': 2058 | dependencies: 2059 | '@jest/fake-timers': 29.7.0 2060 | '@jest/types': 29.6.3 2061 | '@types/node': 22.13.14 2062 | jest-mock: 29.7.0 2063 | 2064 | '@jest/expect-utils@29.7.0': 2065 | dependencies: 2066 | jest-get-type: 29.6.3 2067 | 2068 | '@jest/expect@29.7.0': 2069 | dependencies: 2070 | expect: 29.7.0 2071 | jest-snapshot: 29.7.0 2072 | transitivePeerDependencies: 2073 | - supports-color 2074 | 2075 | '@jest/fake-timers@29.7.0': 2076 | dependencies: 2077 | '@jest/types': 29.6.3 2078 | '@sinonjs/fake-timers': 10.3.0 2079 | '@types/node': 22.13.14 2080 | jest-message-util: 29.7.0 2081 | jest-mock: 29.7.0 2082 | jest-util: 29.7.0 2083 | 2084 | '@jest/globals@29.7.0': 2085 | dependencies: 2086 | '@jest/environment': 29.7.0 2087 | '@jest/expect': 29.7.0 2088 | '@jest/types': 29.6.3 2089 | jest-mock: 29.7.0 2090 | transitivePeerDependencies: 2091 | - supports-color 2092 | 2093 | '@jest/reporters@29.7.0': 2094 | dependencies: 2095 | '@bcoe/v8-coverage': 0.2.3 2096 | '@jest/console': 29.7.0 2097 | '@jest/test-result': 29.7.0 2098 | '@jest/transform': 29.7.0 2099 | '@jest/types': 29.6.3 2100 | '@jridgewell/trace-mapping': 0.3.25 2101 | '@types/node': 22.13.14 2102 | chalk: 4.1.2 2103 | collect-v8-coverage: 1.0.2 2104 | exit: 0.1.2 2105 | glob: 7.2.3 2106 | graceful-fs: 4.2.11 2107 | istanbul-lib-coverage: 3.2.2 2108 | istanbul-lib-instrument: 6.0.3 2109 | istanbul-lib-report: 3.0.1 2110 | istanbul-lib-source-maps: 4.0.1 2111 | istanbul-reports: 3.1.7 2112 | jest-message-util: 29.7.0 2113 | jest-util: 29.7.0 2114 | jest-worker: 29.7.0 2115 | slash: 3.0.0 2116 | string-length: 4.0.2 2117 | strip-ansi: 6.0.1 2118 | v8-to-istanbul: 9.3.0 2119 | transitivePeerDependencies: 2120 | - supports-color 2121 | 2122 | '@jest/schemas@29.6.3': 2123 | dependencies: 2124 | '@sinclair/typebox': 0.27.8 2125 | 2126 | '@jest/source-map@29.6.3': 2127 | dependencies: 2128 | '@jridgewell/trace-mapping': 0.3.25 2129 | callsites: 3.1.0 2130 | graceful-fs: 4.2.11 2131 | 2132 | '@jest/test-result@29.7.0': 2133 | dependencies: 2134 | '@jest/console': 29.7.0 2135 | '@jest/types': 29.6.3 2136 | '@types/istanbul-lib-coverage': 2.0.6 2137 | collect-v8-coverage: 1.0.2 2138 | 2139 | '@jest/test-sequencer@29.7.0': 2140 | dependencies: 2141 | '@jest/test-result': 29.7.0 2142 | graceful-fs: 4.2.11 2143 | jest-haste-map: 29.7.0 2144 | slash: 3.0.0 2145 | 2146 | '@jest/transform@29.7.0': 2147 | dependencies: 2148 | '@babel/core': 7.26.10 2149 | '@jest/types': 29.6.3 2150 | '@jridgewell/trace-mapping': 0.3.25 2151 | babel-plugin-istanbul: 6.1.1 2152 | chalk: 4.1.2 2153 | convert-source-map: 2.0.0 2154 | fast-json-stable-stringify: 2.1.0 2155 | graceful-fs: 4.2.11 2156 | jest-haste-map: 29.7.0 2157 | jest-regex-util: 29.6.3 2158 | jest-util: 29.7.0 2159 | micromatch: 4.0.8 2160 | pirates: 4.0.7 2161 | slash: 3.0.0 2162 | write-file-atomic: 4.0.2 2163 | transitivePeerDependencies: 2164 | - supports-color 2165 | 2166 | '@jest/types@29.6.3': 2167 | dependencies: 2168 | '@jest/schemas': 29.6.3 2169 | '@types/istanbul-lib-coverage': 2.0.6 2170 | '@types/istanbul-reports': 3.0.4 2171 | '@types/node': 22.13.14 2172 | '@types/yargs': 17.0.33 2173 | chalk: 4.1.2 2174 | 2175 | '@jridgewell/gen-mapping@0.3.8': 2176 | dependencies: 2177 | '@jridgewell/set-array': 1.2.1 2178 | '@jridgewell/sourcemap-codec': 1.5.0 2179 | '@jridgewell/trace-mapping': 0.3.25 2180 | 2181 | '@jridgewell/resolve-uri@3.1.2': {} 2182 | 2183 | '@jridgewell/set-array@1.2.1': {} 2184 | 2185 | '@jridgewell/sourcemap-codec@1.5.0': {} 2186 | 2187 | '@jridgewell/trace-mapping@0.3.25': 2188 | dependencies: 2189 | '@jridgewell/resolve-uri': 3.1.2 2190 | '@jridgewell/sourcemap-codec': 1.5.0 2191 | 2192 | '@logux/eslint-config@55.2.0(eslint@9.23.0)(typescript@5.8.2)': 2193 | dependencies: 2194 | '@eslint/eslintrc': 3.3.1 2195 | eslint: 9.23.0 2196 | eslint-plugin-import-x: 4.9.4(eslint@9.23.0)(typescript@5.8.2) 2197 | eslint-plugin-n: 17.17.0(eslint@9.23.0) 2198 | eslint-plugin-perfectionist: 4.10.1(eslint@9.23.0)(typescript@5.8.2) 2199 | eslint-plugin-prefer-let: 4.0.0 2200 | eslint-plugin-promise: 7.2.1(eslint@9.23.0) 2201 | globals: 16.0.0 2202 | typescript-eslint: 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2203 | transitivePeerDependencies: 2204 | - supports-color 2205 | - typescript 2206 | 2207 | '@napi-rs/wasm-runtime@0.2.7': 2208 | dependencies: 2209 | '@emnapi/core': 1.4.0 2210 | '@emnapi/runtime': 1.4.0 2211 | '@tybys/wasm-util': 0.9.0 2212 | optional: true 2213 | 2214 | '@nodelib/fs.scandir@2.1.5': 2215 | dependencies: 2216 | '@nodelib/fs.stat': 2.0.5 2217 | run-parallel: 1.2.0 2218 | 2219 | '@nodelib/fs.stat@2.0.5': {} 2220 | 2221 | '@nodelib/fs.walk@1.2.8': 2222 | dependencies: 2223 | '@nodelib/fs.scandir': 2.1.5 2224 | fastq: 1.19.1 2225 | 2226 | '@sinclair/typebox@0.27.8': {} 2227 | 2228 | '@sinonjs/commons@3.0.1': 2229 | dependencies: 2230 | type-detect: 4.0.8 2231 | 2232 | '@sinonjs/fake-timers@10.3.0': 2233 | dependencies: 2234 | '@sinonjs/commons': 3.0.1 2235 | 2236 | '@tybys/wasm-util@0.9.0': 2237 | dependencies: 2238 | tslib: 2.8.1 2239 | optional: true 2240 | 2241 | '@types/babel__core@7.20.5': 2242 | dependencies: 2243 | '@babel/parser': 7.27.0 2244 | '@babel/types': 7.27.0 2245 | '@types/babel__generator': 7.6.8 2246 | '@types/babel__template': 7.4.4 2247 | '@types/babel__traverse': 7.20.7 2248 | 2249 | '@types/babel__generator@7.6.8': 2250 | dependencies: 2251 | '@babel/types': 7.27.0 2252 | 2253 | '@types/babel__template@7.4.4': 2254 | dependencies: 2255 | '@babel/parser': 7.27.0 2256 | '@babel/types': 7.27.0 2257 | 2258 | '@types/babel__traverse@7.20.7': 2259 | dependencies: 2260 | '@babel/types': 7.27.0 2261 | 2262 | '@types/doctrine@0.0.9': {} 2263 | 2264 | '@types/estree@1.0.7': {} 2265 | 2266 | '@types/graceful-fs@4.1.9': 2267 | dependencies: 2268 | '@types/node': 22.13.14 2269 | 2270 | '@types/istanbul-lib-coverage@2.0.6': {} 2271 | 2272 | '@types/istanbul-lib-report@3.0.3': 2273 | dependencies: 2274 | '@types/istanbul-lib-coverage': 2.0.6 2275 | 2276 | '@types/istanbul-reports@3.0.4': 2277 | dependencies: 2278 | '@types/istanbul-lib-report': 3.0.3 2279 | 2280 | '@types/json-schema@7.0.15': {} 2281 | 2282 | '@types/node@22.13.14': 2283 | dependencies: 2284 | undici-types: 6.20.0 2285 | 2286 | '@types/stack-utils@2.0.3': {} 2287 | 2288 | '@types/unist@3.0.3': {} 2289 | 2290 | '@types/yargs-parser@21.0.3': {} 2291 | 2292 | '@types/yargs@17.0.33': 2293 | dependencies: 2294 | '@types/yargs-parser': 21.0.3 2295 | 2296 | '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)': 2297 | dependencies: 2298 | '@eslint-community/regexpp': 4.12.1 2299 | '@typescript-eslint/parser': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2300 | '@typescript-eslint/scope-manager': 8.28.0 2301 | '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2302 | '@typescript-eslint/utils': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2303 | '@typescript-eslint/visitor-keys': 8.28.0 2304 | eslint: 9.23.0 2305 | graphemer: 1.4.0 2306 | ignore: 5.3.2 2307 | natural-compare: 1.4.0 2308 | ts-api-utils: 2.1.0(typescript@5.8.2) 2309 | typescript: 5.8.2 2310 | transitivePeerDependencies: 2311 | - supports-color 2312 | 2313 | '@typescript-eslint/parser@8.28.0(eslint@9.23.0)(typescript@5.8.2)': 2314 | dependencies: 2315 | '@typescript-eslint/scope-manager': 8.28.0 2316 | '@typescript-eslint/types': 8.28.0 2317 | '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) 2318 | '@typescript-eslint/visitor-keys': 8.28.0 2319 | debug: 4.4.0 2320 | eslint: 9.23.0 2321 | typescript: 5.8.2 2322 | transitivePeerDependencies: 2323 | - supports-color 2324 | 2325 | '@typescript-eslint/scope-manager@8.28.0': 2326 | dependencies: 2327 | '@typescript-eslint/types': 8.28.0 2328 | '@typescript-eslint/visitor-keys': 8.28.0 2329 | 2330 | '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0)(typescript@5.8.2)': 2331 | dependencies: 2332 | '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) 2333 | '@typescript-eslint/utils': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2334 | debug: 4.4.0 2335 | eslint: 9.23.0 2336 | ts-api-utils: 2.1.0(typescript@5.8.2) 2337 | typescript: 5.8.2 2338 | transitivePeerDependencies: 2339 | - supports-color 2340 | 2341 | '@typescript-eslint/types@8.28.0': {} 2342 | 2343 | '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': 2344 | dependencies: 2345 | '@typescript-eslint/types': 8.28.0 2346 | '@typescript-eslint/visitor-keys': 8.28.0 2347 | debug: 4.4.0 2348 | fast-glob: 3.3.3 2349 | is-glob: 4.0.3 2350 | minimatch: 9.0.5 2351 | semver: 7.7.1 2352 | ts-api-utils: 2.1.0(typescript@5.8.2) 2353 | typescript: 5.8.2 2354 | transitivePeerDependencies: 2355 | - supports-color 2356 | 2357 | '@typescript-eslint/utils@8.28.0(eslint@9.23.0)(typescript@5.8.2)': 2358 | dependencies: 2359 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0) 2360 | '@typescript-eslint/scope-manager': 8.28.0 2361 | '@typescript-eslint/types': 8.28.0 2362 | '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) 2363 | eslint: 9.23.0 2364 | typescript: 5.8.2 2365 | transitivePeerDependencies: 2366 | - supports-color 2367 | 2368 | '@typescript-eslint/visitor-keys@8.28.0': 2369 | dependencies: 2370 | '@typescript-eslint/types': 8.28.0 2371 | eslint-visitor-keys: 4.2.0 2372 | 2373 | '@unrs/resolver-binding-darwin-arm64@1.3.3': 2374 | optional: true 2375 | 2376 | '@unrs/resolver-binding-darwin-x64@1.3.3': 2377 | optional: true 2378 | 2379 | '@unrs/resolver-binding-freebsd-x64@1.3.3': 2380 | optional: true 2381 | 2382 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.3': 2383 | optional: true 2384 | 2385 | '@unrs/resolver-binding-linux-arm-musleabihf@1.3.3': 2386 | optional: true 2387 | 2388 | '@unrs/resolver-binding-linux-arm64-gnu@1.3.3': 2389 | optional: true 2390 | 2391 | '@unrs/resolver-binding-linux-arm64-musl@1.3.3': 2392 | optional: true 2393 | 2394 | '@unrs/resolver-binding-linux-ppc64-gnu@1.3.3': 2395 | optional: true 2396 | 2397 | '@unrs/resolver-binding-linux-s390x-gnu@1.3.3': 2398 | optional: true 2399 | 2400 | '@unrs/resolver-binding-linux-x64-gnu@1.3.3': 2401 | optional: true 2402 | 2403 | '@unrs/resolver-binding-linux-x64-musl@1.3.3': 2404 | optional: true 2405 | 2406 | '@unrs/resolver-binding-wasm32-wasi@1.3.3': 2407 | dependencies: 2408 | '@napi-rs/wasm-runtime': 0.2.7 2409 | optional: true 2410 | 2411 | '@unrs/resolver-binding-win32-arm64-msvc@1.3.3': 2412 | optional: true 2413 | 2414 | '@unrs/resolver-binding-win32-ia32-msvc@1.3.3': 2415 | optional: true 2416 | 2417 | '@unrs/resolver-binding-win32-x64-msvc@1.3.3': 2418 | optional: true 2419 | 2420 | acorn-jsx@5.3.2(acorn@8.14.1): 2421 | dependencies: 2422 | acorn: 8.14.1 2423 | 2424 | acorn@8.14.1: {} 2425 | 2426 | ajv@6.12.6: 2427 | dependencies: 2428 | fast-deep-equal: 3.1.3 2429 | fast-json-stable-stringify: 2.1.0 2430 | json-schema-traverse: 0.4.1 2431 | uri-js: 4.4.1 2432 | 2433 | ansi-escapes@4.3.2: 2434 | dependencies: 2435 | type-fest: 0.21.3 2436 | 2437 | ansi-regex@5.0.1: {} 2438 | 2439 | ansi-styles@4.3.0: 2440 | dependencies: 2441 | color-convert: 2.0.1 2442 | 2443 | ansi-styles@5.2.0: {} 2444 | 2445 | anymatch@3.1.3: 2446 | dependencies: 2447 | normalize-path: 3.0.0 2448 | picomatch: 2.3.1 2449 | 2450 | argparse@1.0.10: 2451 | dependencies: 2452 | sprintf-js: 1.0.3 2453 | 2454 | argparse@2.0.1: {} 2455 | 2456 | babel-jest@29.7.0(@babel/core@7.26.10): 2457 | dependencies: 2458 | '@babel/core': 7.26.10 2459 | '@jest/transform': 29.7.0 2460 | '@types/babel__core': 7.20.5 2461 | babel-plugin-istanbul: 6.1.1 2462 | babel-preset-jest: 29.6.3(@babel/core@7.26.10) 2463 | chalk: 4.1.2 2464 | graceful-fs: 4.2.11 2465 | slash: 3.0.0 2466 | transitivePeerDependencies: 2467 | - supports-color 2468 | 2469 | babel-plugin-istanbul@6.1.1: 2470 | dependencies: 2471 | '@babel/helper-plugin-utils': 7.26.5 2472 | '@istanbuljs/load-nyc-config': 1.1.0 2473 | '@istanbuljs/schema': 0.1.3 2474 | istanbul-lib-instrument: 5.2.1 2475 | test-exclude: 6.0.0 2476 | transitivePeerDependencies: 2477 | - supports-color 2478 | 2479 | babel-plugin-jest-hoist@29.6.3: 2480 | dependencies: 2481 | '@babel/template': 7.27.0 2482 | '@babel/types': 7.27.0 2483 | '@types/babel__core': 7.20.5 2484 | '@types/babel__traverse': 7.20.7 2485 | 2486 | babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): 2487 | dependencies: 2488 | '@babel/core': 7.26.10 2489 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) 2490 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) 2491 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) 2492 | '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) 2493 | '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) 2494 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) 2495 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) 2496 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) 2497 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) 2498 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) 2499 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) 2500 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) 2501 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) 2502 | '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) 2503 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) 2504 | 2505 | babel-preset-jest@29.6.3(@babel/core@7.26.10): 2506 | dependencies: 2507 | '@babel/core': 7.26.10 2508 | babel-plugin-jest-hoist: 29.6.3 2509 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) 2510 | 2511 | balanced-match@1.0.2: {} 2512 | 2513 | binary-extensions@2.3.0: {} 2514 | 2515 | brace-expansion@1.1.11: 2516 | dependencies: 2517 | balanced-match: 1.0.2 2518 | concat-map: 0.0.1 2519 | 2520 | brace-expansion@2.0.1: 2521 | dependencies: 2522 | balanced-match: 1.0.2 2523 | 2524 | braces@3.0.3: 2525 | dependencies: 2526 | fill-range: 7.1.1 2527 | 2528 | browserslist@4.24.4: 2529 | dependencies: 2530 | caniuse-lite: 1.0.30001707 2531 | electron-to-chromium: 1.5.128 2532 | node-releases: 2.0.19 2533 | update-browserslist-db: 1.1.3(browserslist@4.24.4) 2534 | 2535 | bser@2.1.1: 2536 | dependencies: 2537 | node-int64: 0.4.0 2538 | 2539 | buffer-from@1.1.2: {} 2540 | 2541 | callsites@3.1.0: {} 2542 | 2543 | camelcase@5.3.1: {} 2544 | 2545 | camelcase@6.3.0: {} 2546 | 2547 | caniuse-lite@1.0.30001707: {} 2548 | 2549 | chalk@4.1.2: 2550 | dependencies: 2551 | ansi-styles: 4.3.0 2552 | supports-color: 7.2.0 2553 | 2554 | char-regex@1.0.2: {} 2555 | 2556 | chokidar@3.6.0: 2557 | dependencies: 2558 | anymatch: 3.1.3 2559 | braces: 3.0.3 2560 | glob-parent: 5.1.2 2561 | is-binary-path: 2.1.0 2562 | is-glob: 4.0.3 2563 | normalize-path: 3.0.0 2564 | readdirp: 3.6.0 2565 | optionalDependencies: 2566 | fsevents: 2.3.3 2567 | 2568 | ci-info@3.9.0: {} 2569 | 2570 | cjs-module-lexer@1.4.3: {} 2571 | 2572 | clean-publish@5.1.0: 2573 | dependencies: 2574 | cross-spawn: 7.0.6 2575 | fast-glob: 3.3.3 2576 | lilconfig: 3.1.3 2577 | micromatch: 4.0.8 2578 | 2579 | cliui@8.0.1: 2580 | dependencies: 2581 | string-width: 4.2.3 2582 | strip-ansi: 6.0.1 2583 | wrap-ansi: 7.0.0 2584 | 2585 | co@4.6.0: {} 2586 | 2587 | collect-v8-coverage@1.0.2: {} 2588 | 2589 | color-convert@2.0.1: 2590 | dependencies: 2591 | color-name: 1.1.4 2592 | 2593 | color-name@1.1.4: {} 2594 | 2595 | concat-map@0.0.1: {} 2596 | 2597 | convert-source-map@2.0.0: {} 2598 | 2599 | create-jest@29.7.0(@types/node@22.13.14): 2600 | dependencies: 2601 | '@jest/types': 29.6.3 2602 | chalk: 4.1.2 2603 | exit: 0.1.2 2604 | graceful-fs: 4.2.11 2605 | jest-config: 29.7.0(@types/node@22.13.14) 2606 | jest-util: 29.7.0 2607 | prompts: 2.4.2 2608 | transitivePeerDependencies: 2609 | - '@types/node' 2610 | - babel-plugin-macros 2611 | - supports-color 2612 | - ts-node 2613 | 2614 | cross-spawn@7.0.6: 2615 | dependencies: 2616 | path-key: 3.1.1 2617 | shebang-command: 2.0.0 2618 | which: 2.0.2 2619 | 2620 | debug@3.2.7: 2621 | dependencies: 2622 | ms: 2.1.3 2623 | 2624 | debug@4.4.0: 2625 | dependencies: 2626 | ms: 2.1.3 2627 | 2628 | dedent@1.5.3: {} 2629 | 2630 | deep-is@0.1.4: {} 2631 | 2632 | deepmerge@4.3.1: {} 2633 | 2634 | detect-newline@3.1.0: {} 2635 | 2636 | diff-sequences@29.6.3: {} 2637 | 2638 | doctrine@3.0.0: 2639 | dependencies: 2640 | esutils: 2.0.3 2641 | 2642 | electron-to-chromium@1.5.128: {} 2643 | 2644 | emittery@0.13.1: {} 2645 | 2646 | emoji-regex@8.0.0: {} 2647 | 2648 | enhanced-resolve@5.18.1: 2649 | dependencies: 2650 | graceful-fs: 4.2.11 2651 | tapable: 2.2.1 2652 | 2653 | error-ex@1.3.2: 2654 | dependencies: 2655 | is-arrayish: 0.2.1 2656 | 2657 | escalade@3.2.0: {} 2658 | 2659 | escape-string-regexp@2.0.0: {} 2660 | 2661 | escape-string-regexp@4.0.0: {} 2662 | 2663 | eslint-compat-utils@0.5.1(eslint@9.23.0): 2664 | dependencies: 2665 | eslint: 9.23.0 2666 | semver: 7.7.1 2667 | 2668 | eslint-import-resolver-node@0.3.9: 2669 | dependencies: 2670 | debug: 3.2.7 2671 | is-core-module: 2.16.1 2672 | resolve: 1.22.10 2673 | transitivePeerDependencies: 2674 | - supports-color 2675 | 2676 | eslint-plugin-es-x@7.8.0(eslint@9.23.0): 2677 | dependencies: 2678 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0) 2679 | '@eslint-community/regexpp': 4.12.1 2680 | eslint: 9.23.0 2681 | eslint-compat-utils: 0.5.1(eslint@9.23.0) 2682 | 2683 | eslint-plugin-import-x@4.9.4(eslint@9.23.0)(typescript@5.8.2): 2684 | dependencies: 2685 | '@types/doctrine': 0.0.9 2686 | '@typescript-eslint/utils': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2687 | debug: 4.4.0 2688 | doctrine: 3.0.0 2689 | eslint: 9.23.0 2690 | eslint-import-resolver-node: 0.3.9 2691 | get-tsconfig: 4.10.0 2692 | is-glob: 4.0.3 2693 | minimatch: 10.0.1 2694 | semver: 7.7.1 2695 | stable-hash: 0.0.5 2696 | tslib: 2.8.1 2697 | unrs-resolver: 1.3.3 2698 | transitivePeerDependencies: 2699 | - supports-color 2700 | - typescript 2701 | 2702 | eslint-plugin-n@17.17.0(eslint@9.23.0): 2703 | dependencies: 2704 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0) 2705 | enhanced-resolve: 5.18.1 2706 | eslint: 9.23.0 2707 | eslint-plugin-es-x: 7.8.0(eslint@9.23.0) 2708 | get-tsconfig: 4.10.0 2709 | globals: 15.15.0 2710 | ignore: 5.3.2 2711 | minimatch: 9.0.5 2712 | semver: 7.7.1 2713 | 2714 | eslint-plugin-perfectionist@4.10.1(eslint@9.23.0)(typescript@5.8.2): 2715 | dependencies: 2716 | '@typescript-eslint/types': 8.28.0 2717 | '@typescript-eslint/utils': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 2718 | eslint: 9.23.0 2719 | natural-orderby: 5.0.0 2720 | transitivePeerDependencies: 2721 | - supports-color 2722 | - typescript 2723 | 2724 | eslint-plugin-prefer-let@4.0.0: 2725 | dependencies: 2726 | requireindex: 1.2.0 2727 | 2728 | eslint-plugin-promise@7.2.1(eslint@9.23.0): 2729 | dependencies: 2730 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0) 2731 | eslint: 9.23.0 2732 | 2733 | eslint-scope@8.3.0: 2734 | dependencies: 2735 | esrecurse: 4.3.0 2736 | estraverse: 5.3.0 2737 | 2738 | eslint-visitor-keys@3.4.3: {} 2739 | 2740 | eslint-visitor-keys@4.2.0: {} 2741 | 2742 | eslint@9.23.0: 2743 | dependencies: 2744 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0) 2745 | '@eslint-community/regexpp': 4.12.1 2746 | '@eslint/config-array': 0.19.2 2747 | '@eslint/config-helpers': 0.2.0 2748 | '@eslint/core': 0.12.0 2749 | '@eslint/eslintrc': 3.3.1 2750 | '@eslint/js': 9.23.0 2751 | '@eslint/plugin-kit': 0.2.7 2752 | '@humanfs/node': 0.16.6 2753 | '@humanwhocodes/module-importer': 1.0.1 2754 | '@humanwhocodes/retry': 0.4.2 2755 | '@types/estree': 1.0.7 2756 | '@types/json-schema': 7.0.15 2757 | ajv: 6.12.6 2758 | chalk: 4.1.2 2759 | cross-spawn: 7.0.6 2760 | debug: 4.4.0 2761 | escape-string-regexp: 4.0.0 2762 | eslint-scope: 8.3.0 2763 | eslint-visitor-keys: 4.2.0 2764 | espree: 10.3.0 2765 | esquery: 1.6.0 2766 | esutils: 2.0.3 2767 | fast-deep-equal: 3.1.3 2768 | file-entry-cache: 8.0.0 2769 | find-up: 5.0.0 2770 | glob-parent: 6.0.2 2771 | ignore: 5.3.2 2772 | imurmurhash: 0.1.4 2773 | is-glob: 4.0.3 2774 | json-stable-stringify-without-jsonify: 1.0.1 2775 | lodash.merge: 4.6.2 2776 | minimatch: 3.1.2 2777 | natural-compare: 1.4.0 2778 | optionator: 0.9.4 2779 | transitivePeerDependencies: 2780 | - supports-color 2781 | 2782 | espree@10.3.0: 2783 | dependencies: 2784 | acorn: 8.14.1 2785 | acorn-jsx: 5.3.2(acorn@8.14.1) 2786 | eslint-visitor-keys: 4.2.0 2787 | 2788 | esprima@4.0.1: {} 2789 | 2790 | esquery@1.6.0: 2791 | dependencies: 2792 | estraverse: 5.3.0 2793 | 2794 | esrecurse@4.3.0: 2795 | dependencies: 2796 | estraverse: 5.3.0 2797 | 2798 | estraverse@5.3.0: {} 2799 | 2800 | esutils@2.0.3: {} 2801 | 2802 | execa@5.1.1: 2803 | dependencies: 2804 | cross-spawn: 7.0.6 2805 | get-stream: 6.0.1 2806 | human-signals: 2.1.0 2807 | is-stream: 2.0.1 2808 | merge-stream: 2.0.0 2809 | npm-run-path: 4.0.1 2810 | onetime: 5.1.2 2811 | signal-exit: 3.0.7 2812 | strip-final-newline: 2.0.0 2813 | 2814 | exit@0.1.2: {} 2815 | 2816 | expect@29.7.0: 2817 | dependencies: 2818 | '@jest/expect-utils': 29.7.0 2819 | jest-get-type: 29.6.3 2820 | jest-matcher-utils: 29.7.0 2821 | jest-message-util: 29.7.0 2822 | jest-util: 29.7.0 2823 | 2824 | fast-deep-equal@3.1.3: {} 2825 | 2826 | fast-glob@3.3.3: 2827 | dependencies: 2828 | '@nodelib/fs.stat': 2.0.5 2829 | '@nodelib/fs.walk': 1.2.8 2830 | glob-parent: 5.1.2 2831 | merge2: 1.4.1 2832 | micromatch: 4.0.8 2833 | 2834 | fast-json-stable-stringify@2.1.0: {} 2835 | 2836 | fast-levenshtein@2.0.6: {} 2837 | 2838 | fastq@1.19.1: 2839 | dependencies: 2840 | reusify: 1.1.0 2841 | 2842 | fb-watchman@2.0.2: 2843 | dependencies: 2844 | bser: 2.1.1 2845 | 2846 | file-entry-cache@8.0.0: 2847 | dependencies: 2848 | flat-cache: 4.0.1 2849 | 2850 | fill-range@7.1.1: 2851 | dependencies: 2852 | to-regex-range: 5.0.1 2853 | 2854 | find-up@4.1.0: 2855 | dependencies: 2856 | locate-path: 5.0.0 2857 | path-exists: 4.0.0 2858 | 2859 | find-up@5.0.0: 2860 | dependencies: 2861 | locate-path: 6.0.0 2862 | path-exists: 4.0.0 2863 | 2864 | flat-cache@4.0.1: 2865 | dependencies: 2866 | flatted: 3.3.3 2867 | keyv: 4.5.4 2868 | 2869 | flatted@3.3.3: {} 2870 | 2871 | fs.realpath@1.0.0: {} 2872 | 2873 | fsevents@2.3.3: 2874 | optional: true 2875 | 2876 | function-bind@1.1.2: {} 2877 | 2878 | gensync@1.0.0-beta.2: {} 2879 | 2880 | get-caller-file@2.0.5: {} 2881 | 2882 | get-package-type@0.1.0: {} 2883 | 2884 | get-stream@6.0.1: {} 2885 | 2886 | get-tsconfig@4.10.0: 2887 | dependencies: 2888 | resolve-pkg-maps: 1.0.0 2889 | 2890 | glob-parent@5.1.2: 2891 | dependencies: 2892 | is-glob: 4.0.3 2893 | 2894 | glob-parent@6.0.2: 2895 | dependencies: 2896 | is-glob: 4.0.3 2897 | 2898 | glob@7.2.3: 2899 | dependencies: 2900 | fs.realpath: 1.0.0 2901 | inflight: 1.0.6 2902 | inherits: 2.0.4 2903 | minimatch: 3.1.2 2904 | once: 1.4.0 2905 | path-is-absolute: 1.0.1 2906 | 2907 | globals@11.12.0: {} 2908 | 2909 | globals@14.0.0: {} 2910 | 2911 | globals@15.15.0: {} 2912 | 2913 | globals@16.0.0: {} 2914 | 2915 | graceful-fs@4.2.11: {} 2916 | 2917 | graphemer@1.4.0: {} 2918 | 2919 | has-flag@4.0.0: {} 2920 | 2921 | hasown@2.0.2: 2922 | dependencies: 2923 | function-bind: 1.1.2 2924 | 2925 | html-escaper@2.0.2: {} 2926 | 2927 | human-signals@2.1.0: {} 2928 | 2929 | ignore@5.3.2: {} 2930 | 2931 | import-fresh@3.3.1: 2932 | dependencies: 2933 | parent-module: 1.0.1 2934 | resolve-from: 4.0.0 2935 | 2936 | import-local@3.2.0: 2937 | dependencies: 2938 | pkg-dir: 4.2.0 2939 | resolve-cwd: 3.0.0 2940 | 2941 | imurmurhash@0.1.4: {} 2942 | 2943 | inflight@1.0.6: 2944 | dependencies: 2945 | once: 1.4.0 2946 | wrappy: 1.0.2 2947 | 2948 | inherits@2.0.4: {} 2949 | 2950 | is-arrayish@0.2.1: {} 2951 | 2952 | is-binary-path@2.1.0: 2953 | dependencies: 2954 | binary-extensions: 2.3.0 2955 | 2956 | is-core-module@2.16.1: 2957 | dependencies: 2958 | hasown: 2.0.2 2959 | 2960 | is-extglob@2.1.1: {} 2961 | 2962 | is-fullwidth-code-point@3.0.0: {} 2963 | 2964 | is-generator-fn@2.1.0: {} 2965 | 2966 | is-glob@4.0.3: 2967 | dependencies: 2968 | is-extglob: 2.1.1 2969 | 2970 | is-number@7.0.0: {} 2971 | 2972 | is-stream@2.0.1: {} 2973 | 2974 | isexe@2.0.0: {} 2975 | 2976 | istanbul-lib-coverage@3.2.2: {} 2977 | 2978 | istanbul-lib-instrument@5.2.1: 2979 | dependencies: 2980 | '@babel/core': 7.26.10 2981 | '@babel/parser': 7.27.0 2982 | '@istanbuljs/schema': 0.1.3 2983 | istanbul-lib-coverage: 3.2.2 2984 | semver: 6.3.1 2985 | transitivePeerDependencies: 2986 | - supports-color 2987 | 2988 | istanbul-lib-instrument@6.0.3: 2989 | dependencies: 2990 | '@babel/core': 7.26.10 2991 | '@babel/parser': 7.27.0 2992 | '@istanbuljs/schema': 0.1.3 2993 | istanbul-lib-coverage: 3.2.2 2994 | semver: 7.7.1 2995 | transitivePeerDependencies: 2996 | - supports-color 2997 | 2998 | istanbul-lib-report@3.0.1: 2999 | dependencies: 3000 | istanbul-lib-coverage: 3.2.2 3001 | make-dir: 4.0.0 3002 | supports-color: 7.2.0 3003 | 3004 | istanbul-lib-source-maps@4.0.1: 3005 | dependencies: 3006 | debug: 4.4.0 3007 | istanbul-lib-coverage: 3.2.2 3008 | source-map: 0.6.1 3009 | transitivePeerDependencies: 3010 | - supports-color 3011 | 3012 | istanbul-reports@3.1.7: 3013 | dependencies: 3014 | html-escaper: 2.0.2 3015 | istanbul-lib-report: 3.0.1 3016 | 3017 | jest-changed-files@29.7.0: 3018 | dependencies: 3019 | execa: 5.1.1 3020 | jest-util: 29.7.0 3021 | p-limit: 3.1.0 3022 | 3023 | jest-circus@29.7.0: 3024 | dependencies: 3025 | '@jest/environment': 29.7.0 3026 | '@jest/expect': 29.7.0 3027 | '@jest/test-result': 29.7.0 3028 | '@jest/types': 29.6.3 3029 | '@types/node': 22.13.14 3030 | chalk: 4.1.2 3031 | co: 4.6.0 3032 | dedent: 1.5.3 3033 | is-generator-fn: 2.1.0 3034 | jest-each: 29.7.0 3035 | jest-matcher-utils: 29.7.0 3036 | jest-message-util: 29.7.0 3037 | jest-runtime: 29.7.0 3038 | jest-snapshot: 29.7.0 3039 | jest-util: 29.7.0 3040 | p-limit: 3.1.0 3041 | pretty-format: 29.7.0 3042 | pure-rand: 6.1.0 3043 | slash: 3.0.0 3044 | stack-utils: 2.0.6 3045 | transitivePeerDependencies: 3046 | - babel-plugin-macros 3047 | - supports-color 3048 | 3049 | jest-cli@29.7.0(@types/node@22.13.14): 3050 | dependencies: 3051 | '@jest/core': 29.7.0 3052 | '@jest/test-result': 29.7.0 3053 | '@jest/types': 29.6.3 3054 | chalk: 4.1.2 3055 | create-jest: 29.7.0(@types/node@22.13.14) 3056 | exit: 0.1.2 3057 | import-local: 3.2.0 3058 | jest-config: 29.7.0(@types/node@22.13.14) 3059 | jest-util: 29.7.0 3060 | jest-validate: 29.7.0 3061 | yargs: 17.7.2 3062 | transitivePeerDependencies: 3063 | - '@types/node' 3064 | - babel-plugin-macros 3065 | - supports-color 3066 | - ts-node 3067 | 3068 | jest-config@29.7.0(@types/node@22.13.14): 3069 | dependencies: 3070 | '@babel/core': 7.26.10 3071 | '@jest/test-sequencer': 29.7.0 3072 | '@jest/types': 29.6.3 3073 | babel-jest: 29.7.0(@babel/core@7.26.10) 3074 | chalk: 4.1.2 3075 | ci-info: 3.9.0 3076 | deepmerge: 4.3.1 3077 | glob: 7.2.3 3078 | graceful-fs: 4.2.11 3079 | jest-circus: 29.7.0 3080 | jest-environment-node: 29.7.0 3081 | jest-get-type: 29.6.3 3082 | jest-regex-util: 29.6.3 3083 | jest-resolve: 29.7.0 3084 | jest-runner: 29.7.0 3085 | jest-util: 29.7.0 3086 | jest-validate: 29.7.0 3087 | micromatch: 4.0.8 3088 | parse-json: 5.2.0 3089 | pretty-format: 29.7.0 3090 | slash: 3.0.0 3091 | strip-json-comments: 3.1.1 3092 | optionalDependencies: 3093 | '@types/node': 22.13.14 3094 | transitivePeerDependencies: 3095 | - babel-plugin-macros 3096 | - supports-color 3097 | 3098 | jest-diff@29.7.0: 3099 | dependencies: 3100 | chalk: 4.1.2 3101 | diff-sequences: 29.6.3 3102 | jest-get-type: 29.6.3 3103 | pretty-format: 29.7.0 3104 | 3105 | jest-docblock@29.7.0: 3106 | dependencies: 3107 | detect-newline: 3.1.0 3108 | 3109 | jest-each@29.7.0: 3110 | dependencies: 3111 | '@jest/types': 29.6.3 3112 | chalk: 4.1.2 3113 | jest-get-type: 29.6.3 3114 | jest-util: 29.7.0 3115 | pretty-format: 29.7.0 3116 | 3117 | jest-environment-node@29.7.0: 3118 | dependencies: 3119 | '@jest/environment': 29.7.0 3120 | '@jest/fake-timers': 29.7.0 3121 | '@jest/types': 29.6.3 3122 | '@types/node': 22.13.14 3123 | jest-mock: 29.7.0 3124 | jest-util: 29.7.0 3125 | 3126 | jest-get-type@29.6.3: {} 3127 | 3128 | jest-haste-map@29.7.0: 3129 | dependencies: 3130 | '@jest/types': 29.6.3 3131 | '@types/graceful-fs': 4.1.9 3132 | '@types/node': 22.13.14 3133 | anymatch: 3.1.3 3134 | fb-watchman: 2.0.2 3135 | graceful-fs: 4.2.11 3136 | jest-regex-util: 29.6.3 3137 | jest-util: 29.7.0 3138 | jest-worker: 29.7.0 3139 | micromatch: 4.0.8 3140 | walker: 1.0.8 3141 | optionalDependencies: 3142 | fsevents: 2.3.3 3143 | 3144 | jest-leak-detector@29.7.0: 3145 | dependencies: 3146 | jest-get-type: 29.6.3 3147 | pretty-format: 29.7.0 3148 | 3149 | jest-matcher-utils@29.7.0: 3150 | dependencies: 3151 | chalk: 4.1.2 3152 | jest-diff: 29.7.0 3153 | jest-get-type: 29.6.3 3154 | pretty-format: 29.7.0 3155 | 3156 | jest-message-util@29.7.0: 3157 | dependencies: 3158 | '@babel/code-frame': 7.26.2 3159 | '@jest/types': 29.6.3 3160 | '@types/stack-utils': 2.0.3 3161 | chalk: 4.1.2 3162 | graceful-fs: 4.2.11 3163 | micromatch: 4.0.8 3164 | pretty-format: 29.7.0 3165 | slash: 3.0.0 3166 | stack-utils: 2.0.6 3167 | 3168 | jest-mock@29.7.0: 3169 | dependencies: 3170 | '@jest/types': 29.6.3 3171 | '@types/node': 22.13.14 3172 | jest-util: 29.7.0 3173 | 3174 | jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): 3175 | optionalDependencies: 3176 | jest-resolve: 29.7.0 3177 | 3178 | jest-regex-util@29.6.3: {} 3179 | 3180 | jest-resolve-dependencies@29.7.0: 3181 | dependencies: 3182 | jest-regex-util: 29.6.3 3183 | jest-snapshot: 29.7.0 3184 | transitivePeerDependencies: 3185 | - supports-color 3186 | 3187 | jest-resolve@29.7.0: 3188 | dependencies: 3189 | chalk: 4.1.2 3190 | graceful-fs: 4.2.11 3191 | jest-haste-map: 29.7.0 3192 | jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) 3193 | jest-util: 29.7.0 3194 | jest-validate: 29.7.0 3195 | resolve: 1.22.10 3196 | resolve.exports: 2.0.3 3197 | slash: 3.0.0 3198 | 3199 | jest-runner@29.7.0: 3200 | dependencies: 3201 | '@jest/console': 29.7.0 3202 | '@jest/environment': 29.7.0 3203 | '@jest/test-result': 29.7.0 3204 | '@jest/transform': 29.7.0 3205 | '@jest/types': 29.6.3 3206 | '@types/node': 22.13.14 3207 | chalk: 4.1.2 3208 | emittery: 0.13.1 3209 | graceful-fs: 4.2.11 3210 | jest-docblock: 29.7.0 3211 | jest-environment-node: 29.7.0 3212 | jest-haste-map: 29.7.0 3213 | jest-leak-detector: 29.7.0 3214 | jest-message-util: 29.7.0 3215 | jest-resolve: 29.7.0 3216 | jest-runtime: 29.7.0 3217 | jest-util: 29.7.0 3218 | jest-watcher: 29.7.0 3219 | jest-worker: 29.7.0 3220 | p-limit: 3.1.0 3221 | source-map-support: 0.5.13 3222 | transitivePeerDependencies: 3223 | - supports-color 3224 | 3225 | jest-runtime@29.7.0: 3226 | dependencies: 3227 | '@jest/environment': 29.7.0 3228 | '@jest/fake-timers': 29.7.0 3229 | '@jest/globals': 29.7.0 3230 | '@jest/source-map': 29.6.3 3231 | '@jest/test-result': 29.7.0 3232 | '@jest/transform': 29.7.0 3233 | '@jest/types': 29.6.3 3234 | '@types/node': 22.13.14 3235 | chalk: 4.1.2 3236 | cjs-module-lexer: 1.4.3 3237 | collect-v8-coverage: 1.0.2 3238 | glob: 7.2.3 3239 | graceful-fs: 4.2.11 3240 | jest-haste-map: 29.7.0 3241 | jest-message-util: 29.7.0 3242 | jest-mock: 29.7.0 3243 | jest-regex-util: 29.6.3 3244 | jest-resolve: 29.7.0 3245 | jest-snapshot: 29.7.0 3246 | jest-util: 29.7.0 3247 | slash: 3.0.0 3248 | strip-bom: 4.0.0 3249 | transitivePeerDependencies: 3250 | - supports-color 3251 | 3252 | jest-snapshot@29.7.0: 3253 | dependencies: 3254 | '@babel/core': 7.26.10 3255 | '@babel/generator': 7.27.0 3256 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) 3257 | '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) 3258 | '@babel/types': 7.27.0 3259 | '@jest/expect-utils': 29.7.0 3260 | '@jest/transform': 29.7.0 3261 | '@jest/types': 29.6.3 3262 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) 3263 | chalk: 4.1.2 3264 | expect: 29.7.0 3265 | graceful-fs: 4.2.11 3266 | jest-diff: 29.7.0 3267 | jest-get-type: 29.6.3 3268 | jest-matcher-utils: 29.7.0 3269 | jest-message-util: 29.7.0 3270 | jest-util: 29.7.0 3271 | natural-compare: 1.4.0 3272 | pretty-format: 29.7.0 3273 | semver: 7.7.1 3274 | transitivePeerDependencies: 3275 | - supports-color 3276 | 3277 | jest-util@29.7.0: 3278 | dependencies: 3279 | '@jest/types': 29.6.3 3280 | '@types/node': 22.13.14 3281 | chalk: 4.1.2 3282 | ci-info: 3.9.0 3283 | graceful-fs: 4.2.11 3284 | picomatch: 2.3.1 3285 | 3286 | jest-validate@29.7.0: 3287 | dependencies: 3288 | '@jest/types': 29.6.3 3289 | camelcase: 6.3.0 3290 | chalk: 4.1.2 3291 | jest-get-type: 29.6.3 3292 | leven: 3.1.0 3293 | pretty-format: 29.7.0 3294 | 3295 | jest-watcher@29.7.0: 3296 | dependencies: 3297 | '@jest/test-result': 29.7.0 3298 | '@jest/types': 29.6.3 3299 | '@types/node': 22.13.14 3300 | ansi-escapes: 4.3.2 3301 | chalk: 4.1.2 3302 | emittery: 0.13.1 3303 | jest-util: 29.7.0 3304 | string-length: 4.0.2 3305 | 3306 | jest-worker@29.7.0: 3307 | dependencies: 3308 | '@types/node': 22.13.14 3309 | jest-util: 29.7.0 3310 | merge-stream: 2.0.0 3311 | supports-color: 8.1.1 3312 | 3313 | jest@29.7.0(@types/node@22.13.14): 3314 | dependencies: 3315 | '@jest/core': 29.7.0 3316 | '@jest/types': 29.6.3 3317 | import-local: 3.2.0 3318 | jest-cli: 29.7.0(@types/node@22.13.14) 3319 | transitivePeerDependencies: 3320 | - '@types/node' 3321 | - babel-plugin-macros 3322 | - supports-color 3323 | - ts-node 3324 | 3325 | js-tokens@4.0.0: {} 3326 | 3327 | js-yaml@3.14.1: 3328 | dependencies: 3329 | argparse: 1.0.10 3330 | esprima: 4.0.1 3331 | 3332 | js-yaml@4.1.0: 3333 | dependencies: 3334 | argparse: 2.0.1 3335 | 3336 | jsesc@3.1.0: {} 3337 | 3338 | json-buffer@3.0.1: {} 3339 | 3340 | json-parse-even-better-errors@2.3.1: {} 3341 | 3342 | json-schema-traverse@0.4.1: {} 3343 | 3344 | json-stable-stringify-without-jsonify@1.0.1: {} 3345 | 3346 | json5@2.2.3: {} 3347 | 3348 | keyv@4.5.4: 3349 | dependencies: 3350 | json-buffer: 3.0.1 3351 | 3352 | kleur@3.0.3: {} 3353 | 3354 | leven@3.1.0: {} 3355 | 3356 | levn@0.4.1: 3357 | dependencies: 3358 | prelude-ls: 1.2.1 3359 | type-check: 0.4.0 3360 | 3361 | lilconfig@3.1.3: {} 3362 | 3363 | lines-and-columns@1.2.4: {} 3364 | 3365 | locate-path@5.0.0: 3366 | dependencies: 3367 | p-locate: 4.1.0 3368 | 3369 | locate-path@6.0.0: 3370 | dependencies: 3371 | p-locate: 5.0.0 3372 | 3373 | lodash.merge@4.6.2: {} 3374 | 3375 | lru-cache@5.1.1: 3376 | dependencies: 3377 | yallist: 3.1.1 3378 | 3379 | make-dir@4.0.0: 3380 | dependencies: 3381 | semver: 7.7.1 3382 | 3383 | makeerror@1.0.12: 3384 | dependencies: 3385 | tmpl: 1.0.5 3386 | 3387 | merge-stream@2.0.0: {} 3388 | 3389 | merge2@1.4.1: {} 3390 | 3391 | micromatch@4.0.8: 3392 | dependencies: 3393 | braces: 3.0.3 3394 | picomatch: 2.3.1 3395 | 3396 | mimic-fn@2.1.0: {} 3397 | 3398 | minimatch@10.0.1: 3399 | dependencies: 3400 | brace-expansion: 2.0.1 3401 | 3402 | minimatch@3.1.2: 3403 | dependencies: 3404 | brace-expansion: 1.1.11 3405 | 3406 | minimatch@9.0.5: 3407 | dependencies: 3408 | brace-expansion: 2.0.1 3409 | 3410 | ms@2.1.3: {} 3411 | 3412 | nanospinner@1.2.2: 3413 | dependencies: 3414 | picocolors: 1.1.1 3415 | 3416 | natural-compare@1.4.0: {} 3417 | 3418 | natural-orderby@5.0.0: {} 3419 | 3420 | node-int64@0.4.0: {} 3421 | 3422 | node-releases@2.0.19: {} 3423 | 3424 | normalize-path@3.0.0: {} 3425 | 3426 | npm-run-path@4.0.1: 3427 | dependencies: 3428 | path-key: 3.1.1 3429 | 3430 | once@1.4.0: 3431 | dependencies: 3432 | wrappy: 1.0.2 3433 | 3434 | onetime@5.1.2: 3435 | dependencies: 3436 | mimic-fn: 2.1.0 3437 | 3438 | optionator@0.9.4: 3439 | dependencies: 3440 | deep-is: 0.1.4 3441 | fast-levenshtein: 2.0.6 3442 | levn: 0.4.1 3443 | prelude-ls: 1.2.1 3444 | type-check: 0.4.0 3445 | word-wrap: 1.2.5 3446 | 3447 | p-limit@2.3.0: 3448 | dependencies: 3449 | p-try: 2.2.0 3450 | 3451 | p-limit@3.1.0: 3452 | dependencies: 3453 | yocto-queue: 0.1.0 3454 | 3455 | p-locate@4.1.0: 3456 | dependencies: 3457 | p-limit: 2.3.0 3458 | 3459 | p-locate@5.0.0: 3460 | dependencies: 3461 | p-limit: 3.1.0 3462 | 3463 | p-try@2.2.0: {} 3464 | 3465 | parent-module@1.0.1: 3466 | dependencies: 3467 | callsites: 3.1.0 3468 | 3469 | parse-gitignore@1.0.1: {} 3470 | 3471 | parse-json@5.2.0: 3472 | dependencies: 3473 | '@babel/code-frame': 7.26.2 3474 | error-ex: 1.3.2 3475 | json-parse-even-better-errors: 2.3.1 3476 | lines-and-columns: 1.2.4 3477 | 3478 | path-exists@4.0.0: {} 3479 | 3480 | path-is-absolute@1.0.1: {} 3481 | 3482 | path-key@3.1.1: {} 3483 | 3484 | path-parse@1.0.7: {} 3485 | 3486 | picocolors@1.1.1: {} 3487 | 3488 | picomatch@2.3.1: {} 3489 | 3490 | pirates@4.0.7: {} 3491 | 3492 | pkg-dir@4.2.0: 3493 | dependencies: 3494 | find-up: 4.1.0 3495 | 3496 | prelude-ls@1.2.1: {} 3497 | 3498 | pretty-format@29.7.0: 3499 | dependencies: 3500 | '@jest/schemas': 29.6.3 3501 | ansi-styles: 5.2.0 3502 | react-is: 18.3.1 3503 | 3504 | print-snapshots@0.4.2: 3505 | dependencies: 3506 | chokidar: 3.6.0 3507 | fast-glob: 3.3.3 3508 | parse-gitignore: 1.0.1 3509 | picocolors: 1.1.1 3510 | 3511 | prompts@2.4.2: 3512 | dependencies: 3513 | kleur: 3.0.3 3514 | sisteransi: 1.0.5 3515 | 3516 | punycode@2.3.1: {} 3517 | 3518 | pure-rand@6.1.0: {} 3519 | 3520 | queue-microtask@1.2.3: {} 3521 | 3522 | react-is@18.3.1: {} 3523 | 3524 | readdirp@3.6.0: 3525 | dependencies: 3526 | picomatch: 2.3.1 3527 | 3528 | require-directory@2.1.1: {} 3529 | 3530 | requireindex@1.2.0: {} 3531 | 3532 | resolve-cwd@3.0.0: 3533 | dependencies: 3534 | resolve-from: 5.0.0 3535 | 3536 | resolve-from@4.0.0: {} 3537 | 3538 | resolve-from@5.0.0: {} 3539 | 3540 | resolve-pkg-maps@1.0.0: {} 3541 | 3542 | resolve.exports@2.0.3: {} 3543 | 3544 | resolve@1.22.10: 3545 | dependencies: 3546 | is-core-module: 2.16.1 3547 | path-parse: 1.0.7 3548 | supports-preserve-symlinks-flag: 1.0.0 3549 | 3550 | reusify@1.1.0: {} 3551 | 3552 | run-parallel@1.2.0: 3553 | dependencies: 3554 | queue-microtask: 1.2.3 3555 | 3556 | semver@6.3.1: {} 3557 | 3558 | semver@7.7.1: {} 3559 | 3560 | shebang-command@2.0.0: 3561 | dependencies: 3562 | shebang-regex: 3.0.0 3563 | 3564 | shebang-regex@3.0.0: {} 3565 | 3566 | signal-exit@3.0.7: {} 3567 | 3568 | sisteransi@1.0.5: {} 3569 | 3570 | slash@3.0.0: {} 3571 | 3572 | source-map-support@0.5.13: 3573 | dependencies: 3574 | buffer-from: 1.1.2 3575 | source-map: 0.6.1 3576 | 3577 | source-map@0.6.1: {} 3578 | 3579 | sprintf-js@1.0.3: {} 3580 | 3581 | stable-hash@0.0.5: {} 3582 | 3583 | stack-utils@2.0.6: 3584 | dependencies: 3585 | escape-string-regexp: 2.0.0 3586 | 3587 | string-length@4.0.2: 3588 | dependencies: 3589 | char-regex: 1.0.2 3590 | strip-ansi: 6.0.1 3591 | 3592 | string-width@4.2.3: 3593 | dependencies: 3594 | emoji-regex: 8.0.0 3595 | is-fullwidth-code-point: 3.0.0 3596 | strip-ansi: 6.0.1 3597 | 3598 | strip-ansi@6.0.1: 3599 | dependencies: 3600 | ansi-regex: 5.0.1 3601 | 3602 | strip-bom@4.0.0: {} 3603 | 3604 | strip-final-newline@2.0.0: {} 3605 | 3606 | strip-json-comments@3.1.1: {} 3607 | 3608 | supports-color@7.2.0: 3609 | dependencies: 3610 | has-flag: 4.0.0 3611 | 3612 | supports-color@8.1.1: 3613 | dependencies: 3614 | has-flag: 4.0.0 3615 | 3616 | supports-preserve-symlinks-flag@1.0.0: {} 3617 | 3618 | tapable@2.2.1: {} 3619 | 3620 | test-exclude@6.0.0: 3621 | dependencies: 3622 | '@istanbuljs/schema': 0.1.3 3623 | glob: 7.2.3 3624 | minimatch: 3.1.2 3625 | 3626 | tmpl@1.0.5: {} 3627 | 3628 | to-regex-range@5.0.1: 3629 | dependencies: 3630 | is-number: 7.0.0 3631 | 3632 | ts-api-utils@2.1.0(typescript@5.8.2): 3633 | dependencies: 3634 | typescript: 5.8.2 3635 | 3636 | tslib@2.8.1: {} 3637 | 3638 | type-check@0.4.0: 3639 | dependencies: 3640 | prelude-ls: 1.2.1 3641 | 3642 | type-detect@4.0.8: {} 3643 | 3644 | type-fest@0.21.3: {} 3645 | 3646 | typescript-eslint@8.28.0(eslint@9.23.0)(typescript@5.8.2): 3647 | dependencies: 3648 | '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2) 3649 | '@typescript-eslint/parser': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 3650 | '@typescript-eslint/utils': 8.28.0(eslint@9.23.0)(typescript@5.8.2) 3651 | eslint: 9.23.0 3652 | typescript: 5.8.2 3653 | transitivePeerDependencies: 3654 | - supports-color 3655 | 3656 | typescript@5.8.2: {} 3657 | 3658 | undici-types@6.20.0: {} 3659 | 3660 | unist-util-stringify-position@4.0.0: 3661 | dependencies: 3662 | '@types/unist': 3.0.3 3663 | 3664 | unrs-resolver@1.3.3: 3665 | optionalDependencies: 3666 | '@unrs/resolver-binding-darwin-arm64': 1.3.3 3667 | '@unrs/resolver-binding-darwin-x64': 1.3.3 3668 | '@unrs/resolver-binding-freebsd-x64': 1.3.3 3669 | '@unrs/resolver-binding-linux-arm-gnueabihf': 1.3.3 3670 | '@unrs/resolver-binding-linux-arm-musleabihf': 1.3.3 3671 | '@unrs/resolver-binding-linux-arm64-gnu': 1.3.3 3672 | '@unrs/resolver-binding-linux-arm64-musl': 1.3.3 3673 | '@unrs/resolver-binding-linux-ppc64-gnu': 1.3.3 3674 | '@unrs/resolver-binding-linux-s390x-gnu': 1.3.3 3675 | '@unrs/resolver-binding-linux-x64-gnu': 1.3.3 3676 | '@unrs/resolver-binding-linux-x64-musl': 1.3.3 3677 | '@unrs/resolver-binding-wasm32-wasi': 1.3.3 3678 | '@unrs/resolver-binding-win32-arm64-msvc': 1.3.3 3679 | '@unrs/resolver-binding-win32-ia32-msvc': 1.3.3 3680 | '@unrs/resolver-binding-win32-x64-msvc': 1.3.3 3681 | 3682 | update-browserslist-db@1.1.3(browserslist@4.24.4): 3683 | dependencies: 3684 | browserslist: 4.24.4 3685 | escalade: 3.2.0 3686 | picocolors: 1.1.1 3687 | 3688 | uri-js@4.4.1: 3689 | dependencies: 3690 | punycode: 2.3.1 3691 | 3692 | v8-to-istanbul@9.3.0: 3693 | dependencies: 3694 | '@jridgewell/trace-mapping': 0.3.25 3695 | '@types/istanbul-lib-coverage': 2.0.6 3696 | convert-source-map: 2.0.0 3697 | 3698 | vfile-location@5.0.3: 3699 | dependencies: 3700 | '@types/unist': 3.0.3 3701 | vfile: 6.0.3 3702 | 3703 | vfile-message@4.0.2: 3704 | dependencies: 3705 | '@types/unist': 3.0.3 3706 | unist-util-stringify-position: 4.0.0 3707 | 3708 | vfile@6.0.3: 3709 | dependencies: 3710 | '@types/unist': 3.0.3 3711 | vfile-message: 4.0.2 3712 | 3713 | walker@1.0.8: 3714 | dependencies: 3715 | makeerror: 1.0.12 3716 | 3717 | which@2.0.2: 3718 | dependencies: 3719 | isexe: 2.0.0 3720 | 3721 | word-wrap@1.2.5: {} 3722 | 3723 | wrap-ansi@7.0.0: 3724 | dependencies: 3725 | ansi-styles: 4.3.0 3726 | string-width: 4.2.3 3727 | strip-ansi: 6.0.1 3728 | 3729 | wrappy@1.0.2: {} 3730 | 3731 | write-file-atomic@4.0.2: 3732 | dependencies: 3733 | imurmurhash: 0.1.4 3734 | signal-exit: 3.0.7 3735 | 3736 | y18n@5.0.8: {} 3737 | 3738 | yallist@3.1.1: {} 3739 | 3740 | yargs-parser@21.1.1: {} 3741 | 3742 | yargs@17.7.2: 3743 | dependencies: 3744 | cliui: 8.0.1 3745 | escalade: 3.2.0 3746 | get-caller-file: 2.0.5 3747 | require-directory: 2.1.1 3748 | string-width: 4.2.3 3749 | y18n: 5.0.8 3750 | yargs-parser: 21.1.1 3751 | 3752 | yocto-queue@0.1.0: {} 3753 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ai/check-dts/ac6b8eea081e55156f11af253e4b7723ce3943a9/screenshot.png -------------------------------------------------------------------------------- /show-help.js: -------------------------------------------------------------------------------- 1 | import pico from 'picocolors' 2 | 3 | let b = pico.bold 4 | let y = pico.yellow 5 | 6 | export function showHelp(print) { 7 | print( 8 | b('Usage: ') + 'npx check-dts [FILES]', 9 | 'Check `.d.ts` files in open source library according to types tests', 10 | '', 11 | b('Arguments:'), 12 | ' ' + y('[FILES]') + ' Optional a list of files/globs', 13 | ' ' + y('--version') + ' Show version', 14 | ' ' + y('--help') + ' Show this message' 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /show-version.js: -------------------------------------------------------------------------------- 1 | import { readFileSync } from 'node:fs' 2 | import { join } from 'node:path' 3 | import { fileURLToPath } from 'node:url' 4 | import pico from 'picocolors' 5 | 6 | export function showVersion(print) { 7 | let pkg = readFileSync( 8 | join(fileURLToPath(import.meta.url), '..', 'package.json') 9 | ) 10 | print(`check-dts ${pico.bold(JSON.parse(pkg).version)}`) 11 | } 12 | -------------------------------------------------------------------------------- /test/__snapshots__/check.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`accepts files 1`] = ` 4 | "- Check types 5 | ✔ Check types 6 | " 7 | `; 8 | 9 | exports[`checks both tests 1`] = ` 10 | "- Check types 11 | ✖ Check types 12 | 13 | ✖ test/a.types.ts:3:10: Type error TS2345 14 |  Argument of type 'string' is not assignable to parameter of type 'number'. 15 | 16 | ✖ test/a.errors.ts:4:10: Wrong error 17 |  Expected: Argument of type '"1"' is not assignable to parameter of type 'number'. 18 | Got: Argument of type 'string' is not assignable to parameter of type 'number'. 19 | 20 | ✖ test/b.errors.ts:9:7: Wrong error 21 |  Expected: Wrong 22 | Got: Expected 3 arguments, but got 2. 23 | 24 | ✖ test/b.errors.ts:12:20: Unexpected error 25 |  Expected 1 arguments, but got 2. 26 | 27 | ✖ test/b.errors.ts:15:12: Wrong error 28 |  Expected: not assignable to parameter of type '"set" | "tick"' 29 | Got: Argument of type '"unknown"' is not assignable to parameter of type 'keyof Events'. 30 | 31 | ✖ test/b.errors.ts:11:1: Error was not found 32 |  Missed 33 | 34 | " 35 | `; 36 | 37 | exports[`checks mixed tests 1`] = ` 38 | "- Check types 39 | ✔ Check types 40 | ✔ a/errors.ts 41 | ✔ a/types.ts 42 | " 43 | `; 44 | 45 | exports[`checks negative tests 1`] = ` 46 | "- Check types 47 | ✖ Check types 48 | 49 | ✖ a.d.ts:1:18: Type error TS7010 50 |  'a', which lacks return-type annotation, implicitly has an 'any' return type. 51 | 52 | ✖ test/a.errors.ts:4:10: Wrong error 53 |  Expected: Argument of type '"1"' is not assignable to parameter of type 'number'. 54 | Got: Argument of type 'string' is not assignable to parameter of type 'number'. 55 | 56 | ✖ test/b.errors.ts:9:7: Wrong error 57 |  Expected: Wrong 58 | Got: Expected 3 arguments, but got 2. 59 | 60 | ✖ test/b.errors.ts:12:20: Unexpected error 61 |  Expected 1 arguments, but got 2. 62 | 63 | ✖ test/b.errors.ts:15:12: Wrong error 64 |  Expected: not assignable to parameter of type '"set" | "tick"' 65 | Got: Argument of type '"unknown"' is not assignable to parameter of type 'keyof Events'. 66 | 67 | ✖ test/b.errors.ts:11:1: Error was not found 68 |  Missed 69 | 70 | " 71 | `; 72 | 73 | exports[`checks positive tests 1`] = ` 74 | "- Check types 75 | ✖ Check types 76 | 77 | ✖ test/types.ts:3:14: Type error TS2345 78 |  Argument of type 'string' is not assignable to parameter of type 'number'. 79 | 80 | ✖ test/errors.ts:4:14: Wrong error 81 |  Expected: Argument of type '"1"' is not assignable to parameter of type 'number'. 82 | Got: Argument of type 'string' is not assignable to parameter of type 'number'. 83 | 84 | " 85 | `; 86 | 87 | exports[`loads custom tsconfig.json 1`] = ` 88 | "- Check types 89 | ✔ Check types 90 | ✔ types.ts 91 | " 92 | `; 93 | 94 | exports[`loads custom tsconfig.json with extends property 1`] = ` 95 | "- Check types 96 | ✔ Check types 97 | ✔ index.errors.ts 98 | " 99 | `; 100 | 101 | exports[`supports simple cases 1`] = ` 102 | "- Check types 103 | ✔ Check types 104 | ✔ test/errors.ts 105 | ✔ test/types.ts 106 | " 107 | `; 108 | -------------------------------------------------------------------------------- /test/__snapshots__/show-help.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`prints version 1`] = ` 4 | "Usage: npx check-dts [FILES] 5 | Check \`.d.ts\` files in open source library according to types tests 6 | 7 | Arguments: 8 | [FILES] Optional a list of files/globs 9 | --version Show version 10 | --help Show this message 11 | " 12 | `; 13 | -------------------------------------------------------------------------------- /test/__snapshots__/show-version.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`prints version 1`] = ` 4 | "check-dts 0.0.0 5 | " 6 | `; 7 | -------------------------------------------------------------------------------- /test/check.test.js: -------------------------------------------------------------------------------- 1 | import './fixtures/ci.js' 2 | 3 | import { jest } from '@jest/globals' 4 | import { dirname, join } from 'node:path' 5 | import { fileURLToPath } from 'node:url' 6 | 7 | import { check } from '../check.js' 8 | 9 | const ROOT = dirname(fileURLToPath(import.meta.url)) 10 | 11 | async function run(fixture, args) { 12 | let out = { text: '' } 13 | out.write = symbols => { 14 | out.text += symbols 15 | } 16 | out.print = (...lines) => { 17 | out.write(lines.join('\n') + '\n') 18 | } 19 | let cwd = join(ROOT, 'fixtures', fixture) 20 | let exitCode = await check(out, cwd, out.print, args) 21 | return [exitCode, out.text] 22 | } 23 | 24 | async function good(fixture, args) { 25 | let [exitCode, out] = await run(fixture, args) 26 | expect(exitCode).toBe(true) 27 | return out 28 | } 29 | 30 | async function bad(fixture, args) { 31 | let [exitCode, out] = await run(fixture, args) 32 | expect(exitCode).toBe(false) 33 | return out 34 | } 35 | 36 | jest.setTimeout(20000) 37 | 38 | it('supports simple cases', async () => { 39 | expect(await good('simple')).toMatchSnapshot() 40 | }) 41 | 42 | it('checks positive tests', async () => { 43 | expect(await bad('positive')).toMatchSnapshot() 44 | }) 45 | 46 | it('checks negative tests', async () => { 47 | expect(await bad('negative')).toMatchSnapshot() 48 | }) 49 | 50 | it('checks both tests', async () => { 51 | expect(await bad('both')).toMatchSnapshot() 52 | }) 53 | 54 | it('checks mixed tests', async () => { 55 | expect(await good('mixed')).toMatchSnapshot() 56 | }) 57 | 58 | it('loads custom tsconfig.json', async () => { 59 | expect(await good('tsconfig')).toMatchSnapshot() 60 | }) 61 | 62 | it('loads custom tsconfig.json with extends property', async () => { 63 | expect(await good('tsconfig-with-extends')).toMatchSnapshot() 64 | }) 65 | 66 | it('accepts files', async () => { 67 | expect(await good('negative', 'b.*')).toMatchSnapshot() 68 | }) 69 | 70 | it('warns about empty project', async () => { 71 | let error 72 | try { 73 | await bad('empty') 74 | } catch (e) { 75 | error = e 76 | } 77 | expect(error.message).toContain('TypeScript files were not found') 78 | expect(error.own).toBe(true) 79 | }) 80 | -------------------------------------------------------------------------------- /test/fixtures/both/a.d.ts: -------------------------------------------------------------------------------- 1 | declare function a (str: string, index: number): string 2 | 3 | export = a 4 | -------------------------------------------------------------------------------- /test/fixtures/both/a.js: -------------------------------------------------------------------------------- 1 | module.export = function (str, index) { 2 | return str.slice(index, index + 1) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/both/b.d.ts: -------------------------------------------------------------------------------- 1 | interface EventsMap { 2 | [event: string]: any 3 | } 4 | 5 | interface DefaultEvents extends EventsMap { 6 | [event: string]: (...args: any) => void 7 | } 8 | 9 | declare class Emitter { 10 | events: Partial<{ [E in keyof Events]: Events[E][] }> 11 | on (event: K, cb: Events[K]): () => void 12 | emit (event: K, ...args: Parameters): void 13 | } 14 | 15 | declare function b ( 16 | ): Emitter 17 | 18 | export = b 19 | -------------------------------------------------------------------------------- /test/fixtures/both/b.js: -------------------------------------------------------------------------------- 1 | module.exports = function () { 2 | let emitter = { 3 | events: {} 4 | } 5 | 6 | emitter.emit = (event, ...args) => { 7 | ;(emitter.events[event] || []).filter(i => i(...args)) 8 | } 9 | 10 | emitter.on = (event, cb) => { 11 | ;(emitter.events[event] = emitter.events[event] || []).push(cb) 12 | return function () { 13 | emitter.events[event] = emitter.events[event].filter(i => i !== cb) 14 | } 15 | } 16 | 17 | return emitter 18 | } 19 | -------------------------------------------------------------------------------- /test/fixtures/both/test/a.errors.ts: -------------------------------------------------------------------------------- 1 | import a from '../a' 2 | 3 | // THROWS Argument of type '"1"' is not assignable to parameter of type 'number'. 4 | a('abc', '1') 5 | -------------------------------------------------------------------------------- /test/fixtures/both/test/a.types.ts: -------------------------------------------------------------------------------- 1 | import a from '../a' 2 | 3 | a('abc', '1') 4 | -------------------------------------------------------------------------------- /test/fixtures/both/test/b.errors.ts: -------------------------------------------------------------------------------- 1 | import b from '../b' 2 | 3 | interface Events { 4 | 'set': (a: string, b: number) => void, 5 | 'tick': () => void 6 | } 7 | let typed = b() 8 | // THROWS Wrong 9 | typed.emit('set', 1) 10 | // THROWS Missed 11 | typed.emit('tick') 12 | typed.emit('tick', 1) 13 | 14 | // THROWS not assignable to parameter of type '"set" | "tick"' 15 | typed.emit('unknown') 16 | 17 | typed.events = { 18 | 'set': [ 19 | // THROWS is not assignable to type 20 | (b: number) => b 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /test/fixtures/both/test/b.types.ts: -------------------------------------------------------------------------------- 1 | import b from '../b' 2 | 3 | interface Events { 4 | 'set': (a: string, b: number) => void, 5 | 'add': (c: number) => void, 6 | 'tick': () => void 7 | } 8 | 9 | function fn (a: string) { 10 | console.log(a) 11 | } 12 | 13 | let ee = b() 14 | ee.on('set', a => { 15 | fn(a) 16 | }) 17 | 18 | ee.emit('set', 'a', 1) 19 | ee.emit('add', 2) 20 | ee.emit('tick') 21 | 22 | ee.events = { 23 | 'set': [ 24 | a => { 25 | fn(a) 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/fixtures/ci.js: -------------------------------------------------------------------------------- 1 | process.env.CI = '1' 2 | -------------------------------------------------------------------------------- /test/fixtures/empty/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ai/check-dts/ac6b8eea081e55156f11af253e4b7723ce3943a9/test/fixtures/empty/index.js -------------------------------------------------------------------------------- /test/fixtures/mixed/a/errors.ts: -------------------------------------------------------------------------------- 1 | import a from '.' 2 | 3 | // THROWS type 'string' is not assignable to parameter of type 'number'. 4 | a('abc', '1') 5 | -------------------------------------------------------------------------------- /test/fixtures/mixed/a/index.d.ts: -------------------------------------------------------------------------------- 1 | declare function a (str: string, index: number): string 2 | 3 | export = a 4 | -------------------------------------------------------------------------------- /test/fixtures/mixed/a/index.js: -------------------------------------------------------------------------------- 1 | module.exports = function (str, index) { 2 | return str.slice(index, index + 1) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/mixed/a/types.ts: -------------------------------------------------------------------------------- 1 | import a from '.' 2 | 3 | a('abc', 1) 4 | -------------------------------------------------------------------------------- /test/fixtures/negative/a.d.ts: -------------------------------------------------------------------------------- 1 | declare function a (str: string, index: number) 2 | 3 | export = a 4 | -------------------------------------------------------------------------------- /test/fixtures/negative/a.js: -------------------------------------------------------------------------------- 1 | module.export = function (str, index) { 2 | return str.slice(index, index + 1) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/negative/b.d.ts: -------------------------------------------------------------------------------- 1 | interface EventsMap { 2 | [event: string]: any 3 | } 4 | 5 | interface DefaultEvents extends EventsMap { 6 | [event: string]: (...args: any) => void 7 | } 8 | 9 | declare class Emitter { 10 | events: Partial<{ [E in keyof Events]: Events[E][] }> 11 | on (event: K, cb: Events[K]): () => void 12 | emit (event: K, ...args: Parameters): void 13 | } 14 | 15 | declare function b ( 16 | ): Emitter 17 | 18 | export = b 19 | -------------------------------------------------------------------------------- /test/fixtures/negative/b.js: -------------------------------------------------------------------------------- 1 | module.exports = function () { 2 | let emitter = { 3 | events: {} 4 | } 5 | 6 | emitter.emit = (event, ...args) => { 7 | ;(emitter.events[event] || []).filter(i => i(...args)) 8 | } 9 | 10 | emitter.on = (event, cb) => { 11 | ;(emitter.events[event] = emitter.events[event] || []).push(cb) 12 | return function () { 13 | emitter.events[event] = emitter.events[event].filter(i => i !== cb) 14 | } 15 | } 16 | 17 | return emitter 18 | } 19 | -------------------------------------------------------------------------------- /test/fixtures/negative/test/a.errors.ts: -------------------------------------------------------------------------------- 1 | import a from '../a' 2 | 3 | // THROWS Argument of type '"1"' is not assignable to parameter of type 'number'. 4 | a('abc', '1') 5 | -------------------------------------------------------------------------------- /test/fixtures/negative/test/a.types.ts: -------------------------------------------------------------------------------- 1 | import a from '../a' 2 | 3 | a('abc', 1) 4 | -------------------------------------------------------------------------------- /test/fixtures/negative/test/b.errors.ts: -------------------------------------------------------------------------------- 1 | import b from '../b' 2 | 3 | interface Events { 4 | 'set': (a: string, b: number) => void, 5 | 'tick': () => void 6 | } 7 | let typed = b() 8 | // THROWS Wrong 9 | typed.emit('set', 1) 10 | // THROWS Missed 11 | typed.emit('tick') 12 | typed.emit('tick', 1) 13 | 14 | // THROWS not assignable to parameter of type '"set" | "tick"' 15 | typed.emit('unknown') 16 | 17 | typed.events = { 18 | 'set': [ 19 | // THROWS is not assignable to type 20 | (b: number) => b 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /test/fixtures/negative/test/b.types.ts: -------------------------------------------------------------------------------- 1 | import b from '../b' 2 | 3 | interface Events { 4 | 'set': (a: string, b: number) => void, 5 | 'add': (c: number) => void, 6 | 'tick': () => void 7 | } 8 | 9 | function fn (a: string) { 10 | console.log(a) 11 | } 12 | 13 | let ee = b() 14 | ee.on('set', a => { 15 | fn(a) 16 | }) 17 | 18 | ee.emit('set', 'a', 1) 19 | ee.emit('add', 2) 20 | ee.emit('tick') 21 | 22 | ee.events = { 23 | 'set': [ 24 | a => { 25 | fn(a) 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/fixtures/positive/index.d.ts: -------------------------------------------------------------------------------- 1 | declare function index (str: string, index: number): string 2 | 3 | export = index 4 | -------------------------------------------------------------------------------- /test/fixtures/positive/index.js: -------------------------------------------------------------------------------- 1 | module.export = function (str, index) { 2 | return str.slice(index, index + 1) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/positive/test/errors.ts: -------------------------------------------------------------------------------- 1 | import index from '..' 2 | 3 | // THROWS Argument of type '"1"' is not assignable to parameter of type 'number'. 4 | index('abc', '1') 5 | -------------------------------------------------------------------------------- /test/fixtures/positive/test/index.test.js: -------------------------------------------------------------------------------- 1 | let index = require('..') 2 | 3 | it('passes test', () => { 4 | expect(index('abc', '1')).toBe('b') 5 | }) 6 | -------------------------------------------------------------------------------- /test/fixtures/positive/test/types.ts: -------------------------------------------------------------------------------- 1 | import index from '..' 2 | 3 | index('abc', '1') 4 | -------------------------------------------------------------------------------- /test/fixtures/simple/index.d.ts: -------------------------------------------------------------------------------- 1 | declare function index (str: string, index: number): string 2 | 3 | export = index 4 | -------------------------------------------------------------------------------- /test/fixtures/simple/index.js: -------------------------------------------------------------------------------- 1 | module.export = function (str, index) { 2 | return str.slice(index, index + 1) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/simple/test/errors.ts: -------------------------------------------------------------------------------- 1 | import index from '..' 2 | 3 | // THROWS type 'string' is not assignable to parameter of type 'number'. 4 | index('abc', '1') 5 | -------------------------------------------------------------------------------- /test/fixtures/simple/test/index.test.js: -------------------------------------------------------------------------------- 1 | let index = require('../') 2 | 3 | it('passes test', () => { 4 | expect(index('abc', 1)).toBe('b') 5 | }) 6 | -------------------------------------------------------------------------------- /test/fixtures/simple/test/types.ts: -------------------------------------------------------------------------------- 1 | import index from '..' 2 | 3 | index('abc', 1) 4 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig-with-extends/index.errors.ts: -------------------------------------------------------------------------------- 1 | declare const a: number | null 2 | 3 | // THROWS Type 'number | null' is not assignable to type 'number'. 4 | export const b: number = a 5 | 6 | // This file checks whether the compiler performs strictNullChecks if it is enabled in the config file specified via extends 7 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig-with-extends/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strictNullChecks": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig-with-extends/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // tsconfig should support extends 3 | "extends": "./tsconfig.base.json", 4 | "compilerOptions": { 5 | "noUnusedLocals": false, 6 | "target": "ES5", 7 | "moduleResolution": "Node" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig/b.js: -------------------------------------------------------------------------------- 1 | const b = 1 2 | 3 | export default b 4 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig/index.ts: -------------------------------------------------------------------------------- 1 | import b from './b.js' 2 | 3 | function sealed(target: any) { 4 | target.seal = 'seal' + b 5 | } 6 | 7 | export function all(p1: Promise, p2: Promise) { 8 | return Promise.allSettled([p1, p2]) 9 | } 10 | 11 | @sealed 12 | class A {} 13 | 14 | export default A 15 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // tsconfig should support comments 3 | "compilerOptions": { 4 | "target": "ES5", 5 | "experimentalDecorators": true, 6 | "moduleResolution": "Node", 7 | "lib": ["ES2020.Promise"] 8 | } // tsconfig should support trailing commas 9 | } 10 | -------------------------------------------------------------------------------- /test/fixtures/tsconfig/types.ts: -------------------------------------------------------------------------------- 1 | import A from '.' 2 | 3 | console.log(A) 4 | -------------------------------------------------------------------------------- /test/show-help.test.js: -------------------------------------------------------------------------------- 1 | import { showHelp } from '../show-help.js' 2 | 3 | function createStdout() { 4 | let result = { out: '' } 5 | result.print = (...lines) => { 6 | result.out += lines.join('\n') + '\n' 7 | } 8 | return result 9 | } 10 | 11 | it('prints version', () => { 12 | let stdout = createStdout() 13 | showHelp(stdout.print) 14 | expect(stdout.out).toMatchSnapshot() 15 | }) 16 | -------------------------------------------------------------------------------- /test/show-version.test.js: -------------------------------------------------------------------------------- 1 | import { showVersion } from '../show-version.js' 2 | 3 | function createStdout() { 4 | let result = { out: '' } 5 | result.print = (...lines) => { 6 | result.out += lines.join('\n') + '\n' 7 | } 8 | return result 9 | } 10 | 11 | it('prints version', () => { 12 | let stdout = createStdout() 13 | showVersion(stdout.print) 14 | expect(stdout.out.replace(/\d+\.\d+\.\d+/, '0.0.0')).toMatchSnapshot() 15 | }) 16 | -------------------------------------------------------------------------------- /worker.js: -------------------------------------------------------------------------------- 1 | import { parentPort, workerData } from 'node:worker_threads' 2 | 3 | import { createProgram } from './create-program.js' 4 | 5 | let { compilerOptions, files } = workerData 6 | 7 | let errors = createProgram(files, compilerOptions) 8 | let cleaned = errors.map(error => { 9 | let cleanedError = { 10 | code: error.code, 11 | fileName: error.fileName, 12 | messageText: error.messageText, 13 | start: error.start 14 | } 15 | if (typeof cleanedError.messageText !== 'string') { 16 | cleanedError.messageText = { 17 | code: cleanedError.messageText.code, 18 | messageText: cleanedError.messageText.messageText 19 | } 20 | } 21 | if (error.file) { 22 | cleanedError.file = { 23 | fileName: error.file.fileName, 24 | text: error.file.text 25 | } 26 | } 27 | return cleanedError 28 | }) 29 | parentPort.postMessage(cleaned) 30 | --------------------------------------------------------------------------------