├── .prettierignore ├── .gitattributes ├── src ├── util.ts ├── logger.ts ├── dtsContent.ts └── index.ts ├── eslint.config.mjs ├── .prettierrc ├── tsconfig.json ├── .github └── workflows │ └── deploy.yml ├── LICENSE ├── package.json ├── README.md ├── .gitignore └── pnpm-lock.yaml /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | dist 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /src/util.ts: -------------------------------------------------------------------------------- 1 | export const isToml = (filename: string): boolean => filename.endsWith('.toml') 2 | export const isConstToml = (filename: string): boolean => 3 | filename.endsWith('.const.toml') 4 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import eslint from '@eslint/js' 2 | import tseslint from 'typescript-eslint' 3 | import eslintConfigPrettier from 'eslint-config-prettier' 4 | 5 | export default tseslint.config( 6 | { 7 | languageOptions: { 8 | sourceType: 'module' 9 | }, 10 | linterOptions: { 11 | reportUnusedDisableDirectives: 'error' 12 | } 13 | }, 14 | eslint.configs.recommended, 15 | ...tseslint.configs.recommended, 16 | ...tseslint.configs.stylistic, 17 | eslintConfigPrettier, 18 | { 19 | ignores: ['dist/**'] 20 | } 21 | ) 22 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "tabWidth": 2, 4 | "useTabs": false, 5 | "semi": false, 6 | "singleQuote": true, 7 | "quoteProps": "as-needed", 8 | "jsxSingleQuote": false, 9 | "trailingComma": "none", 10 | "bracketSpacing": true, 11 | "bracketSameLine": true, 12 | "arrowParens": "avoid", 13 | "rangeStart": 0, 14 | "filepath": "none", 15 | "requirePragma": false, 16 | "insertPragma": false, 17 | "proseWrap": "preserve", 18 | "htmlWhitespaceSensitivity": "css", 19 | "vueIndentScriptAndStyle": false, 20 | "endOfLine": "auto" 21 | } 22 | -------------------------------------------------------------------------------- /src/logger.ts: -------------------------------------------------------------------------------- 1 | import type ts from 'typescript/lib/tsserverlibrary' 2 | 3 | export interface Logger { 4 | log: (message: string) => void 5 | error: (error: Error) => void 6 | } 7 | 8 | export const createLogger = (info: ts.server.PluginCreateInfo): Logger => { 9 | const log = (message: string) => { 10 | info.project.projectService.logger.info( 11 | `[typescript-plugin-toml] ${message}` 12 | ) 13 | } 14 | const error = (error: Error) => { 15 | log(`Failed ${error.toString()}`) 16 | log(`Stack trace: ${error.stack}`) 17 | } 18 | 19 | return { 20 | log, 21 | error 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "commonjs", 5 | "strict": true, 6 | "noUncheckedIndexedAccess": true, 7 | "moduleResolution": "node", 8 | "resolveJsonModule": true, 9 | "esModuleInterop": true, 10 | "isolatedModules": true, 11 | "allowSyntheticDefaultImports": true, 12 | "baseUrl": ".", 13 | "skipLibCheck": true, 14 | "incremental": true, 15 | "tsBuildInfoFile": "./node_modules/.tsbuildinfo", 16 | "outDir": "./dist", 17 | "declaration": true 18 | }, 19 | "include": ["src/**/*"], 20 | "exclude": ["node_modules"] 21 | } 22 | -------------------------------------------------------------------------------- /src/dtsContent.ts: -------------------------------------------------------------------------------- 1 | import { parseTOML, getStaticTOMLValue } from 'toml-eslint-parser' 2 | import { Logger } from './logger' 3 | import { readFileSync } from 'fs' 4 | 5 | export const getDtsContent = ( 6 | fileName: string, 7 | logger: Logger, 8 | useAsConst: boolean 9 | ): string => { 10 | const text = readFileSync(fileName, 'utf-8') 11 | 12 | let dts 13 | try { 14 | const parsed = parseTOML(text) 15 | const data = getStaticTOMLValue(parsed) 16 | 17 | dts = ` 18 | declare const data = ${JSON.stringify(data)}${useAsConst ? ' as const' : ''} 19 | export default data 20 | ` 21 | } catch (e: unknown) { 22 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 23 | logger.error(e as any) 24 | dts = ` 25 | declare const data: void 26 | export default data 27 | ` 28 | } 29 | return dts 30 | } 31 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: automatic deploy 2 | 3 | on: 4 | push: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | release: 10 | name: deploy 11 | permissions: 12 | contents: read 13 | id-token: write 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: checkout 17 | uses: actions/checkout@v4 18 | - name: setup pnpm 19 | uses: pnpm/action-setup@v4 20 | - name: setup Node 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: '20.x' 24 | cache: pnpm 25 | registry-url: 'https://registry.npmjs.org' 26 | - name: ci 27 | run: pnpm i 28 | - name: build 29 | run: pnpm run build 30 | - name: deploy 31 | run: pnpm publish --no-git-checks --provenance 32 | env: 33 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 sapphi-red 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-plugin-toml", 3 | "version": "0.5.0", 4 | "description": "A typescript language service plugin providing support for toml files.", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "scripts": { 8 | "dev": "tsc -w", 9 | "build": "tsc", 10 | "lint": "eslint --cache .", 11 | "format": "prettier --write --cache ." 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/sapphi-red/typescript-plugin-toml.git" 16 | }, 17 | "keywords": [ 18 | "typescript", 19 | "toml" 20 | ], 21 | "files": [ 22 | "dist" 23 | ], 24 | "author": "sapphi-red", 25 | "license": "MIT", 26 | "bugs": { 27 | "url": "https://github.com/sapphi-red/typescript-plugin-toml/issues" 28 | }, 29 | "homepage": "https://github.com/sapphi-red/typescript-plugin-toml#readme", 30 | "devDependencies": { 31 | "@eslint/js": "^9.9.1", 32 | "@types/node": "^20.16.1", 33 | "@volar/language-core": "^2.4.0", 34 | "eslint": "^9.9.1", 35 | "eslint-config-prettier": "^9.1.0", 36 | "prettier": "^3.3.3", 37 | "typescript": "^5.5.4", 38 | "typescript-eslint": "^8.3.0" 39 | }, 40 | "dependencies": { 41 | "@volar/typescript": "^2.4.0", 42 | "toml-eslint-parser": "^0.10.0" 43 | }, 44 | "peerDependencies": { 45 | "typescript": "^5.0.2" 46 | }, 47 | "packageManager": "pnpm@9.9.0" 48 | } 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # typescript-plugin-toml 2 | 3 | [![npm version](https://badge.fury.io/js/typescript-plugin-toml.svg)](https://badge.fury.io/js/typescript-plugin-toml) ![automatic deploy](https://github.com/sapphi-red/typescript-plugin-toml/workflows/automatic%20deploy/badge.svg) [![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE) 4 | 5 | A typescript language service plugin providing support for toml files. 6 | 7 | ![example](https://user-images.githubusercontent.com/49056869/102447633-b9598300-4073-11eb-97d3-7732881e6552.png) 8 | 9 | ## Usage 10 | 11 | ```shell 12 | npm i -D typescript-plugin-toml # yarn add -D typescript-plugin-toml 13 | ``` 14 | 15 | And then add this to `tsconfig.json`. 16 | 17 | ```json 18 | { 19 | "compilerOptions": { 20 | "plugins": [{ "name": "typescript-plugin-toml" }] 21 | } 22 | } 23 | ``` 24 | 25 | If you're using VSCode, [switch to workspace version](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-the-workspace-version-of-typescript). 26 | 27 | ## `.const.toml` 28 | 29 | If the file name ends with `.const.toml`, the typings will become as if you are using `as const`. 30 | 31 | For example it will be like below. 32 | 33 | `test.toml` and `test.const.toml` 34 | 35 | ```toml 36 | key = 'val' 37 | ``` 38 | 39 | `index.ts` 40 | 41 | ```ts 42 | import test from './test.toml' 43 | import testConst from './test.const.toml' 44 | 45 | type Test = typeof test // { key: string } 46 | type TestConst = typeof testConst // { readonly key: 'val' } 47 | ``` 48 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { getDtsContent } from './dtsContent' 2 | import { isToml, isConstToml } from './util' 3 | import { createLogger } from './logger' 4 | import { createLanguageServicePlugin } from '@volar/typescript/lib/quickstart/createLanguageServicePlugin' 5 | import type { LanguagePlugin } from '@volar/language-core' 6 | import type {} from '@volar/typescript' 7 | 8 | export = createLanguageServicePlugin((ts, info) => { 9 | const tsConfigPath = info.project.getProjectName() 10 | if (!info.project.fileExists(tsConfigPath)) { 11 | // project name not a tsconfig path, this is a inferred project 12 | return { languagePlugins: [] } 13 | } 14 | 15 | const logger = createLogger(info) 16 | 17 | const plugin: LanguagePlugin = { 18 | getLanguageId(scriptId) { 19 | if (isToml(scriptId)) { 20 | return 'toml' 21 | } 22 | }, 23 | createVirtualCode(scriptId, languageId) { 24 | if (languageId !== 'toml') return undefined 25 | 26 | const fileName = scriptId.includes('://') 27 | ? (scriptId.split('://')[1] ?? '') 28 | : scriptId 29 | 30 | const dtsContent = getDtsContent(fileName, logger, isConstToml(fileName)) 31 | return { 32 | id: 'main', 33 | languageId: 'toml', 34 | snapshot: { 35 | getText: (start, end) => dtsContent.slice(start, end), 36 | getLength: () => dtsContent.length, 37 | getChangeRange: () => undefined 38 | }, 39 | mappings: [] 40 | } 41 | }, 42 | typescript: { 43 | extraFileExtensions: [ 44 | { 45 | extension: 'toml', 46 | isMixedContent: true, 47 | scriptKind: ts.ScriptKind.TS 48 | } 49 | ], 50 | getServiceScript(root) { 51 | return { code: root, extension: '.ts', scriptKind: ts.ScriptKind.TS } 52 | } 53 | } 54 | } 55 | 56 | return { languagePlugins: [plugin] } 57 | }) 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@volar/typescript': 12 | specifier: ^2.4.0 13 | version: 2.4.0 14 | toml-eslint-parser: 15 | specifier: ^0.10.0 16 | version: 0.10.0 17 | devDependencies: 18 | '@eslint/js': 19 | specifier: ^9.9.1 20 | version: 9.9.1 21 | '@types/node': 22 | specifier: ^20.16.1 23 | version: 20.16.1 24 | '@volar/language-core': 25 | specifier: ^2.4.0 26 | version: 2.4.0 27 | eslint: 28 | specifier: ^9.9.1 29 | version: 9.9.1 30 | eslint-config-prettier: 31 | specifier: ^9.1.0 32 | version: 9.1.0(eslint@9.9.1) 33 | prettier: 34 | specifier: ^3.3.3 35 | version: 3.3.3 36 | typescript: 37 | specifier: ^5.5.4 38 | version: 5.5.4 39 | typescript-eslint: 40 | specifier: ^8.3.0 41 | version: 8.3.0(eslint@9.9.1)(typescript@5.5.4) 42 | 43 | packages: 44 | 45 | '@aashutoshrathi/word-wrap@1.2.6': 46 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 47 | engines: {node: '>=0.10.0'} 48 | 49 | '@eslint-community/eslint-utils@4.4.0': 50 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 51 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 52 | peerDependencies: 53 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 54 | 55 | '@eslint-community/regexpp@4.10.0': 56 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 57 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 58 | 59 | '@eslint-community/regexpp@4.11.0': 60 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} 61 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 62 | 63 | '@eslint/config-array@0.18.0': 64 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 65 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 66 | 67 | '@eslint/eslintrc@3.1.0': 68 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 69 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 70 | 71 | '@eslint/js@9.9.1': 72 | resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} 73 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 74 | 75 | '@eslint/object-schema@2.1.4': 76 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 77 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 78 | 79 | '@humanwhocodes/module-importer@1.0.1': 80 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 81 | engines: {node: '>=12.22'} 82 | 83 | '@humanwhocodes/retry@0.3.0': 84 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 85 | engines: {node: '>=18.18'} 86 | 87 | '@nodelib/fs.scandir@2.1.5': 88 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 89 | engines: {node: '>= 8'} 90 | 91 | '@nodelib/fs.stat@2.0.5': 92 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 93 | engines: {node: '>= 8'} 94 | 95 | '@nodelib/fs.walk@1.2.8': 96 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 97 | engines: {node: '>= 8'} 98 | 99 | '@types/node@20.16.1': 100 | resolution: {integrity: sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==} 101 | 102 | '@typescript-eslint/eslint-plugin@8.3.0': 103 | resolution: {integrity: sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==} 104 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 105 | peerDependencies: 106 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 107 | eslint: ^8.57.0 || ^9.0.0 108 | typescript: '*' 109 | peerDependenciesMeta: 110 | typescript: 111 | optional: true 112 | 113 | '@typescript-eslint/parser@8.3.0': 114 | resolution: {integrity: sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==} 115 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 116 | peerDependencies: 117 | eslint: ^8.57.0 || ^9.0.0 118 | typescript: '*' 119 | peerDependenciesMeta: 120 | typescript: 121 | optional: true 122 | 123 | '@typescript-eslint/scope-manager@8.3.0': 124 | resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} 125 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 126 | 127 | '@typescript-eslint/type-utils@8.3.0': 128 | resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} 129 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 130 | peerDependencies: 131 | typescript: '*' 132 | peerDependenciesMeta: 133 | typescript: 134 | optional: true 135 | 136 | '@typescript-eslint/types@8.3.0': 137 | resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} 138 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 139 | 140 | '@typescript-eslint/typescript-estree@8.3.0': 141 | resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} 142 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 143 | peerDependencies: 144 | typescript: '*' 145 | peerDependenciesMeta: 146 | typescript: 147 | optional: true 148 | 149 | '@typescript-eslint/utils@8.3.0': 150 | resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} 151 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 152 | peerDependencies: 153 | eslint: ^8.57.0 || ^9.0.0 154 | 155 | '@typescript-eslint/visitor-keys@8.3.0': 156 | resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} 157 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 158 | 159 | '@volar/language-core@2.4.0': 160 | resolution: {integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==} 161 | 162 | '@volar/source-map@2.4.0': 163 | resolution: {integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==} 164 | 165 | '@volar/typescript@2.4.0': 166 | resolution: {integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==} 167 | 168 | acorn-jsx@5.3.2: 169 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 170 | peerDependencies: 171 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 172 | 173 | acorn@8.12.1: 174 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 175 | engines: {node: '>=0.4.0'} 176 | hasBin: true 177 | 178 | ajv@6.12.6: 179 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 180 | 181 | ansi-regex@5.0.1: 182 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 183 | engines: {node: '>=8'} 184 | 185 | ansi-styles@4.3.0: 186 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 187 | engines: {node: '>=8'} 188 | 189 | argparse@2.0.1: 190 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 191 | 192 | balanced-match@1.0.2: 193 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 194 | 195 | brace-expansion@1.1.11: 196 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 197 | 198 | brace-expansion@2.0.1: 199 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 200 | 201 | braces@3.0.2: 202 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 203 | engines: {node: '>=8'} 204 | 205 | callsites@3.1.0: 206 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 207 | engines: {node: '>=6'} 208 | 209 | chalk@4.1.2: 210 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 211 | engines: {node: '>=10'} 212 | 213 | color-convert@2.0.1: 214 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 215 | engines: {node: '>=7.0.0'} 216 | 217 | color-name@1.1.4: 218 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 219 | 220 | concat-map@0.0.1: 221 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 222 | 223 | cross-spawn@7.0.3: 224 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 225 | engines: {node: '>= 8'} 226 | 227 | debug@4.3.4: 228 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 229 | engines: {node: '>=6.0'} 230 | peerDependencies: 231 | supports-color: '*' 232 | peerDependenciesMeta: 233 | supports-color: 234 | optional: true 235 | 236 | deep-is@0.1.4: 237 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 238 | 239 | escape-string-regexp@4.0.0: 240 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 241 | engines: {node: '>=10'} 242 | 243 | eslint-config-prettier@9.1.0: 244 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 245 | hasBin: true 246 | peerDependencies: 247 | eslint: '>=7.0.0' 248 | 249 | eslint-scope@8.0.2: 250 | resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} 251 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 252 | 253 | eslint-visitor-keys@3.4.3: 254 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 255 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 256 | 257 | eslint-visitor-keys@4.0.0: 258 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} 259 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 260 | 261 | eslint@9.9.1: 262 | resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} 263 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 264 | hasBin: true 265 | peerDependencies: 266 | jiti: '*' 267 | peerDependenciesMeta: 268 | jiti: 269 | optional: true 270 | 271 | espree@10.1.0: 272 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} 273 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 274 | 275 | esquery@1.5.0: 276 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 277 | engines: {node: '>=0.10'} 278 | 279 | esrecurse@4.3.0: 280 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 281 | engines: {node: '>=4.0'} 282 | 283 | estraverse@5.3.0: 284 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 285 | engines: {node: '>=4.0'} 286 | 287 | esutils@2.0.3: 288 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 289 | engines: {node: '>=0.10.0'} 290 | 291 | fast-deep-equal@3.1.3: 292 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 293 | 294 | fast-glob@3.3.2: 295 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 296 | engines: {node: '>=8.6.0'} 297 | 298 | fast-json-stable-stringify@2.1.0: 299 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 300 | 301 | fast-levenshtein@2.0.6: 302 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 303 | 304 | fastq@1.15.0: 305 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 306 | 307 | file-entry-cache@8.0.0: 308 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 309 | engines: {node: '>=16.0.0'} 310 | 311 | fill-range@7.0.1: 312 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 313 | engines: {node: '>=8'} 314 | 315 | find-up@5.0.0: 316 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 317 | engines: {node: '>=10'} 318 | 319 | flat-cache@4.0.1: 320 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 321 | engines: {node: '>=16'} 322 | 323 | flatted@3.2.9: 324 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 325 | 326 | glob-parent@5.1.2: 327 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 328 | engines: {node: '>= 6'} 329 | 330 | glob-parent@6.0.2: 331 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 332 | engines: {node: '>=10.13.0'} 333 | 334 | globals@14.0.0: 335 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 336 | engines: {node: '>=18'} 337 | 338 | graphemer@1.4.0: 339 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 340 | 341 | has-flag@4.0.0: 342 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 343 | engines: {node: '>=8'} 344 | 345 | ignore@5.3.1: 346 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 347 | engines: {node: '>= 4'} 348 | 349 | import-fresh@3.3.0: 350 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 351 | engines: {node: '>=6'} 352 | 353 | imurmurhash@0.1.4: 354 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 355 | engines: {node: '>=0.8.19'} 356 | 357 | is-extglob@2.1.1: 358 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 359 | engines: {node: '>=0.10.0'} 360 | 361 | is-glob@4.0.3: 362 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 363 | engines: {node: '>=0.10.0'} 364 | 365 | is-number@7.0.0: 366 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 367 | engines: {node: '>=0.12.0'} 368 | 369 | is-path-inside@3.0.3: 370 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 371 | engines: {node: '>=8'} 372 | 373 | isexe@2.0.0: 374 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 375 | 376 | js-yaml@4.1.0: 377 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 378 | hasBin: true 379 | 380 | json-buffer@3.0.1: 381 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 382 | 383 | json-schema-traverse@0.4.1: 384 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 385 | 386 | json-stable-stringify-without-jsonify@1.0.1: 387 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 388 | 389 | keyv@4.5.4: 390 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 391 | 392 | levn@0.4.1: 393 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 394 | engines: {node: '>= 0.8.0'} 395 | 396 | locate-path@6.0.0: 397 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 398 | engines: {node: '>=10'} 399 | 400 | lodash.merge@4.6.2: 401 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 402 | 403 | merge2@1.4.1: 404 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 405 | engines: {node: '>= 8'} 406 | 407 | micromatch@4.0.5: 408 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 409 | engines: {node: '>=8.6'} 410 | 411 | minimatch@3.1.2: 412 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 413 | 414 | minimatch@9.0.4: 415 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} 416 | engines: {node: '>=16 || 14 >=14.17'} 417 | 418 | ms@2.1.2: 419 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 420 | 421 | natural-compare@1.4.0: 422 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 423 | 424 | optionator@0.9.3: 425 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 426 | engines: {node: '>= 0.8.0'} 427 | 428 | p-limit@3.1.0: 429 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 430 | engines: {node: '>=10'} 431 | 432 | p-locate@5.0.0: 433 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 434 | engines: {node: '>=10'} 435 | 436 | parent-module@1.0.1: 437 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 438 | engines: {node: '>=6'} 439 | 440 | path-browserify@1.0.1: 441 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 442 | 443 | path-exists@4.0.0: 444 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 445 | engines: {node: '>=8'} 446 | 447 | path-key@3.1.1: 448 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 449 | engines: {node: '>=8'} 450 | 451 | picomatch@2.3.1: 452 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 453 | engines: {node: '>=8.6'} 454 | 455 | prelude-ls@1.2.1: 456 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 457 | engines: {node: '>= 0.8.0'} 458 | 459 | prettier@3.3.3: 460 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 461 | engines: {node: '>=14'} 462 | hasBin: true 463 | 464 | punycode@2.3.1: 465 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 466 | engines: {node: '>=6'} 467 | 468 | queue-microtask@1.2.3: 469 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 470 | 471 | resolve-from@4.0.0: 472 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 473 | engines: {node: '>=4'} 474 | 475 | reusify@1.0.4: 476 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 477 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 478 | 479 | run-parallel@1.2.0: 480 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 481 | 482 | semver@7.6.2: 483 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} 484 | engines: {node: '>=10'} 485 | hasBin: true 486 | 487 | shebang-command@2.0.0: 488 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 489 | engines: {node: '>=8'} 490 | 491 | shebang-regex@3.0.0: 492 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 493 | engines: {node: '>=8'} 494 | 495 | strip-ansi@6.0.1: 496 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 497 | engines: {node: '>=8'} 498 | 499 | strip-json-comments@3.1.1: 500 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 501 | engines: {node: '>=8'} 502 | 503 | supports-color@7.2.0: 504 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 505 | engines: {node: '>=8'} 506 | 507 | text-table@0.2.0: 508 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 509 | 510 | to-regex-range@5.0.1: 511 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 512 | engines: {node: '>=8.0'} 513 | 514 | toml-eslint-parser@0.10.0: 515 | resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} 516 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 517 | 518 | ts-api-utils@1.3.0: 519 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 520 | engines: {node: '>=16'} 521 | peerDependencies: 522 | typescript: '>=4.2.0' 523 | 524 | type-check@0.4.0: 525 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 526 | engines: {node: '>= 0.8.0'} 527 | 528 | typescript-eslint@8.3.0: 529 | resolution: {integrity: sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA==} 530 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 531 | peerDependencies: 532 | typescript: '*' 533 | peerDependenciesMeta: 534 | typescript: 535 | optional: true 536 | 537 | typescript@5.5.4: 538 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} 539 | engines: {node: '>=14.17'} 540 | hasBin: true 541 | 542 | undici-types@6.19.8: 543 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 544 | 545 | uri-js@4.4.1: 546 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 547 | 548 | vscode-uri@3.0.8: 549 | resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} 550 | 551 | which@2.0.2: 552 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 553 | engines: {node: '>= 8'} 554 | hasBin: true 555 | 556 | yocto-queue@0.1.0: 557 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 558 | engines: {node: '>=10'} 559 | 560 | snapshots: 561 | 562 | '@aashutoshrathi/word-wrap@1.2.6': {} 563 | 564 | '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1)': 565 | dependencies: 566 | eslint: 9.9.1 567 | eslint-visitor-keys: 3.4.3 568 | 569 | '@eslint-community/regexpp@4.10.0': {} 570 | 571 | '@eslint-community/regexpp@4.11.0': {} 572 | 573 | '@eslint/config-array@0.18.0': 574 | dependencies: 575 | '@eslint/object-schema': 2.1.4 576 | debug: 4.3.4 577 | minimatch: 3.1.2 578 | transitivePeerDependencies: 579 | - supports-color 580 | 581 | '@eslint/eslintrc@3.1.0': 582 | dependencies: 583 | ajv: 6.12.6 584 | debug: 4.3.4 585 | espree: 10.1.0 586 | globals: 14.0.0 587 | ignore: 5.3.1 588 | import-fresh: 3.3.0 589 | js-yaml: 4.1.0 590 | minimatch: 3.1.2 591 | strip-json-comments: 3.1.1 592 | transitivePeerDependencies: 593 | - supports-color 594 | 595 | '@eslint/js@9.9.1': {} 596 | 597 | '@eslint/object-schema@2.1.4': {} 598 | 599 | '@humanwhocodes/module-importer@1.0.1': {} 600 | 601 | '@humanwhocodes/retry@0.3.0': {} 602 | 603 | '@nodelib/fs.scandir@2.1.5': 604 | dependencies: 605 | '@nodelib/fs.stat': 2.0.5 606 | run-parallel: 1.2.0 607 | 608 | '@nodelib/fs.stat@2.0.5': {} 609 | 610 | '@nodelib/fs.walk@1.2.8': 611 | dependencies: 612 | '@nodelib/fs.scandir': 2.1.5 613 | fastq: 1.15.0 614 | 615 | '@types/node@20.16.1': 616 | dependencies: 617 | undici-types: 6.19.8 618 | 619 | '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4)': 620 | dependencies: 621 | '@eslint-community/regexpp': 4.10.0 622 | '@typescript-eslint/parser': 8.3.0(eslint@9.9.1)(typescript@5.5.4) 623 | '@typescript-eslint/scope-manager': 8.3.0 624 | '@typescript-eslint/type-utils': 8.3.0(eslint@9.9.1)(typescript@5.5.4) 625 | '@typescript-eslint/utils': 8.3.0(eslint@9.9.1)(typescript@5.5.4) 626 | '@typescript-eslint/visitor-keys': 8.3.0 627 | eslint: 9.9.1 628 | graphemer: 1.4.0 629 | ignore: 5.3.1 630 | natural-compare: 1.4.0 631 | ts-api-utils: 1.3.0(typescript@5.5.4) 632 | optionalDependencies: 633 | typescript: 5.5.4 634 | transitivePeerDependencies: 635 | - supports-color 636 | 637 | '@typescript-eslint/parser@8.3.0(eslint@9.9.1)(typescript@5.5.4)': 638 | dependencies: 639 | '@typescript-eslint/scope-manager': 8.3.0 640 | '@typescript-eslint/types': 8.3.0 641 | '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) 642 | '@typescript-eslint/visitor-keys': 8.3.0 643 | debug: 4.3.4 644 | eslint: 9.9.1 645 | optionalDependencies: 646 | typescript: 5.5.4 647 | transitivePeerDependencies: 648 | - supports-color 649 | 650 | '@typescript-eslint/scope-manager@8.3.0': 651 | dependencies: 652 | '@typescript-eslint/types': 8.3.0 653 | '@typescript-eslint/visitor-keys': 8.3.0 654 | 655 | '@typescript-eslint/type-utils@8.3.0(eslint@9.9.1)(typescript@5.5.4)': 656 | dependencies: 657 | '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) 658 | '@typescript-eslint/utils': 8.3.0(eslint@9.9.1)(typescript@5.5.4) 659 | debug: 4.3.4 660 | ts-api-utils: 1.3.0(typescript@5.5.4) 661 | optionalDependencies: 662 | typescript: 5.5.4 663 | transitivePeerDependencies: 664 | - eslint 665 | - supports-color 666 | 667 | '@typescript-eslint/types@8.3.0': {} 668 | 669 | '@typescript-eslint/typescript-estree@8.3.0(typescript@5.5.4)': 670 | dependencies: 671 | '@typescript-eslint/types': 8.3.0 672 | '@typescript-eslint/visitor-keys': 8.3.0 673 | debug: 4.3.4 674 | fast-glob: 3.3.2 675 | is-glob: 4.0.3 676 | minimatch: 9.0.4 677 | semver: 7.6.2 678 | ts-api-utils: 1.3.0(typescript@5.5.4) 679 | optionalDependencies: 680 | typescript: 5.5.4 681 | transitivePeerDependencies: 682 | - supports-color 683 | 684 | '@typescript-eslint/utils@8.3.0(eslint@9.9.1)(typescript@5.5.4)': 685 | dependencies: 686 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) 687 | '@typescript-eslint/scope-manager': 8.3.0 688 | '@typescript-eslint/types': 8.3.0 689 | '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.5.4) 690 | eslint: 9.9.1 691 | transitivePeerDependencies: 692 | - supports-color 693 | - typescript 694 | 695 | '@typescript-eslint/visitor-keys@8.3.0': 696 | dependencies: 697 | '@typescript-eslint/types': 8.3.0 698 | eslint-visitor-keys: 3.4.3 699 | 700 | '@volar/language-core@2.4.0': 701 | dependencies: 702 | '@volar/source-map': 2.4.0 703 | 704 | '@volar/source-map@2.4.0': {} 705 | 706 | '@volar/typescript@2.4.0': 707 | dependencies: 708 | '@volar/language-core': 2.4.0 709 | path-browserify: 1.0.1 710 | vscode-uri: 3.0.8 711 | 712 | acorn-jsx@5.3.2(acorn@8.12.1): 713 | dependencies: 714 | acorn: 8.12.1 715 | 716 | acorn@8.12.1: {} 717 | 718 | ajv@6.12.6: 719 | dependencies: 720 | fast-deep-equal: 3.1.3 721 | fast-json-stable-stringify: 2.1.0 722 | json-schema-traverse: 0.4.1 723 | uri-js: 4.4.1 724 | 725 | ansi-regex@5.0.1: {} 726 | 727 | ansi-styles@4.3.0: 728 | dependencies: 729 | color-convert: 2.0.1 730 | 731 | argparse@2.0.1: {} 732 | 733 | balanced-match@1.0.2: {} 734 | 735 | brace-expansion@1.1.11: 736 | dependencies: 737 | balanced-match: 1.0.2 738 | concat-map: 0.0.1 739 | 740 | brace-expansion@2.0.1: 741 | dependencies: 742 | balanced-match: 1.0.2 743 | 744 | braces@3.0.2: 745 | dependencies: 746 | fill-range: 7.0.1 747 | 748 | callsites@3.1.0: {} 749 | 750 | chalk@4.1.2: 751 | dependencies: 752 | ansi-styles: 4.3.0 753 | supports-color: 7.2.0 754 | 755 | color-convert@2.0.1: 756 | dependencies: 757 | color-name: 1.1.4 758 | 759 | color-name@1.1.4: {} 760 | 761 | concat-map@0.0.1: {} 762 | 763 | cross-spawn@7.0.3: 764 | dependencies: 765 | path-key: 3.1.1 766 | shebang-command: 2.0.0 767 | which: 2.0.2 768 | 769 | debug@4.3.4: 770 | dependencies: 771 | ms: 2.1.2 772 | 773 | deep-is@0.1.4: {} 774 | 775 | escape-string-regexp@4.0.0: {} 776 | 777 | eslint-config-prettier@9.1.0(eslint@9.9.1): 778 | dependencies: 779 | eslint: 9.9.1 780 | 781 | eslint-scope@8.0.2: 782 | dependencies: 783 | esrecurse: 4.3.0 784 | estraverse: 5.3.0 785 | 786 | eslint-visitor-keys@3.4.3: {} 787 | 788 | eslint-visitor-keys@4.0.0: {} 789 | 790 | eslint@9.9.1: 791 | dependencies: 792 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) 793 | '@eslint-community/regexpp': 4.11.0 794 | '@eslint/config-array': 0.18.0 795 | '@eslint/eslintrc': 3.1.0 796 | '@eslint/js': 9.9.1 797 | '@humanwhocodes/module-importer': 1.0.1 798 | '@humanwhocodes/retry': 0.3.0 799 | '@nodelib/fs.walk': 1.2.8 800 | ajv: 6.12.6 801 | chalk: 4.1.2 802 | cross-spawn: 7.0.3 803 | debug: 4.3.4 804 | escape-string-regexp: 4.0.0 805 | eslint-scope: 8.0.2 806 | eslint-visitor-keys: 4.0.0 807 | espree: 10.1.0 808 | esquery: 1.5.0 809 | esutils: 2.0.3 810 | fast-deep-equal: 3.1.3 811 | file-entry-cache: 8.0.0 812 | find-up: 5.0.0 813 | glob-parent: 6.0.2 814 | ignore: 5.3.1 815 | imurmurhash: 0.1.4 816 | is-glob: 4.0.3 817 | is-path-inside: 3.0.3 818 | json-stable-stringify-without-jsonify: 1.0.1 819 | levn: 0.4.1 820 | lodash.merge: 4.6.2 821 | minimatch: 3.1.2 822 | natural-compare: 1.4.0 823 | optionator: 0.9.3 824 | strip-ansi: 6.0.1 825 | text-table: 0.2.0 826 | transitivePeerDependencies: 827 | - supports-color 828 | 829 | espree@10.1.0: 830 | dependencies: 831 | acorn: 8.12.1 832 | acorn-jsx: 5.3.2(acorn@8.12.1) 833 | eslint-visitor-keys: 4.0.0 834 | 835 | esquery@1.5.0: 836 | dependencies: 837 | estraverse: 5.3.0 838 | 839 | esrecurse@4.3.0: 840 | dependencies: 841 | estraverse: 5.3.0 842 | 843 | estraverse@5.3.0: {} 844 | 845 | esutils@2.0.3: {} 846 | 847 | fast-deep-equal@3.1.3: {} 848 | 849 | fast-glob@3.3.2: 850 | dependencies: 851 | '@nodelib/fs.stat': 2.0.5 852 | '@nodelib/fs.walk': 1.2.8 853 | glob-parent: 5.1.2 854 | merge2: 1.4.1 855 | micromatch: 4.0.5 856 | 857 | fast-json-stable-stringify@2.1.0: {} 858 | 859 | fast-levenshtein@2.0.6: {} 860 | 861 | fastq@1.15.0: 862 | dependencies: 863 | reusify: 1.0.4 864 | 865 | file-entry-cache@8.0.0: 866 | dependencies: 867 | flat-cache: 4.0.1 868 | 869 | fill-range@7.0.1: 870 | dependencies: 871 | to-regex-range: 5.0.1 872 | 873 | find-up@5.0.0: 874 | dependencies: 875 | locate-path: 6.0.0 876 | path-exists: 4.0.0 877 | 878 | flat-cache@4.0.1: 879 | dependencies: 880 | flatted: 3.2.9 881 | keyv: 4.5.4 882 | 883 | flatted@3.2.9: {} 884 | 885 | glob-parent@5.1.2: 886 | dependencies: 887 | is-glob: 4.0.3 888 | 889 | glob-parent@6.0.2: 890 | dependencies: 891 | is-glob: 4.0.3 892 | 893 | globals@14.0.0: {} 894 | 895 | graphemer@1.4.0: {} 896 | 897 | has-flag@4.0.0: {} 898 | 899 | ignore@5.3.1: {} 900 | 901 | import-fresh@3.3.0: 902 | dependencies: 903 | parent-module: 1.0.1 904 | resolve-from: 4.0.0 905 | 906 | imurmurhash@0.1.4: {} 907 | 908 | is-extglob@2.1.1: {} 909 | 910 | is-glob@4.0.3: 911 | dependencies: 912 | is-extglob: 2.1.1 913 | 914 | is-number@7.0.0: {} 915 | 916 | is-path-inside@3.0.3: {} 917 | 918 | isexe@2.0.0: {} 919 | 920 | js-yaml@4.1.0: 921 | dependencies: 922 | argparse: 2.0.1 923 | 924 | json-buffer@3.0.1: {} 925 | 926 | json-schema-traverse@0.4.1: {} 927 | 928 | json-stable-stringify-without-jsonify@1.0.1: {} 929 | 930 | keyv@4.5.4: 931 | dependencies: 932 | json-buffer: 3.0.1 933 | 934 | levn@0.4.1: 935 | dependencies: 936 | prelude-ls: 1.2.1 937 | type-check: 0.4.0 938 | 939 | locate-path@6.0.0: 940 | dependencies: 941 | p-locate: 5.0.0 942 | 943 | lodash.merge@4.6.2: {} 944 | 945 | merge2@1.4.1: {} 946 | 947 | micromatch@4.0.5: 948 | dependencies: 949 | braces: 3.0.2 950 | picomatch: 2.3.1 951 | 952 | minimatch@3.1.2: 953 | dependencies: 954 | brace-expansion: 1.1.11 955 | 956 | minimatch@9.0.4: 957 | dependencies: 958 | brace-expansion: 2.0.1 959 | 960 | ms@2.1.2: {} 961 | 962 | natural-compare@1.4.0: {} 963 | 964 | optionator@0.9.3: 965 | dependencies: 966 | '@aashutoshrathi/word-wrap': 1.2.6 967 | deep-is: 0.1.4 968 | fast-levenshtein: 2.0.6 969 | levn: 0.4.1 970 | prelude-ls: 1.2.1 971 | type-check: 0.4.0 972 | 973 | p-limit@3.1.0: 974 | dependencies: 975 | yocto-queue: 0.1.0 976 | 977 | p-locate@5.0.0: 978 | dependencies: 979 | p-limit: 3.1.0 980 | 981 | parent-module@1.0.1: 982 | dependencies: 983 | callsites: 3.1.0 984 | 985 | path-browserify@1.0.1: {} 986 | 987 | path-exists@4.0.0: {} 988 | 989 | path-key@3.1.1: {} 990 | 991 | picomatch@2.3.1: {} 992 | 993 | prelude-ls@1.2.1: {} 994 | 995 | prettier@3.3.3: {} 996 | 997 | punycode@2.3.1: {} 998 | 999 | queue-microtask@1.2.3: {} 1000 | 1001 | resolve-from@4.0.0: {} 1002 | 1003 | reusify@1.0.4: {} 1004 | 1005 | run-parallel@1.2.0: 1006 | dependencies: 1007 | queue-microtask: 1.2.3 1008 | 1009 | semver@7.6.2: {} 1010 | 1011 | shebang-command@2.0.0: 1012 | dependencies: 1013 | shebang-regex: 3.0.0 1014 | 1015 | shebang-regex@3.0.0: {} 1016 | 1017 | strip-ansi@6.0.1: 1018 | dependencies: 1019 | ansi-regex: 5.0.1 1020 | 1021 | strip-json-comments@3.1.1: {} 1022 | 1023 | supports-color@7.2.0: 1024 | dependencies: 1025 | has-flag: 4.0.0 1026 | 1027 | text-table@0.2.0: {} 1028 | 1029 | to-regex-range@5.0.1: 1030 | dependencies: 1031 | is-number: 7.0.0 1032 | 1033 | toml-eslint-parser@0.10.0: 1034 | dependencies: 1035 | eslint-visitor-keys: 3.4.3 1036 | 1037 | ts-api-utils@1.3.0(typescript@5.5.4): 1038 | dependencies: 1039 | typescript: 5.5.4 1040 | 1041 | type-check@0.4.0: 1042 | dependencies: 1043 | prelude-ls: 1.2.1 1044 | 1045 | typescript-eslint@8.3.0(eslint@9.9.1)(typescript@5.5.4): 1046 | dependencies: 1047 | '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4) 1048 | '@typescript-eslint/parser': 8.3.0(eslint@9.9.1)(typescript@5.5.4) 1049 | '@typescript-eslint/utils': 8.3.0(eslint@9.9.1)(typescript@5.5.4) 1050 | optionalDependencies: 1051 | typescript: 5.5.4 1052 | transitivePeerDependencies: 1053 | - eslint 1054 | - supports-color 1055 | 1056 | typescript@5.5.4: {} 1057 | 1058 | undici-types@6.19.8: {} 1059 | 1060 | uri-js@4.4.1: 1061 | dependencies: 1062 | punycode: 2.3.1 1063 | 1064 | vscode-uri@3.0.8: {} 1065 | 1066 | which@2.0.2: 1067 | dependencies: 1068 | isexe: 2.0.0 1069 | 1070 | yocto-queue@0.1.0: {} 1071 | --------------------------------------------------------------------------------