├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .npmignore ├── Dockerfile ├── LICENSE ├── README.md ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── scripts └── typegen.ts ├── src ├── configs │ ├── ignore │ │ ├── config.ts │ │ └── index.ts │ ├── javascript │ │ ├── config.ts │ │ └── index.ts │ ├── nextjs │ │ ├── config.ts │ │ └── index.ts │ ├── node │ │ ├── config.ts │ │ └── index.ts │ ├── perfectionist │ │ ├── config.ts │ │ ├── index.ts │ │ └── type.ts │ ├── react │ │ ├── config.ts │ │ └── index.ts │ ├── stylistic │ │ ├── config.ts │ │ ├── index.ts │ │ └── type.ts │ └── typescript │ │ ├── config.ts │ │ ├── index.ts │ │ └── type.ts ├── index.ts ├── types │ ├── gen.d.ts │ └── type.ts └── utils │ ├── extension.ts │ ├── factory.ts │ └── logger.ts └── tsconfig.json /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: push 4 | 5 | jobs: 6 | build: 7 | name: Build 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | - uses: pnpm/action-setup@v3 12 | with: 13 | version: latest 14 | - uses: actions/setup-node@v4 15 | with: 16 | node-version: lts/* 17 | cache: pnpm 18 | - run: pnpm install 19 | - run: pnpm run build:config 20 | lint: 21 | name: ESLint 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v4 25 | - uses: pnpm/action-setup@v3 26 | with: 27 | version: latest 28 | - uses: actions/setup-node@v4 29 | with: 30 | node-version: lts/* 31 | cache: pnpm 32 | - run: pnpm install 33 | - run: pnpm run build:config 34 | - run: pnpm run lint 35 | typecheck: 36 | name: Type Check 37 | runs-on: ubuntu-latest 38 | steps: 39 | - uses: actions/checkout@v4 40 | - uses: pnpm/action-setup@v3 41 | with: 42 | version: latest 43 | - uses: actions/setup-node@v4 44 | with: 45 | node-version: lts/* 46 | cache: pnpm 47 | - run: pnpm install 48 | - run: pnpm run ts:check -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Idea IDE: 2 | **/.idea/ 3 | 4 | # Package lock (except for PNPM): 5 | **/yarn.lock 6 | **/package-lock.json 7 | **/bun.lockb 8 | 9 | # Packages: 10 | **/node_modules 11 | 12 | # Environment variables and secrets files: 13 | **/.env* 14 | 15 | # ESLint Inspector: 16 | .eslint-config-inspector 17 | 18 | # Builds: 19 | **/build 20 | **/dist 21 | 22 | # TS: 23 | **/*.tsbuildinfo 24 | 25 | # MacOS 26 | **/.DS_Store -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Project: 2 | src 3 | scripts 4 | 5 | # Dockerfile: 6 | Dockerfile 7 | 8 | # Configs: 9 | eslint.config.js 10 | tsconfig.json 11 | 12 | # GitHub: 13 | .github -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # BUILDER: 2 | FROM node:20-alpine AS builder 3 | WORKDIR /app 4 | 5 | # Enable PNPM: 6 | RUN corepack enable 7 | 8 | # Install dependencies and build: 9 | COPY package.json ./ 10 | RUN pnpm install 11 | COPY . . 12 | RUN pnpm run inspector:build 13 | 14 | # RUNNER: 15 | FROM node:20-alpine AS runner 16 | WORKDIR /app 17 | 18 | # Copy only necessary files from the build stage: 19 | COPY --from=builder /app/.eslint-config-inspector ./ 20 | 21 | # Install a static site runner: 22 | RUN npm install -g serve 23 | 24 | # Expose the provided port: 25 | EXPOSE $PORT 26 | 27 | # Run the server: 28 | CMD serve . --listen tcp://0.0.0.0:$PORT -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-PRESENT Bluzzi 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @bluzzi/eslint-config 2 | A ready-to-use ESLint config preset that's highly opinionated and strict on best practices, allowing you to both lint and [format](https://eslint.style/guide/why) any file that can be used in the JavaScript ecosystem. 3 | 4 | - 📖 formatting (Prettier alternative) with only basic configurations (semi, quotes, indent) 5 | - ⚒️ very strict rules for JS and TS, which encourages best practices 6 | - 🌏 designed to work with TS, JSX, React, JSON, YAML, TOML, GraphQL, CSS, HTML and Markdown 7 | - ✅ automatically enables specific rules based on your dependencies 8 | - 🧲 uses the recommended shared configs (ESLint, TSLint, Stylistic...) 9 | 10 | If you're looking for a less opinionated configuration with more customization possibilities, I recommend you the [Antfu preset](https://github.com/antfu/eslint-config). 11 | 12 | ## Installation 13 | Installing the config preset in your project. 14 | 15 | ### Packages 16 | ``` 17 | npm install -D eslint @bluzzi/eslint-config 18 | ``` 19 | ``` 20 | yarn add --dev eslint @bluzzi/eslint-config 21 | ``` 22 | ``` 23 | pnpm install -D eslint @bluzzi/eslint-config 24 | ``` 25 | 26 | ### Configuration file 27 | Create the `eslint.config.mjs` file at the root of the project and add the minimum configuration: 28 | ```js 29 | import { eslintConfig } from "@bluzzi/eslint-config"; 30 | 31 | export default eslintConfig(); 32 | ``` 33 | 34 | ### Scripts 35 | In your package.json file, you can optionally add the following scripts to easily run ESLint in your project: 36 | ```json 37 | { 38 | "scripts": { 39 | "lint": "eslint .", 40 | "lint:fix": "eslint . --fix" 41 | } 42 | } 43 | ``` 44 | 45 | ## VS Code support 46 | Installation and configuration of the VS Code plugin to take advantage of an automatic correction when saving a file, as well as a display of problems. 47 | 48 | Install [VS Code ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and add the following settings to your `.vscode/settings.json`: 49 | ```jsonc 50 | { 51 | // Disable the default formatter, use eslint instead: 52 | "prettier.enable": false, 53 | "editor.formatOnSave": false, 54 | 55 | // Auto fix: 56 | "editor.codeActionsOnSave": { 57 | "source.fixAll.eslint": "explicit", 58 | "source.organizeImports": "never" 59 | }, 60 | 61 | // Silent the stylistic rules in you IDE, but still auto fix them: 62 | "eslint.rules.customizations": [ 63 | { "rule": "style/*", "severity": "off", "fixable": true }, 64 | { "rule": "format/*", "severity": "off", "fixable": true }, 65 | { "rule": "*-indent", "severity": "off", "fixable": true }, 66 | { "rule": "*-spacing", "severity": "off", "fixable": true }, 67 | { "rule": "*-spaces", "severity": "off", "fixable": true }, 68 | { "rule": "*-order", "severity": "off", "fixable": true }, 69 | { "rule": "*-dangle", "severity": "off", "fixable": true }, 70 | { "rule": "*-newline", "severity": "off", "fixable": true }, 71 | { "rule": "*quotes", "severity": "off", "fixable": true }, 72 | { "rule": "*semi", "severity": "off", "fixable": true } 73 | ], 74 | 75 | // Enable eslint for all supported languages: 76 | "eslint.validate": [ 77 | "javascript", 78 | "javascriptreact", 79 | "typescript", 80 | "typescriptreact", 81 | "html", 82 | "markdown", 83 | "json", 84 | "jsonc", 85 | "yaml", 86 | "toml", 87 | "gql", 88 | "graphql" 89 | ] 90 | } 91 | ``` 92 | 93 | ## Customization 94 | To enable TS [type aware rules](https://typescript-eslint.io/getting-started/typed-linting) (recommended for best practice with TS), you need to define the relative path to your `tsconfig.json`: 95 | ```js 96 | export default eslintConfig({ 97 | typescript: { tsconfigPath: "./tsconfig.json" }, 98 | }); 99 | ``` 100 | 101 | You can adjust some formatting options for your code, but we recommend sticking to [Stylistic](https://eslint.style/guide/config-presets)'s default rules for consistency within the JS community: 102 | ```js 103 | export default eslintConfig({ 104 | stylistic: { 105 | indent: 2, 106 | quotes: "single", 107 | semi: false, 108 | }, 109 | }); 110 | ``` 111 | 112 | Finally, you can make full use of the power of [ESLint's flat configs](https://eslint.org/docs/latest/use/configure/configuration-files) to extend the configuration as much as you like: 113 | ```js 114 | export default eslintConfig( 115 | { 116 | // The configuration options offered by our package 117 | }, 118 | 119 | // From the second arguments they are ESLint Flat Configs 120 | // you can have multiple configs: 121 | { 122 | files: ["**/*.ts"], 123 | rules: {}, 124 | }, 125 | { 126 | rules: {}, 127 | }, 128 | ); 129 | ``` 130 | 131 | ## Thanks 132 | - [Anthony Fu](https://github.com/antfu), for his [config preset](https://github.com/antfu/eslint-config) and its work on [Stylistic](https://eslint.style/) 133 | - [ESLint team](https://eslint.org/team/), for this [amazing project](https://eslint.org/) that pushes the whole JS ecosystem forward 134 | 135 | ## License 136 | This package is MIT licensed. -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import { eslintConfig } from "./dist/index.js"; 2 | 3 | export default eslintConfig({ 4 | typescript: { tsconfigPath: "./tsconfig.json" }, 5 | }); 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@bluzzi/eslint-config", 3 | "description": "ESLint configuration preset for linting and formatting all your files", 4 | "version": "2.1.1", 5 | "license": "MIT", 6 | "author": "Bluzzi", 7 | "type": "module", 8 | "main": "./dist/index.js", 9 | "types": "./dist/index.d.ts", 10 | "exports": { 11 | ".": "./dist/index.js" 12 | }, 13 | "scripts": { 14 | "build:config": "tsup src/index.ts --minify --format esm --clean --dts", 15 | "build:type": "tsx ./scripts/typegen.ts", 16 | "inspector:dev": "npx @eslint/config-inspector --config eslint.config.js", 17 | "inspector:build": "npm run build:config && npx @eslint/config-inspector build", 18 | "inspector:start": "serve .eslint-config-inspector", 19 | "lint": "eslint .", 20 | "lint:fix": "eslint . --fix", 21 | "ts:check": "tsc --noEmit" 22 | }, 23 | "homepage": "https://github.com/Bluzzi/eslint-config#readme", 24 | "bugs": { 25 | "url": "https://github.com/Bluzzi/eslint-config/issues" 26 | }, 27 | "repository": { 28 | "type": "git", 29 | "url": "git+https://github.com/Bluzzi/eslint-config.git" 30 | }, 31 | "peerDependencies": { 32 | "eslint": ">=9.0.0" 33 | }, 34 | "dependencies": { 35 | "@eslint-react/eslint-plugin": "^1.37.0", 36 | "@eslint/js": "^9.22.0", 37 | "@next/eslint-plugin-next": "^15.2.3", 38 | "@stylistic/eslint-plugin": "^4.2.0", 39 | "@typescript-eslint/eslint-plugin": "^8.27.0", 40 | "@typescript-eslint/parser": "^8.27.0", 41 | "eslint-flat-config-utils": "^2.0.1", 42 | "eslint-plugin-antfu": "^3.1.1", 43 | "eslint-plugin-n": "^17.16.2", 44 | "eslint-plugin-perfectionist": "^4.10.1", 45 | "eslint-plugin-react-hooks": "^5.2.0", 46 | "globals": "^16.0.0", 47 | "local-pkg": "^1.1.1" 48 | }, 49 | "devDependencies": { 50 | "@eslint/config-inspector": "^1.0.2", 51 | "@types/eslint": "^9.6.1", 52 | "@types/node": "^22.13.10", 53 | "eslint": "^9.22.0", 54 | "eslint-typegen": "^2.1.0", 55 | "serve": "^14.2.4", 56 | "tsup": "^8.4.0", 57 | "tsx": "^4.19.3", 58 | "typescript": "^5.8.2" 59 | }, 60 | "pnpm": { 61 | "onlyBuiltDependencies": [ 62 | "esbuild" 63 | ] 64 | }, 65 | "keywords": [ 66 | "eslint", 67 | "config", 68 | "typescript", 69 | "react", 70 | "stylistic", 71 | "node" 72 | ] 73 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@eslint-react/eslint-plugin': 12 | specifier: ^1.37.0 13 | version: 1.37.0(eslint@9.22.0)(ts-api-utils@2.1.0(typescript@5.8.2))(typescript@5.8.2) 14 | '@eslint/js': 15 | specifier: ^9.22.0 16 | version: 9.22.0 17 | '@next/eslint-plugin-next': 18 | specifier: ^15.2.3 19 | version: 15.2.3 20 | '@stylistic/eslint-plugin': 21 | specifier: ^4.2.0 22 | version: 4.2.0(eslint@9.22.0)(typescript@5.8.2) 23 | '@typescript-eslint/eslint-plugin': 24 | specifier: ^8.27.0 25 | version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2) 26 | '@typescript-eslint/parser': 27 | specifier: ^8.27.0 28 | version: 8.27.0(eslint@9.22.0)(typescript@5.8.2) 29 | eslint-flat-config-utils: 30 | specifier: ^2.0.1 31 | version: 2.0.1 32 | eslint-plugin-antfu: 33 | specifier: ^3.1.1 34 | version: 3.1.1(eslint@9.22.0) 35 | eslint-plugin-n: 36 | specifier: ^17.16.2 37 | version: 17.16.2(eslint@9.22.0) 38 | eslint-plugin-perfectionist: 39 | specifier: ^4.10.1 40 | version: 4.10.1(eslint@9.22.0)(typescript@5.8.2) 41 | eslint-plugin-react-hooks: 42 | specifier: ^5.2.0 43 | version: 5.2.0(eslint@9.22.0) 44 | globals: 45 | specifier: ^16.0.0 46 | version: 16.0.0 47 | local-pkg: 48 | specifier: ^1.1.1 49 | version: 1.1.1 50 | devDependencies: 51 | '@eslint/config-inspector': 52 | specifier: ^1.0.2 53 | version: 1.0.2(eslint@9.22.0) 54 | '@types/eslint': 55 | specifier: ^9.6.1 56 | version: 9.6.1 57 | '@types/node': 58 | specifier: ^22.13.10 59 | version: 22.13.10 60 | eslint: 61 | specifier: ^9.22.0 62 | version: 9.22.0 63 | eslint-typegen: 64 | specifier: ^2.1.0 65 | version: 2.1.0(eslint@9.22.0) 66 | serve: 67 | specifier: ^14.2.4 68 | version: 14.2.4 69 | tsup: 70 | specifier: ^8.4.0 71 | version: 8.4.0(tsx@4.19.3)(typescript@5.8.2) 72 | tsx: 73 | specifier: ^4.19.3 74 | version: 4.19.3 75 | typescript: 76 | specifier: ^5.8.2 77 | version: 5.8.2 78 | 79 | packages: 80 | 81 | '@apidevtools/json-schema-ref-parser@11.9.3': 82 | resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} 83 | engines: {node: '>= 16'} 84 | 85 | '@esbuild/aix-ppc64@0.25.1': 86 | resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} 87 | engines: {node: '>=18'} 88 | cpu: [ppc64] 89 | os: [aix] 90 | 91 | '@esbuild/android-arm64@0.25.1': 92 | resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} 93 | engines: {node: '>=18'} 94 | cpu: [arm64] 95 | os: [android] 96 | 97 | '@esbuild/android-arm@0.25.1': 98 | resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} 99 | engines: {node: '>=18'} 100 | cpu: [arm] 101 | os: [android] 102 | 103 | '@esbuild/android-x64@0.25.1': 104 | resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} 105 | engines: {node: '>=18'} 106 | cpu: [x64] 107 | os: [android] 108 | 109 | '@esbuild/darwin-arm64@0.25.1': 110 | resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} 111 | engines: {node: '>=18'} 112 | cpu: [arm64] 113 | os: [darwin] 114 | 115 | '@esbuild/darwin-x64@0.25.1': 116 | resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} 117 | engines: {node: '>=18'} 118 | cpu: [x64] 119 | os: [darwin] 120 | 121 | '@esbuild/freebsd-arm64@0.25.1': 122 | resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} 123 | engines: {node: '>=18'} 124 | cpu: [arm64] 125 | os: [freebsd] 126 | 127 | '@esbuild/freebsd-x64@0.25.1': 128 | resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} 129 | engines: {node: '>=18'} 130 | cpu: [x64] 131 | os: [freebsd] 132 | 133 | '@esbuild/linux-arm64@0.25.1': 134 | resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} 135 | engines: {node: '>=18'} 136 | cpu: [arm64] 137 | os: [linux] 138 | 139 | '@esbuild/linux-arm@0.25.1': 140 | resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} 141 | engines: {node: '>=18'} 142 | cpu: [arm] 143 | os: [linux] 144 | 145 | '@esbuild/linux-ia32@0.25.1': 146 | resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} 147 | engines: {node: '>=18'} 148 | cpu: [ia32] 149 | os: [linux] 150 | 151 | '@esbuild/linux-loong64@0.25.1': 152 | resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} 153 | engines: {node: '>=18'} 154 | cpu: [loong64] 155 | os: [linux] 156 | 157 | '@esbuild/linux-mips64el@0.25.1': 158 | resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} 159 | engines: {node: '>=18'} 160 | cpu: [mips64el] 161 | os: [linux] 162 | 163 | '@esbuild/linux-ppc64@0.25.1': 164 | resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} 165 | engines: {node: '>=18'} 166 | cpu: [ppc64] 167 | os: [linux] 168 | 169 | '@esbuild/linux-riscv64@0.25.1': 170 | resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} 171 | engines: {node: '>=18'} 172 | cpu: [riscv64] 173 | os: [linux] 174 | 175 | '@esbuild/linux-s390x@0.25.1': 176 | resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} 177 | engines: {node: '>=18'} 178 | cpu: [s390x] 179 | os: [linux] 180 | 181 | '@esbuild/linux-x64@0.25.1': 182 | resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} 183 | engines: {node: '>=18'} 184 | cpu: [x64] 185 | os: [linux] 186 | 187 | '@esbuild/netbsd-arm64@0.25.1': 188 | resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} 189 | engines: {node: '>=18'} 190 | cpu: [arm64] 191 | os: [netbsd] 192 | 193 | '@esbuild/netbsd-x64@0.25.1': 194 | resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} 195 | engines: {node: '>=18'} 196 | cpu: [x64] 197 | os: [netbsd] 198 | 199 | '@esbuild/openbsd-arm64@0.25.1': 200 | resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} 201 | engines: {node: '>=18'} 202 | cpu: [arm64] 203 | os: [openbsd] 204 | 205 | '@esbuild/openbsd-x64@0.25.1': 206 | resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} 207 | engines: {node: '>=18'} 208 | cpu: [x64] 209 | os: [openbsd] 210 | 211 | '@esbuild/sunos-x64@0.25.1': 212 | resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} 213 | engines: {node: '>=18'} 214 | cpu: [x64] 215 | os: [sunos] 216 | 217 | '@esbuild/win32-arm64@0.25.1': 218 | resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} 219 | engines: {node: '>=18'} 220 | cpu: [arm64] 221 | os: [win32] 222 | 223 | '@esbuild/win32-ia32@0.25.1': 224 | resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} 225 | engines: {node: '>=18'} 226 | cpu: [ia32] 227 | os: [win32] 228 | 229 | '@esbuild/win32-x64@0.25.1': 230 | resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} 231 | engines: {node: '>=18'} 232 | cpu: [x64] 233 | os: [win32] 234 | 235 | '@eslint-community/eslint-utils@4.4.1': 236 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 237 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 238 | peerDependencies: 239 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 240 | 241 | '@eslint-community/eslint-utils@4.5.1': 242 | resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} 243 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 244 | peerDependencies: 245 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 246 | 247 | '@eslint-community/regexpp@4.12.1': 248 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 249 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 250 | 251 | '@eslint-react/ast@1.37.0': 252 | resolution: {integrity: sha512-spZkhWnxD2V8nVZ7c9CQ9ITOMm0MQONWUUT9Ozki1VcniOF1zHQCJpM6sevp/mr78GlgWFvEYQV4aipHxi0vCw==} 253 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 254 | 255 | '@eslint-react/core@1.37.0': 256 | resolution: {integrity: sha512-Mmcj+WexIIyURyPMi/+a0vEhvD70dEGYu+U/oeJ6Dj+Af3OXZ7kyRFdSkLR32j+v1ohYrJUF80+YPfVHaXofHA==} 257 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 258 | 259 | '@eslint-react/eff@1.37.0': 260 | resolution: {integrity: sha512-zgY2bBPPH0hcQm1qSAbiIjVpjpKD/nfKXVc3r0klxB2OU+Y+fk3xFGszy5pjMN51GBitwf0aRlbapgURnXbxzg==} 261 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 262 | 263 | '@eslint-react/eslint-plugin@1.37.0': 264 | resolution: {integrity: sha512-ELg8Xs6XVgNjx/k5CVpjC37FIfOs/TvQA3F1KhH6FS8+CB29UHgLbG+/nNW7uZ+bG+bD2UT6Siy32Q41ETG9Zw==} 265 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 266 | peerDependencies: 267 | eslint: ^8.57.0 || ^9.0.0 268 | typescript: ^4.9.5 || ^5.3.3 269 | peerDependenciesMeta: 270 | typescript: 271 | optional: true 272 | 273 | '@eslint-react/jsx@1.37.0': 274 | resolution: {integrity: sha512-fFJt72wSaHLWO3UUPO9N1e7JoQBTThllcy1fOepYNdbdYtcXBA/2NhJB1UhK0M6Ry/eayWgjd7hAi6zJCRKwvA==} 275 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 276 | 277 | '@eslint-react/shared@1.37.0': 278 | resolution: {integrity: sha512-VTZjMyyj6pCaq2ZB5rRB6c3KZsVY2XkP4/IiABQCP7OLnZlu5r8WYvA0QvGFYt7IeiHY1oD7YN+C/zjsRob6FA==} 279 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 280 | 281 | '@eslint-react/var@1.37.0': 282 | resolution: {integrity: sha512-xIdNUc2FAQpWnUemmizVICLA1rgTGY3IqRpHKSFP56Wepoy7/4nWRbPG7WTa76a9Kq9IZ8CYN3+X2Q1xSXuvTw==} 283 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 284 | 285 | '@eslint/config-array@0.19.2': 286 | resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} 287 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 288 | 289 | '@eslint/config-helpers@0.1.0': 290 | resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==} 291 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 292 | 293 | '@eslint/config-inspector@1.0.2': 294 | resolution: {integrity: sha512-lPo4ijqq/xA2eVXpfc9jdTN4Y1YTFLBXF1TpgxGqwBFymrpSl5IbxEPcEq7v82xv94EuQsGCqzI/QVMZ16cafg==} 295 | hasBin: true 296 | peerDependencies: 297 | eslint: ^8.50.0 || ^9.0.0 298 | 299 | '@eslint/core@0.12.0': 300 | resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 301 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 302 | 303 | '@eslint/eslintrc@3.3.0': 304 | resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} 305 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 306 | 307 | '@eslint/js@9.22.0': 308 | resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==} 309 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 310 | 311 | '@eslint/object-schema@2.1.6': 312 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 313 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 314 | 315 | '@eslint/plugin-kit@0.2.7': 316 | resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} 317 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 318 | 319 | '@humanfs/core@0.19.1': 320 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 321 | engines: {node: '>=18.18.0'} 322 | 323 | '@humanfs/node@0.16.6': 324 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 325 | engines: {node: '>=18.18.0'} 326 | 327 | '@humanwhocodes/module-importer@1.0.1': 328 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 329 | engines: {node: '>=12.22'} 330 | 331 | '@humanwhocodes/retry@0.3.1': 332 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 333 | engines: {node: '>=18.18'} 334 | 335 | '@humanwhocodes/retry@0.4.2': 336 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 337 | engines: {node: '>=18.18'} 338 | 339 | '@isaacs/cliui@8.0.2': 340 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 341 | engines: {node: '>=12'} 342 | 343 | '@jridgewell/gen-mapping@0.3.8': 344 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 345 | engines: {node: '>=6.0.0'} 346 | 347 | '@jridgewell/resolve-uri@3.1.2': 348 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 349 | engines: {node: '>=6.0.0'} 350 | 351 | '@jridgewell/set-array@1.2.1': 352 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 353 | engines: {node: '>=6.0.0'} 354 | 355 | '@jridgewell/sourcemap-codec@1.5.0': 356 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 357 | 358 | '@jridgewell/trace-mapping@0.3.25': 359 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 360 | 361 | '@jsdevtools/ono@7.1.3': 362 | resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} 363 | 364 | '@next/eslint-plugin-next@15.2.3': 365 | resolution: {integrity: sha512-eNSOIMJtjs+dp4Ms1tB1PPPJUQHP3uZK+OQ7iFY9qXpGO6ojT6imCL+KcUOqE/GXGidWbBZJzYdgAdPHqeCEPA==} 366 | 367 | '@nodelib/fs.scandir@2.1.5': 368 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 369 | engines: {node: '>= 8'} 370 | 371 | '@nodelib/fs.scandir@4.0.1': 372 | resolution: {integrity: sha512-vAkI715yhnmiPupY+dq+xenu5Tdf2TBQ66jLvBIcCddtz+5Q8LbMKaf9CIJJreez8fQ8fgaY+RaywQx8RJIWpw==} 373 | engines: {node: '>=18.18.0'} 374 | 375 | '@nodelib/fs.stat@2.0.5': 376 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 377 | engines: {node: '>= 8'} 378 | 379 | '@nodelib/fs.stat@4.0.0': 380 | resolution: {integrity: sha512-ctr6bByzksKRCV0bavi8WoQevU6plSp2IkllIsEqaiKe2mwNNnaluhnRhcsgGZHrrHk57B3lf95MkLMO3STYcg==} 381 | engines: {node: '>=18.18.0'} 382 | 383 | '@nodelib/fs.walk@1.2.8': 384 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 385 | engines: {node: '>= 8'} 386 | 387 | '@nodelib/fs.walk@3.0.1': 388 | resolution: {integrity: sha512-nIh/M6Kh3ZtOmlY00DaUYB4xeeV6F3/ts1l29iwl3/cfyY/OuCfUx+v08zgx8TKPTifXRcjjqVQ4KB2zOYSbyw==} 389 | engines: {node: '>=18.18.0'} 390 | 391 | '@pkgjs/parseargs@0.11.0': 392 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 393 | engines: {node: '>=14'} 394 | 395 | '@rollup/rollup-android-arm-eabi@4.35.0': 396 | resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} 397 | cpu: [arm] 398 | os: [android] 399 | 400 | '@rollup/rollup-android-arm64@4.35.0': 401 | resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} 402 | cpu: [arm64] 403 | os: [android] 404 | 405 | '@rollup/rollup-darwin-arm64@4.35.0': 406 | resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} 407 | cpu: [arm64] 408 | os: [darwin] 409 | 410 | '@rollup/rollup-darwin-x64@4.35.0': 411 | resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} 412 | cpu: [x64] 413 | os: [darwin] 414 | 415 | '@rollup/rollup-freebsd-arm64@4.35.0': 416 | resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} 417 | cpu: [arm64] 418 | os: [freebsd] 419 | 420 | '@rollup/rollup-freebsd-x64@4.35.0': 421 | resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} 422 | cpu: [x64] 423 | os: [freebsd] 424 | 425 | '@rollup/rollup-linux-arm-gnueabihf@4.35.0': 426 | resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} 427 | cpu: [arm] 428 | os: [linux] 429 | 430 | '@rollup/rollup-linux-arm-musleabihf@4.35.0': 431 | resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} 432 | cpu: [arm] 433 | os: [linux] 434 | 435 | '@rollup/rollup-linux-arm64-gnu@4.35.0': 436 | resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} 437 | cpu: [arm64] 438 | os: [linux] 439 | 440 | '@rollup/rollup-linux-arm64-musl@4.35.0': 441 | resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} 442 | cpu: [arm64] 443 | os: [linux] 444 | 445 | '@rollup/rollup-linux-loongarch64-gnu@4.35.0': 446 | resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} 447 | cpu: [loong64] 448 | os: [linux] 449 | 450 | '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': 451 | resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} 452 | cpu: [ppc64] 453 | os: [linux] 454 | 455 | '@rollup/rollup-linux-riscv64-gnu@4.35.0': 456 | resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} 457 | cpu: [riscv64] 458 | os: [linux] 459 | 460 | '@rollup/rollup-linux-s390x-gnu@4.35.0': 461 | resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} 462 | cpu: [s390x] 463 | os: [linux] 464 | 465 | '@rollup/rollup-linux-x64-gnu@4.35.0': 466 | resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} 467 | cpu: [x64] 468 | os: [linux] 469 | 470 | '@rollup/rollup-linux-x64-musl@4.35.0': 471 | resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} 472 | cpu: [x64] 473 | os: [linux] 474 | 475 | '@rollup/rollup-win32-arm64-msvc@4.35.0': 476 | resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} 477 | cpu: [arm64] 478 | os: [win32] 479 | 480 | '@rollup/rollup-win32-ia32-msvc@4.35.0': 481 | resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} 482 | cpu: [ia32] 483 | os: [win32] 484 | 485 | '@rollup/rollup-win32-x64-msvc@4.35.0': 486 | resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} 487 | cpu: [x64] 488 | os: [win32] 489 | 490 | '@stylistic/eslint-plugin@4.2.0': 491 | resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==} 492 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 493 | peerDependencies: 494 | eslint: '>=9.0.0' 495 | 496 | '@types/eslint@9.6.1': 497 | resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} 498 | 499 | '@types/estree@1.0.6': 500 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 501 | 502 | '@types/json-schema@7.0.15': 503 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 504 | 505 | '@types/node@22.13.10': 506 | resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} 507 | 508 | '@typescript-eslint/eslint-plugin@8.27.0': 509 | resolution: {integrity: sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==} 510 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 511 | peerDependencies: 512 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 513 | eslint: ^8.57.0 || ^9.0.0 514 | typescript: '>=4.8.4 <5.9.0' 515 | 516 | '@typescript-eslint/parser@8.27.0': 517 | resolution: {integrity: sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==} 518 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 519 | peerDependencies: 520 | eslint: ^8.57.0 || ^9.0.0 521 | typescript: '>=4.8.4 <5.9.0' 522 | 523 | '@typescript-eslint/scope-manager@8.26.1': 524 | resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} 525 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 526 | 527 | '@typescript-eslint/scope-manager@8.27.0': 528 | resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} 529 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 530 | 531 | '@typescript-eslint/type-utils@8.27.0': 532 | resolution: {integrity: sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==} 533 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 534 | peerDependencies: 535 | eslint: ^8.57.0 || ^9.0.0 536 | typescript: '>=4.8.4 <5.9.0' 537 | 538 | '@typescript-eslint/types@8.26.1': 539 | resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} 540 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 541 | 542 | '@typescript-eslint/types@8.27.0': 543 | resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} 544 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 545 | 546 | '@typescript-eslint/typescript-estree@8.26.1': 547 | resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} 548 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 549 | peerDependencies: 550 | typescript: '>=4.8.4 <5.9.0' 551 | 552 | '@typescript-eslint/typescript-estree@8.27.0': 553 | resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} 554 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 555 | peerDependencies: 556 | typescript: '>=4.8.4 <5.9.0' 557 | 558 | '@typescript-eslint/utils@8.26.1': 559 | resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} 560 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 561 | peerDependencies: 562 | eslint: ^8.57.0 || ^9.0.0 563 | typescript: '>=4.8.4 <5.9.0' 564 | 565 | '@typescript-eslint/utils@8.27.0': 566 | resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} 567 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 568 | peerDependencies: 569 | eslint: ^8.57.0 || ^9.0.0 570 | typescript: '>=4.8.4 <5.9.0' 571 | 572 | '@typescript-eslint/visitor-keys@8.26.1': 573 | resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} 574 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 575 | 576 | '@typescript-eslint/visitor-keys@8.27.0': 577 | resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} 578 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 579 | 580 | '@zeit/schemas@2.36.0': 581 | resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} 582 | 583 | accepts@1.3.8: 584 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 585 | engines: {node: '>= 0.6'} 586 | 587 | acorn-jsx@5.3.2: 588 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 589 | peerDependencies: 590 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 591 | 592 | acorn@8.14.1: 593 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 594 | engines: {node: '>=0.4.0'} 595 | hasBin: true 596 | 597 | ajv@6.12.6: 598 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 599 | 600 | ajv@8.12.0: 601 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 602 | 603 | ansi-align@3.0.1: 604 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 605 | 606 | ansi-regex@5.0.1: 607 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 608 | engines: {node: '>=8'} 609 | 610 | ansi-regex@6.1.0: 611 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 612 | engines: {node: '>=12'} 613 | 614 | ansi-styles@4.3.0: 615 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 616 | engines: {node: '>=8'} 617 | 618 | ansi-styles@6.2.1: 619 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 620 | engines: {node: '>=12'} 621 | 622 | ansis@3.17.0: 623 | resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} 624 | engines: {node: '>=14'} 625 | 626 | any-promise@1.3.0: 627 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 628 | 629 | arch@2.2.0: 630 | resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} 631 | 632 | arg@5.0.2: 633 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 634 | 635 | argparse@2.0.1: 636 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 637 | 638 | balanced-match@1.0.2: 639 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 640 | 641 | birecord@0.1.1: 642 | resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} 643 | 644 | boxen@7.0.0: 645 | resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} 646 | engines: {node: '>=14.16'} 647 | 648 | brace-expansion@1.1.11: 649 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 650 | 651 | brace-expansion@2.0.1: 652 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 653 | 654 | braces@3.0.3: 655 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 656 | engines: {node: '>=8'} 657 | 658 | bundle-name@4.1.0: 659 | resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} 660 | engines: {node: '>=18'} 661 | 662 | bundle-require@5.1.0: 663 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} 664 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 665 | peerDependencies: 666 | esbuild: '>=0.18' 667 | 668 | bytes@3.0.0: 669 | resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} 670 | engines: {node: '>= 0.8'} 671 | 672 | cac@6.7.14: 673 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 674 | engines: {node: '>=8'} 675 | 676 | callsites@3.1.0: 677 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 678 | engines: {node: '>=6'} 679 | 680 | camelcase@7.0.1: 681 | resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} 682 | engines: {node: '>=14.16'} 683 | 684 | chalk-template@0.4.0: 685 | resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} 686 | engines: {node: '>=12'} 687 | 688 | chalk@4.1.2: 689 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 690 | engines: {node: '>=10'} 691 | 692 | chalk@5.0.1: 693 | resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} 694 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 695 | 696 | chokidar@4.0.3: 697 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 698 | engines: {node: '>= 14.16.0'} 699 | 700 | cli-boxes@3.0.0: 701 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 702 | engines: {node: '>=10'} 703 | 704 | clipboardy@3.0.0: 705 | resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} 706 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 707 | 708 | color-convert@2.0.1: 709 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 710 | engines: {node: '>=7.0.0'} 711 | 712 | color-name@1.1.4: 713 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 714 | 715 | commander@4.1.1: 716 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 717 | engines: {node: '>= 6'} 718 | 719 | compare-versions@6.1.1: 720 | resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} 721 | 722 | compressible@2.0.18: 723 | resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} 724 | engines: {node: '>= 0.6'} 725 | 726 | compression@1.7.4: 727 | resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} 728 | engines: {node: '>= 0.8.0'} 729 | 730 | concat-map@0.0.1: 731 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 732 | 733 | confbox@0.1.8: 734 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 735 | 736 | confbox@0.2.1: 737 | resolution: {integrity: sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==} 738 | 739 | consola@3.4.0: 740 | resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} 741 | engines: {node: ^14.18.0 || >=16.10.0} 742 | 743 | content-disposition@0.5.2: 744 | resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} 745 | engines: {node: '>= 0.6'} 746 | 747 | cookie-es@1.2.2: 748 | resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} 749 | 750 | cross-spawn@7.0.6: 751 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 752 | engines: {node: '>= 8'} 753 | 754 | crossws@0.3.4: 755 | resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} 756 | 757 | debug@2.6.9: 758 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 759 | peerDependencies: 760 | supports-color: '*' 761 | peerDependenciesMeta: 762 | supports-color: 763 | optional: true 764 | 765 | debug@4.4.0: 766 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 767 | engines: {node: '>=6.0'} 768 | peerDependencies: 769 | supports-color: '*' 770 | peerDependenciesMeta: 771 | supports-color: 772 | optional: true 773 | 774 | deep-extend@0.6.0: 775 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 776 | engines: {node: '>=4.0.0'} 777 | 778 | deep-is@0.1.4: 779 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 780 | 781 | default-browser-id@5.0.0: 782 | resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} 783 | engines: {node: '>=18'} 784 | 785 | default-browser@5.2.1: 786 | resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} 787 | engines: {node: '>=18'} 788 | 789 | define-lazy-prop@3.0.0: 790 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 791 | engines: {node: '>=12'} 792 | 793 | defu@6.1.4: 794 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 795 | 796 | destr@2.0.3: 797 | resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} 798 | 799 | eastasianwidth@0.2.0: 800 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 801 | 802 | emoji-regex@8.0.0: 803 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 804 | 805 | emoji-regex@9.2.2: 806 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 807 | 808 | enhanced-resolve@5.18.1: 809 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 810 | engines: {node: '>=10.13.0'} 811 | 812 | esbuild@0.25.1: 813 | resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} 814 | engines: {node: '>=18'} 815 | hasBin: true 816 | 817 | escape-string-regexp@4.0.0: 818 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 819 | engines: {node: '>=10'} 820 | 821 | eslint-compat-utils@0.5.1: 822 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 823 | engines: {node: '>=12'} 824 | peerDependencies: 825 | eslint: '>=6.0.0' 826 | 827 | eslint-flat-config-utils@2.0.1: 828 | resolution: {integrity: sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==} 829 | 830 | eslint-plugin-antfu@3.1.1: 831 | resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} 832 | peerDependencies: 833 | eslint: '*' 834 | 835 | eslint-plugin-es-x@7.8.0: 836 | resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} 837 | engines: {node: ^14.18.0 || >=16.0.0} 838 | peerDependencies: 839 | eslint: '>=8' 840 | 841 | eslint-plugin-n@17.16.2: 842 | resolution: {integrity: sha512-iQM5Oj+9o0KaeLoObJC/uxNGpktZCkYiTTBo8PkRWq3HwNcRxwpvSDFjBhQ5+HLJzBTy+CLDC5+bw0Z5GyhlOQ==} 843 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 844 | peerDependencies: 845 | eslint: '>=8.23.0' 846 | 847 | eslint-plugin-perfectionist@4.10.1: 848 | resolution: {integrity: sha512-GXwFfL47RfBLZRGQdrvGZw9Ali2T2GPW8p4Gyj2fyWQ9396R/HgJMf0m9kn7D6WXRwrINfTDGLS+QYIeok9qEg==} 849 | engines: {node: ^18.0.0 || >=20.0.0} 850 | peerDependencies: 851 | eslint: '>=8.45.0' 852 | 853 | eslint-plugin-react-debug@1.37.0: 854 | resolution: {integrity: sha512-eSYMReTmv/sUkjKj3uW13iOzVSpLU9ccyTp45NG8HodHIOEPemlddfMNQQgluIWyTU25s5IvKA2xvEd91ViPgw==} 855 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 856 | peerDependencies: 857 | eslint: ^8.57.0 || ^9.0.0 858 | typescript: ^4.9.5 || ^5.3.3 859 | peerDependenciesMeta: 860 | typescript: 861 | optional: true 862 | 863 | eslint-plugin-react-dom@1.37.0: 864 | resolution: {integrity: sha512-kvBw7BBo+EmboRVqWcyXc1FIN2ogUVBSzy0RkSirN+l2Hg7t1+kTu7UHy70UvXpEDrdZyjL1WAgPYswB/m2Mng==} 865 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 866 | peerDependencies: 867 | eslint: ^8.57.0 || ^9.0.0 868 | typescript: ^4.9.5 || ^5.3.3 869 | peerDependenciesMeta: 870 | typescript: 871 | optional: true 872 | 873 | eslint-plugin-react-hooks-extra@1.37.0: 874 | resolution: {integrity: sha512-7+yFVVWQKv4te5CoGXSnkH2maVZ3FtZjXaimOvylPcjX5fiSA/m9H2Gt5mhlJ0BYlS9ptlKelFWBY7fk4Xdrgw==} 875 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 876 | peerDependencies: 877 | eslint: ^8.57.0 || ^9.0.0 878 | typescript: ^4.9.5 || ^5.3.3 879 | peerDependenciesMeta: 880 | typescript: 881 | optional: true 882 | 883 | eslint-plugin-react-hooks@5.2.0: 884 | resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} 885 | engines: {node: '>=10'} 886 | peerDependencies: 887 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 888 | 889 | eslint-plugin-react-naming-convention@1.37.0: 890 | resolution: {integrity: sha512-UxkwVHGHepAN90wzVwZRml9N/Lok3r7VCf0iincYR0EXbJStHLz/NlFqnd+k9UFxlFbJW/JK9bomkK4PNBk1Xw==} 891 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 892 | peerDependencies: 893 | eslint: ^8.57.0 || ^9.0.0 894 | typescript: ^4.9.5 || ^5.3.3 895 | peerDependenciesMeta: 896 | typescript: 897 | optional: true 898 | 899 | eslint-plugin-react-web-api@1.37.0: 900 | resolution: {integrity: sha512-wHyVWhlfg0Sy/kZixdqPPFBxoJrpMEAU8QUxuJFvTL9Pf7KYCaHrHg3UGEU7NQlL6o9ySIXmRpmWFljwvl259w==} 901 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 902 | peerDependencies: 903 | eslint: ^8.57.0 || ^9.0.0 904 | typescript: ^4.9.5 || ^5.3.3 905 | peerDependenciesMeta: 906 | typescript: 907 | optional: true 908 | 909 | eslint-plugin-react-x@1.37.0: 910 | resolution: {integrity: sha512-aq83nt5ZWbqPc2Zee1SSwPLmaZAZSEL8iJWa4iI7N9PoSMYaAzatoUZ+8gToNLnoFN8J3nESRE0FDIFZuoPRFA==} 911 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 912 | peerDependencies: 913 | eslint: ^8.57.0 || ^9.0.0 914 | ts-api-utils: ^2.0.1 915 | typescript: ^4.9.5 || ^5.3.3 916 | peerDependenciesMeta: 917 | ts-api-utils: 918 | optional: true 919 | typescript: 920 | optional: true 921 | 922 | eslint-scope@8.3.0: 923 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 924 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 925 | 926 | eslint-typegen@2.1.0: 927 | resolution: {integrity: sha512-tY9TTx07InS+mQ/+zYnCMHkdsS00GPaQy84PwHiQd2XWwXIptRExKcz1kI8eG1CGg1sBs9mONwSfbGMbvI4fNA==} 928 | peerDependencies: 929 | eslint: ^9.0.0 930 | 931 | eslint-visitor-keys@3.4.3: 932 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 933 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 934 | 935 | eslint-visitor-keys@4.2.0: 936 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 937 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 938 | 939 | eslint@9.22.0: 940 | resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==} 941 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 942 | hasBin: true 943 | peerDependencies: 944 | jiti: '*' 945 | peerDependenciesMeta: 946 | jiti: 947 | optional: true 948 | 949 | espree@10.3.0: 950 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 951 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 952 | 953 | esquery@1.6.0: 954 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 955 | engines: {node: '>=0.10'} 956 | 957 | esrecurse@4.3.0: 958 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 959 | engines: {node: '>=4.0'} 960 | 961 | estraverse@5.3.0: 962 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 963 | engines: {node: '>=4.0'} 964 | 965 | esutils@2.0.3: 966 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 967 | engines: {node: '>=0.10.0'} 968 | 969 | execa@5.1.1: 970 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 971 | engines: {node: '>=10'} 972 | 973 | exsolve@1.0.4: 974 | resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} 975 | 976 | fast-deep-equal@3.1.3: 977 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 978 | 979 | fast-glob@3.3.1: 980 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 981 | engines: {node: '>=8.6.0'} 982 | 983 | fast-glob@3.3.3: 984 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 985 | engines: {node: '>=8.6.0'} 986 | 987 | fast-json-stable-stringify@2.1.0: 988 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 989 | 990 | fast-levenshtein@2.0.6: 991 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 992 | 993 | fastq@1.19.1: 994 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 995 | 996 | fdir@6.4.3: 997 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 998 | peerDependencies: 999 | picomatch: ^3 || ^4 1000 | peerDependenciesMeta: 1001 | picomatch: 1002 | optional: true 1003 | 1004 | file-entry-cache@8.0.0: 1005 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1006 | engines: {node: '>=16.0.0'} 1007 | 1008 | fill-range@7.1.1: 1009 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1010 | engines: {node: '>=8'} 1011 | 1012 | find-up@5.0.0: 1013 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1014 | engines: {node: '>=10'} 1015 | 1016 | find-up@7.0.0: 1017 | resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} 1018 | engines: {node: '>=18'} 1019 | 1020 | flat-cache@4.0.1: 1021 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1022 | engines: {node: '>=16'} 1023 | 1024 | flatted@3.3.3: 1025 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1026 | 1027 | foreground-child@3.3.1: 1028 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 1029 | engines: {node: '>=14'} 1030 | 1031 | fsevents@2.3.3: 1032 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1033 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1034 | os: [darwin] 1035 | 1036 | get-port-please@3.1.2: 1037 | resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} 1038 | 1039 | get-stream@6.0.1: 1040 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1041 | engines: {node: '>=10'} 1042 | 1043 | get-tsconfig@4.10.0: 1044 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 1045 | 1046 | glob-parent@5.1.2: 1047 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1048 | engines: {node: '>= 6'} 1049 | 1050 | glob-parent@6.0.2: 1051 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1052 | engines: {node: '>=10.13.0'} 1053 | 1054 | glob@10.4.5: 1055 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1056 | hasBin: true 1057 | 1058 | globals@14.0.0: 1059 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1060 | engines: {node: '>=18'} 1061 | 1062 | globals@15.15.0: 1063 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1064 | engines: {node: '>=18'} 1065 | 1066 | globals@16.0.0: 1067 | resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} 1068 | engines: {node: '>=18'} 1069 | 1070 | graceful-fs@4.2.11: 1071 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1072 | 1073 | graphemer@1.4.0: 1074 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1075 | 1076 | h3@1.15.1: 1077 | resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} 1078 | 1079 | has-flag@4.0.0: 1080 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1081 | engines: {node: '>=8'} 1082 | 1083 | human-signals@2.1.0: 1084 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1085 | engines: {node: '>=10.17.0'} 1086 | 1087 | ignore@5.3.2: 1088 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1089 | engines: {node: '>= 4'} 1090 | 1091 | import-fresh@3.3.1: 1092 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1093 | engines: {node: '>=6'} 1094 | 1095 | imurmurhash@0.1.4: 1096 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1097 | engines: {node: '>=0.8.19'} 1098 | 1099 | ini@1.3.8: 1100 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 1101 | 1102 | iron-webcrypto@1.2.1: 1103 | resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} 1104 | 1105 | is-docker@2.2.1: 1106 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1107 | engines: {node: '>=8'} 1108 | hasBin: true 1109 | 1110 | is-docker@3.0.0: 1111 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1112 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1113 | hasBin: true 1114 | 1115 | is-extglob@2.1.1: 1116 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1117 | engines: {node: '>=0.10.0'} 1118 | 1119 | is-fullwidth-code-point@3.0.0: 1120 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1121 | engines: {node: '>=8'} 1122 | 1123 | is-glob@4.0.3: 1124 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1125 | engines: {node: '>=0.10.0'} 1126 | 1127 | is-inside-container@1.0.0: 1128 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 1129 | engines: {node: '>=14.16'} 1130 | hasBin: true 1131 | 1132 | is-number@7.0.0: 1133 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1134 | engines: {node: '>=0.12.0'} 1135 | 1136 | is-port-reachable@4.0.0: 1137 | resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} 1138 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1139 | 1140 | is-stream@2.0.1: 1141 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1142 | engines: {node: '>=8'} 1143 | 1144 | is-wsl@2.2.0: 1145 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1146 | engines: {node: '>=8'} 1147 | 1148 | is-wsl@3.1.0: 1149 | resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 1150 | engines: {node: '>=16'} 1151 | 1152 | isexe@2.0.0: 1153 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1154 | 1155 | jackspeak@3.4.3: 1156 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1157 | 1158 | joycon@3.1.1: 1159 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1160 | engines: {node: '>=10'} 1161 | 1162 | js-yaml@4.1.0: 1163 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1164 | hasBin: true 1165 | 1166 | json-buffer@3.0.1: 1167 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1168 | 1169 | json-schema-to-typescript-lite@14.1.0: 1170 | resolution: {integrity: sha512-b8K6P3aiLgiYKYcHacgZKrwPXPyjekqRPV5vkNfBt0EoohcOSXEbcuGzgi6KQmsAhuy5Mh2KMxofXodRhMxURA==} 1171 | 1172 | json-schema-traverse@0.4.1: 1173 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1174 | 1175 | json-schema-traverse@1.0.0: 1176 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1177 | 1178 | json-stable-stringify-without-jsonify@1.0.1: 1179 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1180 | 1181 | keyv@4.5.4: 1182 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1183 | 1184 | levn@0.4.1: 1185 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1186 | engines: {node: '>= 0.8.0'} 1187 | 1188 | lilconfig@3.1.3: 1189 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1190 | engines: {node: '>=14'} 1191 | 1192 | lines-and-columns@1.2.4: 1193 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1194 | 1195 | load-tsconfig@0.2.5: 1196 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1197 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1198 | 1199 | local-pkg@1.1.1: 1200 | resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} 1201 | engines: {node: '>=14'} 1202 | 1203 | locate-path@6.0.0: 1204 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1205 | engines: {node: '>=10'} 1206 | 1207 | locate-path@7.2.0: 1208 | resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} 1209 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1210 | 1211 | lodash.merge@4.6.2: 1212 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1213 | 1214 | lodash.sortby@4.7.0: 1215 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1216 | 1217 | lru-cache@10.4.3: 1218 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1219 | 1220 | merge-stream@2.0.0: 1221 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1222 | 1223 | merge2@1.4.1: 1224 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1225 | engines: {node: '>= 8'} 1226 | 1227 | micromatch@4.0.8: 1228 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1229 | engines: {node: '>=8.6'} 1230 | 1231 | mime-db@1.33.0: 1232 | resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} 1233 | engines: {node: '>= 0.6'} 1234 | 1235 | mime-db@1.52.0: 1236 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1237 | engines: {node: '>= 0.6'} 1238 | 1239 | mime-db@1.53.0: 1240 | resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} 1241 | engines: {node: '>= 0.6'} 1242 | 1243 | mime-types@2.1.18: 1244 | resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} 1245 | engines: {node: '>= 0.6'} 1246 | 1247 | mime-types@2.1.35: 1248 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1249 | engines: {node: '>= 0.6'} 1250 | 1251 | mimic-fn@2.1.0: 1252 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1253 | engines: {node: '>=6'} 1254 | 1255 | minimatch@3.1.2: 1256 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1257 | 1258 | minimatch@9.0.5: 1259 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1260 | engines: {node: '>=16 || 14 >=14.17'} 1261 | 1262 | minimist@1.2.8: 1263 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1264 | 1265 | minipass@7.1.2: 1266 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1267 | engines: {node: '>=16 || 14 >=14.17'} 1268 | 1269 | mlly@1.7.4: 1270 | resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} 1271 | 1272 | mrmime@2.0.1: 1273 | resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 1274 | engines: {node: '>=10'} 1275 | 1276 | ms@2.0.0: 1277 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1278 | 1279 | ms@2.1.3: 1280 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1281 | 1282 | mz@2.7.0: 1283 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1284 | 1285 | natural-compare@1.4.0: 1286 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1287 | 1288 | natural-orderby@5.0.0: 1289 | resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} 1290 | engines: {node: '>=18'} 1291 | 1292 | negotiator@0.6.3: 1293 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1294 | engines: {node: '>= 0.6'} 1295 | 1296 | node-mock-http@1.0.0: 1297 | resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} 1298 | 1299 | npm-run-path@4.0.1: 1300 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1301 | engines: {node: '>=8'} 1302 | 1303 | object-assign@4.1.1: 1304 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1305 | engines: {node: '>=0.10.0'} 1306 | 1307 | ohash@2.0.11: 1308 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1309 | 1310 | on-headers@1.0.2: 1311 | resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} 1312 | engines: {node: '>= 0.8'} 1313 | 1314 | onetime@5.1.2: 1315 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1316 | engines: {node: '>=6'} 1317 | 1318 | open@10.1.0: 1319 | resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} 1320 | engines: {node: '>=18'} 1321 | 1322 | optionator@0.9.4: 1323 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1324 | engines: {node: '>= 0.8.0'} 1325 | 1326 | p-limit@3.1.0: 1327 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1328 | engines: {node: '>=10'} 1329 | 1330 | p-limit@4.0.0: 1331 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 1332 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1333 | 1334 | p-locate@5.0.0: 1335 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1336 | engines: {node: '>=10'} 1337 | 1338 | p-locate@6.0.0: 1339 | resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} 1340 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1341 | 1342 | package-json-from-dist@1.0.1: 1343 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1344 | 1345 | parent-module@1.0.1: 1346 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1347 | engines: {node: '>=6'} 1348 | 1349 | path-exists@4.0.0: 1350 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1351 | engines: {node: '>=8'} 1352 | 1353 | path-exists@5.0.0: 1354 | resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 1355 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1356 | 1357 | path-is-inside@1.0.2: 1358 | resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} 1359 | 1360 | path-key@3.1.1: 1361 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1362 | engines: {node: '>=8'} 1363 | 1364 | path-scurry@1.11.1: 1365 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1366 | engines: {node: '>=16 || 14 >=14.18'} 1367 | 1368 | path-to-regexp@3.3.0: 1369 | resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} 1370 | 1371 | pathe@2.0.3: 1372 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1373 | 1374 | picocolors@1.1.1: 1375 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1376 | 1377 | picomatch@2.3.1: 1378 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1379 | engines: {node: '>=8.6'} 1380 | 1381 | picomatch@4.0.2: 1382 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1383 | engines: {node: '>=12'} 1384 | 1385 | pirates@4.0.6: 1386 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1387 | engines: {node: '>= 6'} 1388 | 1389 | pkg-types@1.3.1: 1390 | resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1391 | 1392 | pkg-types@2.1.0: 1393 | resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} 1394 | 1395 | postcss-load-config@6.0.1: 1396 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1397 | engines: {node: '>= 18'} 1398 | peerDependencies: 1399 | jiti: '>=1.21.0' 1400 | postcss: '>=8.0.9' 1401 | tsx: ^4.8.1 1402 | yaml: ^2.4.2 1403 | peerDependenciesMeta: 1404 | jiti: 1405 | optional: true 1406 | postcss: 1407 | optional: true 1408 | tsx: 1409 | optional: true 1410 | yaml: 1411 | optional: true 1412 | 1413 | prelude-ls@1.2.1: 1414 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1415 | engines: {node: '>= 0.8.0'} 1416 | 1417 | punycode@2.3.1: 1418 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1419 | engines: {node: '>=6'} 1420 | 1421 | quansync@0.2.8: 1422 | resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==} 1423 | 1424 | queue-microtask@1.2.3: 1425 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1426 | 1427 | radix3@1.1.2: 1428 | resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} 1429 | 1430 | range-parser@1.2.0: 1431 | resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} 1432 | engines: {node: '>= 0.6'} 1433 | 1434 | rc@1.2.8: 1435 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 1436 | hasBin: true 1437 | 1438 | readdirp@4.1.2: 1439 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1440 | engines: {node: '>= 14.18.0'} 1441 | 1442 | registry-auth-token@3.3.2: 1443 | resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} 1444 | 1445 | registry-url@3.1.0: 1446 | resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} 1447 | engines: {node: '>=0.10.0'} 1448 | 1449 | require-from-string@2.0.2: 1450 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1451 | engines: {node: '>=0.10.0'} 1452 | 1453 | resolve-from@4.0.0: 1454 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1455 | engines: {node: '>=4'} 1456 | 1457 | resolve-from@5.0.0: 1458 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1459 | engines: {node: '>=8'} 1460 | 1461 | resolve-pkg-maps@1.0.0: 1462 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1463 | 1464 | reusify@1.1.0: 1465 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1466 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1467 | 1468 | rollup@4.35.0: 1469 | resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} 1470 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1471 | hasBin: true 1472 | 1473 | run-applescript@7.0.0: 1474 | resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} 1475 | engines: {node: '>=18'} 1476 | 1477 | run-parallel@1.2.0: 1478 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1479 | 1480 | safe-buffer@5.1.2: 1481 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1482 | 1483 | safe-buffer@5.2.1: 1484 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1485 | 1486 | semver@7.7.1: 1487 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1488 | engines: {node: '>=10'} 1489 | hasBin: true 1490 | 1491 | serve-handler@6.1.6: 1492 | resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} 1493 | 1494 | serve@14.2.4: 1495 | resolution: {integrity: sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==} 1496 | engines: {node: '>= 14'} 1497 | hasBin: true 1498 | 1499 | shebang-command@2.0.0: 1500 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1501 | engines: {node: '>=8'} 1502 | 1503 | shebang-regex@3.0.0: 1504 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1505 | engines: {node: '>=8'} 1506 | 1507 | signal-exit@3.0.7: 1508 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1509 | 1510 | signal-exit@4.1.0: 1511 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1512 | engines: {node: '>=14'} 1513 | 1514 | source-map@0.8.0-beta.0: 1515 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1516 | engines: {node: '>= 8'} 1517 | 1518 | string-ts@2.2.1: 1519 | resolution: {integrity: sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==} 1520 | 1521 | string-width@4.2.3: 1522 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1523 | engines: {node: '>=8'} 1524 | 1525 | string-width@5.1.2: 1526 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1527 | engines: {node: '>=12'} 1528 | 1529 | strip-ansi@6.0.1: 1530 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1531 | engines: {node: '>=8'} 1532 | 1533 | strip-ansi@7.1.0: 1534 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1535 | engines: {node: '>=12'} 1536 | 1537 | strip-final-newline@2.0.0: 1538 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1539 | engines: {node: '>=6'} 1540 | 1541 | strip-json-comments@2.0.1: 1542 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 1543 | engines: {node: '>=0.10.0'} 1544 | 1545 | strip-json-comments@3.1.1: 1546 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1547 | engines: {node: '>=8'} 1548 | 1549 | sucrase@3.35.0: 1550 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1551 | engines: {node: '>=16 || 14 >=14.17'} 1552 | hasBin: true 1553 | 1554 | supports-color@7.2.0: 1555 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1556 | engines: {node: '>=8'} 1557 | 1558 | tapable@2.2.1: 1559 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 1560 | engines: {node: '>=6'} 1561 | 1562 | thenify-all@1.6.0: 1563 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1564 | engines: {node: '>=0.8'} 1565 | 1566 | thenify@3.3.1: 1567 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1568 | 1569 | tinyexec@0.3.2: 1570 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1571 | 1572 | tinyglobby@0.2.12: 1573 | resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} 1574 | engines: {node: '>=12.0.0'} 1575 | 1576 | to-regex-range@5.0.1: 1577 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1578 | engines: {node: '>=8.0'} 1579 | 1580 | tr46@1.0.1: 1581 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1582 | 1583 | tree-kill@1.2.2: 1584 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1585 | hasBin: true 1586 | 1587 | ts-api-utils@2.0.1: 1588 | resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} 1589 | engines: {node: '>=18.12'} 1590 | peerDependencies: 1591 | typescript: '>=4.8.4' 1592 | 1593 | ts-api-utils@2.1.0: 1594 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1595 | engines: {node: '>=18.12'} 1596 | peerDependencies: 1597 | typescript: '>=4.8.4' 1598 | 1599 | ts-interface-checker@0.1.13: 1600 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1601 | 1602 | ts-pattern@5.6.2: 1603 | resolution: {integrity: sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==} 1604 | 1605 | tsup@8.4.0: 1606 | resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==} 1607 | engines: {node: '>=18'} 1608 | hasBin: true 1609 | peerDependencies: 1610 | '@microsoft/api-extractor': ^7.36.0 1611 | '@swc/core': ^1 1612 | postcss: ^8.4.12 1613 | typescript: '>=4.5.0' 1614 | peerDependenciesMeta: 1615 | '@microsoft/api-extractor': 1616 | optional: true 1617 | '@swc/core': 1618 | optional: true 1619 | postcss: 1620 | optional: true 1621 | typescript: 1622 | optional: true 1623 | 1624 | tsx@4.19.3: 1625 | resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} 1626 | engines: {node: '>=18.0.0'} 1627 | hasBin: true 1628 | 1629 | type-check@0.4.0: 1630 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1631 | engines: {node: '>= 0.8.0'} 1632 | 1633 | type-fest@2.19.0: 1634 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} 1635 | engines: {node: '>=12.20'} 1636 | 1637 | typescript@5.8.2: 1638 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} 1639 | engines: {node: '>=14.17'} 1640 | hasBin: true 1641 | 1642 | ufo@1.5.4: 1643 | resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} 1644 | 1645 | uncrypto@0.1.3: 1646 | resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} 1647 | 1648 | undici-types@6.20.0: 1649 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1650 | 1651 | unicorn-magic@0.1.0: 1652 | resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} 1653 | engines: {node: '>=18'} 1654 | 1655 | update-check@1.5.4: 1656 | resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} 1657 | 1658 | uri-js@4.4.1: 1659 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1660 | 1661 | vary@1.1.2: 1662 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1663 | engines: {node: '>= 0.8'} 1664 | 1665 | webidl-conversions@4.0.2: 1666 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1667 | 1668 | whatwg-url@7.1.0: 1669 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1670 | 1671 | which@2.0.2: 1672 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1673 | engines: {node: '>= 8'} 1674 | hasBin: true 1675 | 1676 | widest-line@4.0.1: 1677 | resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} 1678 | engines: {node: '>=12'} 1679 | 1680 | word-wrap@1.2.5: 1681 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1682 | engines: {node: '>=0.10.0'} 1683 | 1684 | wrap-ansi@7.0.0: 1685 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1686 | engines: {node: '>=10'} 1687 | 1688 | wrap-ansi@8.1.0: 1689 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1690 | engines: {node: '>=12'} 1691 | 1692 | ws@8.18.1: 1693 | resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} 1694 | engines: {node: '>=10.0.0'} 1695 | peerDependencies: 1696 | bufferutil: ^4.0.1 1697 | utf-8-validate: '>=5.0.2' 1698 | peerDependenciesMeta: 1699 | bufferutil: 1700 | optional: true 1701 | utf-8-validate: 1702 | optional: true 1703 | 1704 | yocto-queue@0.1.0: 1705 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1706 | engines: {node: '>=10'} 1707 | 1708 | yocto-queue@1.2.0: 1709 | resolution: {integrity: sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==} 1710 | engines: {node: '>=12.20'} 1711 | 1712 | snapshots: 1713 | 1714 | '@apidevtools/json-schema-ref-parser@11.9.3': 1715 | dependencies: 1716 | '@jsdevtools/ono': 7.1.3 1717 | '@types/json-schema': 7.0.15 1718 | js-yaml: 4.1.0 1719 | 1720 | '@esbuild/aix-ppc64@0.25.1': 1721 | optional: true 1722 | 1723 | '@esbuild/android-arm64@0.25.1': 1724 | optional: true 1725 | 1726 | '@esbuild/android-arm@0.25.1': 1727 | optional: true 1728 | 1729 | '@esbuild/android-x64@0.25.1': 1730 | optional: true 1731 | 1732 | '@esbuild/darwin-arm64@0.25.1': 1733 | optional: true 1734 | 1735 | '@esbuild/darwin-x64@0.25.1': 1736 | optional: true 1737 | 1738 | '@esbuild/freebsd-arm64@0.25.1': 1739 | optional: true 1740 | 1741 | '@esbuild/freebsd-x64@0.25.1': 1742 | optional: true 1743 | 1744 | '@esbuild/linux-arm64@0.25.1': 1745 | optional: true 1746 | 1747 | '@esbuild/linux-arm@0.25.1': 1748 | optional: true 1749 | 1750 | '@esbuild/linux-ia32@0.25.1': 1751 | optional: true 1752 | 1753 | '@esbuild/linux-loong64@0.25.1': 1754 | optional: true 1755 | 1756 | '@esbuild/linux-mips64el@0.25.1': 1757 | optional: true 1758 | 1759 | '@esbuild/linux-ppc64@0.25.1': 1760 | optional: true 1761 | 1762 | '@esbuild/linux-riscv64@0.25.1': 1763 | optional: true 1764 | 1765 | '@esbuild/linux-s390x@0.25.1': 1766 | optional: true 1767 | 1768 | '@esbuild/linux-x64@0.25.1': 1769 | optional: true 1770 | 1771 | '@esbuild/netbsd-arm64@0.25.1': 1772 | optional: true 1773 | 1774 | '@esbuild/netbsd-x64@0.25.1': 1775 | optional: true 1776 | 1777 | '@esbuild/openbsd-arm64@0.25.1': 1778 | optional: true 1779 | 1780 | '@esbuild/openbsd-x64@0.25.1': 1781 | optional: true 1782 | 1783 | '@esbuild/sunos-x64@0.25.1': 1784 | optional: true 1785 | 1786 | '@esbuild/win32-arm64@0.25.1': 1787 | optional: true 1788 | 1789 | '@esbuild/win32-ia32@0.25.1': 1790 | optional: true 1791 | 1792 | '@esbuild/win32-x64@0.25.1': 1793 | optional: true 1794 | 1795 | '@eslint-community/eslint-utils@4.4.1(eslint@9.22.0)': 1796 | dependencies: 1797 | eslint: 9.22.0 1798 | eslint-visitor-keys: 3.4.3 1799 | 1800 | '@eslint-community/eslint-utils@4.5.1(eslint@9.22.0)': 1801 | dependencies: 1802 | eslint: 9.22.0 1803 | eslint-visitor-keys: 3.4.3 1804 | 1805 | '@eslint-community/regexpp@4.12.1': {} 1806 | 1807 | '@eslint-react/ast@1.37.0(eslint@9.22.0)(typescript@5.8.2)': 1808 | dependencies: 1809 | '@eslint-react/eff': 1.37.0 1810 | '@typescript-eslint/types': 8.27.0 1811 | '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) 1812 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1813 | string-ts: 2.2.1 1814 | ts-pattern: 5.6.2 1815 | transitivePeerDependencies: 1816 | - eslint 1817 | - supports-color 1818 | - typescript 1819 | 1820 | '@eslint-react/core@1.37.0(eslint@9.22.0)(typescript@5.8.2)': 1821 | dependencies: 1822 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1823 | '@eslint-react/eff': 1.37.0 1824 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1825 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1826 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1827 | '@typescript-eslint/scope-manager': 8.27.0 1828 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1829 | '@typescript-eslint/types': 8.27.0 1830 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1831 | birecord: 0.1.1 1832 | ts-pattern: 5.6.2 1833 | transitivePeerDependencies: 1834 | - eslint 1835 | - supports-color 1836 | - typescript 1837 | 1838 | '@eslint-react/eff@1.37.0': {} 1839 | 1840 | '@eslint-react/eslint-plugin@1.37.0(eslint@9.22.0)(ts-api-utils@2.1.0(typescript@5.8.2))(typescript@5.8.2)': 1841 | dependencies: 1842 | '@eslint-react/eff': 1.37.0 1843 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1844 | '@typescript-eslint/scope-manager': 8.27.0 1845 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1846 | '@typescript-eslint/types': 8.27.0 1847 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1848 | eslint: 9.22.0 1849 | eslint-plugin-react-debug: 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1850 | eslint-plugin-react-dom: 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1851 | eslint-plugin-react-hooks-extra: 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1852 | eslint-plugin-react-naming-convention: 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1853 | eslint-plugin-react-web-api: 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1854 | eslint-plugin-react-x: 1.37.0(eslint@9.22.0)(ts-api-utils@2.1.0(typescript@5.8.2))(typescript@5.8.2) 1855 | optionalDependencies: 1856 | typescript: 5.8.2 1857 | transitivePeerDependencies: 1858 | - supports-color 1859 | - ts-api-utils 1860 | 1861 | '@eslint-react/jsx@1.37.0(eslint@9.22.0)(typescript@5.8.2)': 1862 | dependencies: 1863 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1864 | '@eslint-react/eff': 1.37.0 1865 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1866 | '@typescript-eslint/scope-manager': 8.27.0 1867 | '@typescript-eslint/types': 8.27.0 1868 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1869 | ts-pattern: 5.6.2 1870 | transitivePeerDependencies: 1871 | - eslint 1872 | - supports-color 1873 | - typescript 1874 | 1875 | '@eslint-react/shared@1.37.0(eslint@9.22.0)(typescript@5.8.2)': 1876 | dependencies: 1877 | '@eslint-react/eff': 1.37.0 1878 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1879 | picomatch: 4.0.2 1880 | ts-pattern: 5.6.2 1881 | transitivePeerDependencies: 1882 | - eslint 1883 | - supports-color 1884 | - typescript 1885 | 1886 | '@eslint-react/var@1.37.0(eslint@9.22.0)(typescript@5.8.2)': 1887 | dependencies: 1888 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 1889 | '@eslint-react/eff': 1.37.0 1890 | '@typescript-eslint/scope-manager': 8.27.0 1891 | '@typescript-eslint/types': 8.27.0 1892 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 1893 | string-ts: 2.2.1 1894 | ts-pattern: 5.6.2 1895 | transitivePeerDependencies: 1896 | - eslint 1897 | - supports-color 1898 | - typescript 1899 | 1900 | '@eslint/config-array@0.19.2': 1901 | dependencies: 1902 | '@eslint/object-schema': 2.1.6 1903 | debug: 4.4.0 1904 | minimatch: 3.1.2 1905 | transitivePeerDependencies: 1906 | - supports-color 1907 | 1908 | '@eslint/config-helpers@0.1.0': {} 1909 | 1910 | '@eslint/config-inspector@1.0.2(eslint@9.22.0)': 1911 | dependencies: 1912 | '@nodelib/fs.walk': 3.0.1 1913 | ansis: 3.17.0 1914 | bundle-require: 5.1.0(esbuild@0.25.1) 1915 | cac: 6.7.14 1916 | chokidar: 4.0.3 1917 | debug: 4.4.0 1918 | esbuild: 0.25.1 1919 | eslint: 9.22.0 1920 | find-up: 7.0.0 1921 | get-port-please: 3.1.2 1922 | h3: 1.15.1 1923 | mlly: 1.7.4 1924 | mrmime: 2.0.1 1925 | open: 10.1.0 1926 | tinyglobby: 0.2.12 1927 | ws: 8.18.1 1928 | transitivePeerDependencies: 1929 | - bufferutil 1930 | - supports-color 1931 | - utf-8-validate 1932 | 1933 | '@eslint/core@0.12.0': 1934 | dependencies: 1935 | '@types/json-schema': 7.0.15 1936 | 1937 | '@eslint/eslintrc@3.3.0': 1938 | dependencies: 1939 | ajv: 6.12.6 1940 | debug: 4.4.0 1941 | espree: 10.3.0 1942 | globals: 14.0.0 1943 | ignore: 5.3.2 1944 | import-fresh: 3.3.1 1945 | js-yaml: 4.1.0 1946 | minimatch: 3.1.2 1947 | strip-json-comments: 3.1.1 1948 | transitivePeerDependencies: 1949 | - supports-color 1950 | 1951 | '@eslint/js@9.22.0': {} 1952 | 1953 | '@eslint/object-schema@2.1.6': {} 1954 | 1955 | '@eslint/plugin-kit@0.2.7': 1956 | dependencies: 1957 | '@eslint/core': 0.12.0 1958 | levn: 0.4.1 1959 | 1960 | '@humanfs/core@0.19.1': {} 1961 | 1962 | '@humanfs/node@0.16.6': 1963 | dependencies: 1964 | '@humanfs/core': 0.19.1 1965 | '@humanwhocodes/retry': 0.3.1 1966 | 1967 | '@humanwhocodes/module-importer@1.0.1': {} 1968 | 1969 | '@humanwhocodes/retry@0.3.1': {} 1970 | 1971 | '@humanwhocodes/retry@0.4.2': {} 1972 | 1973 | '@isaacs/cliui@8.0.2': 1974 | dependencies: 1975 | string-width: 5.1.2 1976 | string-width-cjs: string-width@4.2.3 1977 | strip-ansi: 7.1.0 1978 | strip-ansi-cjs: strip-ansi@6.0.1 1979 | wrap-ansi: 8.1.0 1980 | wrap-ansi-cjs: wrap-ansi@7.0.0 1981 | 1982 | '@jridgewell/gen-mapping@0.3.8': 1983 | dependencies: 1984 | '@jridgewell/set-array': 1.2.1 1985 | '@jridgewell/sourcemap-codec': 1.5.0 1986 | '@jridgewell/trace-mapping': 0.3.25 1987 | 1988 | '@jridgewell/resolve-uri@3.1.2': {} 1989 | 1990 | '@jridgewell/set-array@1.2.1': {} 1991 | 1992 | '@jridgewell/sourcemap-codec@1.5.0': {} 1993 | 1994 | '@jridgewell/trace-mapping@0.3.25': 1995 | dependencies: 1996 | '@jridgewell/resolve-uri': 3.1.2 1997 | '@jridgewell/sourcemap-codec': 1.5.0 1998 | 1999 | '@jsdevtools/ono@7.1.3': {} 2000 | 2001 | '@next/eslint-plugin-next@15.2.3': 2002 | dependencies: 2003 | fast-glob: 3.3.1 2004 | 2005 | '@nodelib/fs.scandir@2.1.5': 2006 | dependencies: 2007 | '@nodelib/fs.stat': 2.0.5 2008 | run-parallel: 1.2.0 2009 | 2010 | '@nodelib/fs.scandir@4.0.1': 2011 | dependencies: 2012 | '@nodelib/fs.stat': 4.0.0 2013 | run-parallel: 1.2.0 2014 | 2015 | '@nodelib/fs.stat@2.0.5': {} 2016 | 2017 | '@nodelib/fs.stat@4.0.0': {} 2018 | 2019 | '@nodelib/fs.walk@1.2.8': 2020 | dependencies: 2021 | '@nodelib/fs.scandir': 2.1.5 2022 | fastq: 1.19.1 2023 | 2024 | '@nodelib/fs.walk@3.0.1': 2025 | dependencies: 2026 | '@nodelib/fs.scandir': 4.0.1 2027 | fastq: 1.19.1 2028 | 2029 | '@pkgjs/parseargs@0.11.0': 2030 | optional: true 2031 | 2032 | '@rollup/rollup-android-arm-eabi@4.35.0': 2033 | optional: true 2034 | 2035 | '@rollup/rollup-android-arm64@4.35.0': 2036 | optional: true 2037 | 2038 | '@rollup/rollup-darwin-arm64@4.35.0': 2039 | optional: true 2040 | 2041 | '@rollup/rollup-darwin-x64@4.35.0': 2042 | optional: true 2043 | 2044 | '@rollup/rollup-freebsd-arm64@4.35.0': 2045 | optional: true 2046 | 2047 | '@rollup/rollup-freebsd-x64@4.35.0': 2048 | optional: true 2049 | 2050 | '@rollup/rollup-linux-arm-gnueabihf@4.35.0': 2051 | optional: true 2052 | 2053 | '@rollup/rollup-linux-arm-musleabihf@4.35.0': 2054 | optional: true 2055 | 2056 | '@rollup/rollup-linux-arm64-gnu@4.35.0': 2057 | optional: true 2058 | 2059 | '@rollup/rollup-linux-arm64-musl@4.35.0': 2060 | optional: true 2061 | 2062 | '@rollup/rollup-linux-loongarch64-gnu@4.35.0': 2063 | optional: true 2064 | 2065 | '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': 2066 | optional: true 2067 | 2068 | '@rollup/rollup-linux-riscv64-gnu@4.35.0': 2069 | optional: true 2070 | 2071 | '@rollup/rollup-linux-s390x-gnu@4.35.0': 2072 | optional: true 2073 | 2074 | '@rollup/rollup-linux-x64-gnu@4.35.0': 2075 | optional: true 2076 | 2077 | '@rollup/rollup-linux-x64-musl@4.35.0': 2078 | optional: true 2079 | 2080 | '@rollup/rollup-win32-arm64-msvc@4.35.0': 2081 | optional: true 2082 | 2083 | '@rollup/rollup-win32-ia32-msvc@4.35.0': 2084 | optional: true 2085 | 2086 | '@rollup/rollup-win32-x64-msvc@4.35.0': 2087 | optional: true 2088 | 2089 | '@stylistic/eslint-plugin@4.2.0(eslint@9.22.0)(typescript@5.8.2)': 2090 | dependencies: 2091 | '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 2092 | eslint: 9.22.0 2093 | eslint-visitor-keys: 4.2.0 2094 | espree: 10.3.0 2095 | estraverse: 5.3.0 2096 | picomatch: 4.0.2 2097 | transitivePeerDependencies: 2098 | - supports-color 2099 | - typescript 2100 | 2101 | '@types/eslint@9.6.1': 2102 | dependencies: 2103 | '@types/estree': 1.0.6 2104 | '@types/json-schema': 7.0.15 2105 | 2106 | '@types/estree@1.0.6': {} 2107 | 2108 | '@types/json-schema@7.0.15': {} 2109 | 2110 | '@types/node@22.13.10': 2111 | dependencies: 2112 | undici-types: 6.20.0 2113 | 2114 | '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)': 2115 | dependencies: 2116 | '@eslint-community/regexpp': 4.12.1 2117 | '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2118 | '@typescript-eslint/scope-manager': 8.27.0 2119 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2120 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2121 | '@typescript-eslint/visitor-keys': 8.27.0 2122 | eslint: 9.22.0 2123 | graphemer: 1.4.0 2124 | ignore: 5.3.2 2125 | natural-compare: 1.4.0 2126 | ts-api-utils: 2.1.0(typescript@5.8.2) 2127 | typescript: 5.8.2 2128 | transitivePeerDependencies: 2129 | - supports-color 2130 | 2131 | '@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2)': 2132 | dependencies: 2133 | '@typescript-eslint/scope-manager': 8.27.0 2134 | '@typescript-eslint/types': 8.27.0 2135 | '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) 2136 | '@typescript-eslint/visitor-keys': 8.27.0 2137 | debug: 4.4.0 2138 | eslint: 9.22.0 2139 | typescript: 5.8.2 2140 | transitivePeerDependencies: 2141 | - supports-color 2142 | 2143 | '@typescript-eslint/scope-manager@8.26.1': 2144 | dependencies: 2145 | '@typescript-eslint/types': 8.26.1 2146 | '@typescript-eslint/visitor-keys': 8.26.1 2147 | 2148 | '@typescript-eslint/scope-manager@8.27.0': 2149 | dependencies: 2150 | '@typescript-eslint/types': 8.27.0 2151 | '@typescript-eslint/visitor-keys': 8.27.0 2152 | 2153 | '@typescript-eslint/type-utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)': 2154 | dependencies: 2155 | '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) 2156 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2157 | debug: 4.4.0 2158 | eslint: 9.22.0 2159 | ts-api-utils: 2.1.0(typescript@5.8.2) 2160 | typescript: 5.8.2 2161 | transitivePeerDependencies: 2162 | - supports-color 2163 | 2164 | '@typescript-eslint/types@8.26.1': {} 2165 | 2166 | '@typescript-eslint/types@8.27.0': {} 2167 | 2168 | '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)': 2169 | dependencies: 2170 | '@typescript-eslint/types': 8.26.1 2171 | '@typescript-eslint/visitor-keys': 8.26.1 2172 | debug: 4.4.0 2173 | fast-glob: 3.3.3 2174 | is-glob: 4.0.3 2175 | minimatch: 9.0.5 2176 | semver: 7.7.1 2177 | ts-api-utils: 2.0.1(typescript@5.8.2) 2178 | typescript: 5.8.2 2179 | transitivePeerDependencies: 2180 | - supports-color 2181 | 2182 | '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)': 2183 | dependencies: 2184 | '@typescript-eslint/types': 8.27.0 2185 | '@typescript-eslint/visitor-keys': 8.27.0 2186 | debug: 4.4.0 2187 | fast-glob: 3.3.3 2188 | is-glob: 4.0.3 2189 | minimatch: 9.0.5 2190 | semver: 7.7.1 2191 | ts-api-utils: 2.1.0(typescript@5.8.2) 2192 | typescript: 5.8.2 2193 | transitivePeerDependencies: 2194 | - supports-color 2195 | 2196 | '@typescript-eslint/utils@8.26.1(eslint@9.22.0)(typescript@5.8.2)': 2197 | dependencies: 2198 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.22.0) 2199 | '@typescript-eslint/scope-manager': 8.26.1 2200 | '@typescript-eslint/types': 8.26.1 2201 | '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) 2202 | eslint: 9.22.0 2203 | typescript: 5.8.2 2204 | transitivePeerDependencies: 2205 | - supports-color 2206 | 2207 | '@typescript-eslint/utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)': 2208 | dependencies: 2209 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0) 2210 | '@typescript-eslint/scope-manager': 8.27.0 2211 | '@typescript-eslint/types': 8.27.0 2212 | '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) 2213 | eslint: 9.22.0 2214 | typescript: 5.8.2 2215 | transitivePeerDependencies: 2216 | - supports-color 2217 | 2218 | '@typescript-eslint/visitor-keys@8.26.1': 2219 | dependencies: 2220 | '@typescript-eslint/types': 8.26.1 2221 | eslint-visitor-keys: 4.2.0 2222 | 2223 | '@typescript-eslint/visitor-keys@8.27.0': 2224 | dependencies: 2225 | '@typescript-eslint/types': 8.27.0 2226 | eslint-visitor-keys: 4.2.0 2227 | 2228 | '@zeit/schemas@2.36.0': {} 2229 | 2230 | accepts@1.3.8: 2231 | dependencies: 2232 | mime-types: 2.1.35 2233 | negotiator: 0.6.3 2234 | 2235 | acorn-jsx@5.3.2(acorn@8.14.1): 2236 | dependencies: 2237 | acorn: 8.14.1 2238 | 2239 | acorn@8.14.1: {} 2240 | 2241 | ajv@6.12.6: 2242 | dependencies: 2243 | fast-deep-equal: 3.1.3 2244 | fast-json-stable-stringify: 2.1.0 2245 | json-schema-traverse: 0.4.1 2246 | uri-js: 4.4.1 2247 | 2248 | ajv@8.12.0: 2249 | dependencies: 2250 | fast-deep-equal: 3.1.3 2251 | json-schema-traverse: 1.0.0 2252 | require-from-string: 2.0.2 2253 | uri-js: 4.4.1 2254 | 2255 | ansi-align@3.0.1: 2256 | dependencies: 2257 | string-width: 4.2.3 2258 | 2259 | ansi-regex@5.0.1: {} 2260 | 2261 | ansi-regex@6.1.0: {} 2262 | 2263 | ansi-styles@4.3.0: 2264 | dependencies: 2265 | color-convert: 2.0.1 2266 | 2267 | ansi-styles@6.2.1: {} 2268 | 2269 | ansis@3.17.0: {} 2270 | 2271 | any-promise@1.3.0: {} 2272 | 2273 | arch@2.2.0: {} 2274 | 2275 | arg@5.0.2: {} 2276 | 2277 | argparse@2.0.1: {} 2278 | 2279 | balanced-match@1.0.2: {} 2280 | 2281 | birecord@0.1.1: {} 2282 | 2283 | boxen@7.0.0: 2284 | dependencies: 2285 | ansi-align: 3.0.1 2286 | camelcase: 7.0.1 2287 | chalk: 5.0.1 2288 | cli-boxes: 3.0.0 2289 | string-width: 5.1.2 2290 | type-fest: 2.19.0 2291 | widest-line: 4.0.1 2292 | wrap-ansi: 8.1.0 2293 | 2294 | brace-expansion@1.1.11: 2295 | dependencies: 2296 | balanced-match: 1.0.2 2297 | concat-map: 0.0.1 2298 | 2299 | brace-expansion@2.0.1: 2300 | dependencies: 2301 | balanced-match: 1.0.2 2302 | 2303 | braces@3.0.3: 2304 | dependencies: 2305 | fill-range: 7.1.1 2306 | 2307 | bundle-name@4.1.0: 2308 | dependencies: 2309 | run-applescript: 7.0.0 2310 | 2311 | bundle-require@5.1.0(esbuild@0.25.1): 2312 | dependencies: 2313 | esbuild: 0.25.1 2314 | load-tsconfig: 0.2.5 2315 | 2316 | bytes@3.0.0: {} 2317 | 2318 | cac@6.7.14: {} 2319 | 2320 | callsites@3.1.0: {} 2321 | 2322 | camelcase@7.0.1: {} 2323 | 2324 | chalk-template@0.4.0: 2325 | dependencies: 2326 | chalk: 4.1.2 2327 | 2328 | chalk@4.1.2: 2329 | dependencies: 2330 | ansi-styles: 4.3.0 2331 | supports-color: 7.2.0 2332 | 2333 | chalk@5.0.1: {} 2334 | 2335 | chokidar@4.0.3: 2336 | dependencies: 2337 | readdirp: 4.1.2 2338 | 2339 | cli-boxes@3.0.0: {} 2340 | 2341 | clipboardy@3.0.0: 2342 | dependencies: 2343 | arch: 2.2.0 2344 | execa: 5.1.1 2345 | is-wsl: 2.2.0 2346 | 2347 | color-convert@2.0.1: 2348 | dependencies: 2349 | color-name: 1.1.4 2350 | 2351 | color-name@1.1.4: {} 2352 | 2353 | commander@4.1.1: {} 2354 | 2355 | compare-versions@6.1.1: {} 2356 | 2357 | compressible@2.0.18: 2358 | dependencies: 2359 | mime-db: 1.53.0 2360 | 2361 | compression@1.7.4: 2362 | dependencies: 2363 | accepts: 1.3.8 2364 | bytes: 3.0.0 2365 | compressible: 2.0.18 2366 | debug: 2.6.9 2367 | on-headers: 1.0.2 2368 | safe-buffer: 5.1.2 2369 | vary: 1.1.2 2370 | transitivePeerDependencies: 2371 | - supports-color 2372 | 2373 | concat-map@0.0.1: {} 2374 | 2375 | confbox@0.1.8: {} 2376 | 2377 | confbox@0.2.1: {} 2378 | 2379 | consola@3.4.0: {} 2380 | 2381 | content-disposition@0.5.2: {} 2382 | 2383 | cookie-es@1.2.2: {} 2384 | 2385 | cross-spawn@7.0.6: 2386 | dependencies: 2387 | path-key: 3.1.1 2388 | shebang-command: 2.0.0 2389 | which: 2.0.2 2390 | 2391 | crossws@0.3.4: 2392 | dependencies: 2393 | uncrypto: 0.1.3 2394 | 2395 | debug@2.6.9: 2396 | dependencies: 2397 | ms: 2.0.0 2398 | 2399 | debug@4.4.0: 2400 | dependencies: 2401 | ms: 2.1.3 2402 | 2403 | deep-extend@0.6.0: {} 2404 | 2405 | deep-is@0.1.4: {} 2406 | 2407 | default-browser-id@5.0.0: {} 2408 | 2409 | default-browser@5.2.1: 2410 | dependencies: 2411 | bundle-name: 4.1.0 2412 | default-browser-id: 5.0.0 2413 | 2414 | define-lazy-prop@3.0.0: {} 2415 | 2416 | defu@6.1.4: {} 2417 | 2418 | destr@2.0.3: {} 2419 | 2420 | eastasianwidth@0.2.0: {} 2421 | 2422 | emoji-regex@8.0.0: {} 2423 | 2424 | emoji-regex@9.2.2: {} 2425 | 2426 | enhanced-resolve@5.18.1: 2427 | dependencies: 2428 | graceful-fs: 4.2.11 2429 | tapable: 2.2.1 2430 | 2431 | esbuild@0.25.1: 2432 | optionalDependencies: 2433 | '@esbuild/aix-ppc64': 0.25.1 2434 | '@esbuild/android-arm': 0.25.1 2435 | '@esbuild/android-arm64': 0.25.1 2436 | '@esbuild/android-x64': 0.25.1 2437 | '@esbuild/darwin-arm64': 0.25.1 2438 | '@esbuild/darwin-x64': 0.25.1 2439 | '@esbuild/freebsd-arm64': 0.25.1 2440 | '@esbuild/freebsd-x64': 0.25.1 2441 | '@esbuild/linux-arm': 0.25.1 2442 | '@esbuild/linux-arm64': 0.25.1 2443 | '@esbuild/linux-ia32': 0.25.1 2444 | '@esbuild/linux-loong64': 0.25.1 2445 | '@esbuild/linux-mips64el': 0.25.1 2446 | '@esbuild/linux-ppc64': 0.25.1 2447 | '@esbuild/linux-riscv64': 0.25.1 2448 | '@esbuild/linux-s390x': 0.25.1 2449 | '@esbuild/linux-x64': 0.25.1 2450 | '@esbuild/netbsd-arm64': 0.25.1 2451 | '@esbuild/netbsd-x64': 0.25.1 2452 | '@esbuild/openbsd-arm64': 0.25.1 2453 | '@esbuild/openbsd-x64': 0.25.1 2454 | '@esbuild/sunos-x64': 0.25.1 2455 | '@esbuild/win32-arm64': 0.25.1 2456 | '@esbuild/win32-ia32': 0.25.1 2457 | '@esbuild/win32-x64': 0.25.1 2458 | 2459 | escape-string-regexp@4.0.0: {} 2460 | 2461 | eslint-compat-utils@0.5.1(eslint@9.22.0): 2462 | dependencies: 2463 | eslint: 9.22.0 2464 | semver: 7.7.1 2465 | 2466 | eslint-flat-config-utils@2.0.1: 2467 | dependencies: 2468 | pathe: 2.0.3 2469 | 2470 | eslint-plugin-antfu@3.1.1(eslint@9.22.0): 2471 | dependencies: 2472 | eslint: 9.22.0 2473 | 2474 | eslint-plugin-es-x@7.8.0(eslint@9.22.0): 2475 | dependencies: 2476 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0) 2477 | '@eslint-community/regexpp': 4.12.1 2478 | eslint: 9.22.0 2479 | eslint-compat-utils: 0.5.1(eslint@9.22.0) 2480 | 2481 | eslint-plugin-n@17.16.2(eslint@9.22.0): 2482 | dependencies: 2483 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0) 2484 | enhanced-resolve: 5.18.1 2485 | eslint: 9.22.0 2486 | eslint-plugin-es-x: 7.8.0(eslint@9.22.0) 2487 | get-tsconfig: 4.10.0 2488 | globals: 15.15.0 2489 | ignore: 5.3.2 2490 | minimatch: 9.0.5 2491 | semver: 7.7.1 2492 | 2493 | eslint-plugin-perfectionist@4.10.1(eslint@9.22.0)(typescript@5.8.2): 2494 | dependencies: 2495 | '@typescript-eslint/types': 8.26.1 2496 | '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 2497 | eslint: 9.22.0 2498 | natural-orderby: 5.0.0 2499 | transitivePeerDependencies: 2500 | - supports-color 2501 | - typescript 2502 | 2503 | eslint-plugin-react-debug@1.37.0(eslint@9.22.0)(typescript@5.8.2): 2504 | dependencies: 2505 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2506 | '@eslint-react/core': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2507 | '@eslint-react/eff': 1.37.0 2508 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2509 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2510 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2511 | '@typescript-eslint/scope-manager': 8.27.0 2512 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2513 | '@typescript-eslint/types': 8.27.0 2514 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2515 | eslint: 9.22.0 2516 | string-ts: 2.2.1 2517 | ts-pattern: 5.6.2 2518 | optionalDependencies: 2519 | typescript: 5.8.2 2520 | transitivePeerDependencies: 2521 | - supports-color 2522 | 2523 | eslint-plugin-react-dom@1.37.0(eslint@9.22.0)(typescript@5.8.2): 2524 | dependencies: 2525 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2526 | '@eslint-react/core': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2527 | '@eslint-react/eff': 1.37.0 2528 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2529 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2530 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2531 | '@typescript-eslint/scope-manager': 8.27.0 2532 | '@typescript-eslint/types': 8.27.0 2533 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2534 | compare-versions: 6.1.1 2535 | eslint: 9.22.0 2536 | string-ts: 2.2.1 2537 | ts-pattern: 5.6.2 2538 | optionalDependencies: 2539 | typescript: 5.8.2 2540 | transitivePeerDependencies: 2541 | - supports-color 2542 | 2543 | eslint-plugin-react-hooks-extra@1.37.0(eslint@9.22.0)(typescript@5.8.2): 2544 | dependencies: 2545 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2546 | '@eslint-react/core': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2547 | '@eslint-react/eff': 1.37.0 2548 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2549 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2550 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2551 | '@typescript-eslint/scope-manager': 8.27.0 2552 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2553 | '@typescript-eslint/types': 8.27.0 2554 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2555 | eslint: 9.22.0 2556 | string-ts: 2.2.1 2557 | ts-pattern: 5.6.2 2558 | optionalDependencies: 2559 | typescript: 5.8.2 2560 | transitivePeerDependencies: 2561 | - supports-color 2562 | 2563 | eslint-plugin-react-hooks@5.2.0(eslint@9.22.0): 2564 | dependencies: 2565 | eslint: 9.22.0 2566 | 2567 | eslint-plugin-react-naming-convention@1.37.0(eslint@9.22.0)(typescript@5.8.2): 2568 | dependencies: 2569 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2570 | '@eslint-react/core': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2571 | '@eslint-react/eff': 1.37.0 2572 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2573 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2574 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2575 | '@typescript-eslint/scope-manager': 8.27.0 2576 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2577 | '@typescript-eslint/types': 8.27.0 2578 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2579 | eslint: 9.22.0 2580 | string-ts: 2.2.1 2581 | ts-pattern: 5.6.2 2582 | optionalDependencies: 2583 | typescript: 5.8.2 2584 | transitivePeerDependencies: 2585 | - supports-color 2586 | 2587 | eslint-plugin-react-web-api@1.37.0(eslint@9.22.0)(typescript@5.8.2): 2588 | dependencies: 2589 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2590 | '@eslint-react/core': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2591 | '@eslint-react/eff': 1.37.0 2592 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2593 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2594 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2595 | '@typescript-eslint/scope-manager': 8.27.0 2596 | '@typescript-eslint/types': 8.27.0 2597 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2598 | eslint: 9.22.0 2599 | string-ts: 2.2.1 2600 | ts-pattern: 5.6.2 2601 | optionalDependencies: 2602 | typescript: 5.8.2 2603 | transitivePeerDependencies: 2604 | - supports-color 2605 | 2606 | eslint-plugin-react-x@1.37.0(eslint@9.22.0)(ts-api-utils@2.1.0(typescript@5.8.2))(typescript@5.8.2): 2607 | dependencies: 2608 | '@eslint-react/ast': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2609 | '@eslint-react/core': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2610 | '@eslint-react/eff': 1.37.0 2611 | '@eslint-react/jsx': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2612 | '@eslint-react/shared': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2613 | '@eslint-react/var': 1.37.0(eslint@9.22.0)(typescript@5.8.2) 2614 | '@typescript-eslint/scope-manager': 8.27.0 2615 | '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2616 | '@typescript-eslint/types': 8.27.0 2617 | '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) 2618 | compare-versions: 6.1.1 2619 | eslint: 9.22.0 2620 | string-ts: 2.2.1 2621 | ts-pattern: 5.6.2 2622 | optionalDependencies: 2623 | ts-api-utils: 2.1.0(typescript@5.8.2) 2624 | typescript: 5.8.2 2625 | transitivePeerDependencies: 2626 | - supports-color 2627 | 2628 | eslint-scope@8.3.0: 2629 | dependencies: 2630 | esrecurse: 4.3.0 2631 | estraverse: 5.3.0 2632 | 2633 | eslint-typegen@2.1.0(eslint@9.22.0): 2634 | dependencies: 2635 | eslint: 9.22.0 2636 | json-schema-to-typescript-lite: 14.1.0 2637 | ohash: 2.0.11 2638 | 2639 | eslint-visitor-keys@3.4.3: {} 2640 | 2641 | eslint-visitor-keys@4.2.0: {} 2642 | 2643 | eslint@9.22.0: 2644 | dependencies: 2645 | '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0) 2646 | '@eslint-community/regexpp': 4.12.1 2647 | '@eslint/config-array': 0.19.2 2648 | '@eslint/config-helpers': 0.1.0 2649 | '@eslint/core': 0.12.0 2650 | '@eslint/eslintrc': 3.3.0 2651 | '@eslint/js': 9.22.0 2652 | '@eslint/plugin-kit': 0.2.7 2653 | '@humanfs/node': 0.16.6 2654 | '@humanwhocodes/module-importer': 1.0.1 2655 | '@humanwhocodes/retry': 0.4.2 2656 | '@types/estree': 1.0.6 2657 | '@types/json-schema': 7.0.15 2658 | ajv: 6.12.6 2659 | chalk: 4.1.2 2660 | cross-spawn: 7.0.6 2661 | debug: 4.4.0 2662 | escape-string-regexp: 4.0.0 2663 | eslint-scope: 8.3.0 2664 | eslint-visitor-keys: 4.2.0 2665 | espree: 10.3.0 2666 | esquery: 1.6.0 2667 | esutils: 2.0.3 2668 | fast-deep-equal: 3.1.3 2669 | file-entry-cache: 8.0.0 2670 | find-up: 5.0.0 2671 | glob-parent: 6.0.2 2672 | ignore: 5.3.2 2673 | imurmurhash: 0.1.4 2674 | is-glob: 4.0.3 2675 | json-stable-stringify-without-jsonify: 1.0.1 2676 | lodash.merge: 4.6.2 2677 | minimatch: 3.1.2 2678 | natural-compare: 1.4.0 2679 | optionator: 0.9.4 2680 | transitivePeerDependencies: 2681 | - supports-color 2682 | 2683 | espree@10.3.0: 2684 | dependencies: 2685 | acorn: 8.14.1 2686 | acorn-jsx: 5.3.2(acorn@8.14.1) 2687 | eslint-visitor-keys: 4.2.0 2688 | 2689 | esquery@1.6.0: 2690 | dependencies: 2691 | estraverse: 5.3.0 2692 | 2693 | esrecurse@4.3.0: 2694 | dependencies: 2695 | estraverse: 5.3.0 2696 | 2697 | estraverse@5.3.0: {} 2698 | 2699 | esutils@2.0.3: {} 2700 | 2701 | execa@5.1.1: 2702 | dependencies: 2703 | cross-spawn: 7.0.6 2704 | get-stream: 6.0.1 2705 | human-signals: 2.1.0 2706 | is-stream: 2.0.1 2707 | merge-stream: 2.0.0 2708 | npm-run-path: 4.0.1 2709 | onetime: 5.1.2 2710 | signal-exit: 3.0.7 2711 | strip-final-newline: 2.0.0 2712 | 2713 | exsolve@1.0.4: {} 2714 | 2715 | fast-deep-equal@3.1.3: {} 2716 | 2717 | fast-glob@3.3.1: 2718 | dependencies: 2719 | '@nodelib/fs.stat': 2.0.5 2720 | '@nodelib/fs.walk': 1.2.8 2721 | glob-parent: 5.1.2 2722 | merge2: 1.4.1 2723 | micromatch: 4.0.8 2724 | 2725 | fast-glob@3.3.3: 2726 | dependencies: 2727 | '@nodelib/fs.stat': 2.0.5 2728 | '@nodelib/fs.walk': 1.2.8 2729 | glob-parent: 5.1.2 2730 | merge2: 1.4.1 2731 | micromatch: 4.0.8 2732 | 2733 | fast-json-stable-stringify@2.1.0: {} 2734 | 2735 | fast-levenshtein@2.0.6: {} 2736 | 2737 | fastq@1.19.1: 2738 | dependencies: 2739 | reusify: 1.1.0 2740 | 2741 | fdir@6.4.3(picomatch@4.0.2): 2742 | optionalDependencies: 2743 | picomatch: 4.0.2 2744 | 2745 | file-entry-cache@8.0.0: 2746 | dependencies: 2747 | flat-cache: 4.0.1 2748 | 2749 | fill-range@7.1.1: 2750 | dependencies: 2751 | to-regex-range: 5.0.1 2752 | 2753 | find-up@5.0.0: 2754 | dependencies: 2755 | locate-path: 6.0.0 2756 | path-exists: 4.0.0 2757 | 2758 | find-up@7.0.0: 2759 | dependencies: 2760 | locate-path: 7.2.0 2761 | path-exists: 5.0.0 2762 | unicorn-magic: 0.1.0 2763 | 2764 | flat-cache@4.0.1: 2765 | dependencies: 2766 | flatted: 3.3.3 2767 | keyv: 4.5.4 2768 | 2769 | flatted@3.3.3: {} 2770 | 2771 | foreground-child@3.3.1: 2772 | dependencies: 2773 | cross-spawn: 7.0.6 2774 | signal-exit: 4.1.0 2775 | 2776 | fsevents@2.3.3: 2777 | optional: true 2778 | 2779 | get-port-please@3.1.2: {} 2780 | 2781 | get-stream@6.0.1: {} 2782 | 2783 | get-tsconfig@4.10.0: 2784 | dependencies: 2785 | resolve-pkg-maps: 1.0.0 2786 | 2787 | glob-parent@5.1.2: 2788 | dependencies: 2789 | is-glob: 4.0.3 2790 | 2791 | glob-parent@6.0.2: 2792 | dependencies: 2793 | is-glob: 4.0.3 2794 | 2795 | glob@10.4.5: 2796 | dependencies: 2797 | foreground-child: 3.3.1 2798 | jackspeak: 3.4.3 2799 | minimatch: 9.0.5 2800 | minipass: 7.1.2 2801 | package-json-from-dist: 1.0.1 2802 | path-scurry: 1.11.1 2803 | 2804 | globals@14.0.0: {} 2805 | 2806 | globals@15.15.0: {} 2807 | 2808 | globals@16.0.0: {} 2809 | 2810 | graceful-fs@4.2.11: {} 2811 | 2812 | graphemer@1.4.0: {} 2813 | 2814 | h3@1.15.1: 2815 | dependencies: 2816 | cookie-es: 1.2.2 2817 | crossws: 0.3.4 2818 | defu: 6.1.4 2819 | destr: 2.0.3 2820 | iron-webcrypto: 1.2.1 2821 | node-mock-http: 1.0.0 2822 | radix3: 1.1.2 2823 | ufo: 1.5.4 2824 | uncrypto: 0.1.3 2825 | 2826 | has-flag@4.0.0: {} 2827 | 2828 | human-signals@2.1.0: {} 2829 | 2830 | ignore@5.3.2: {} 2831 | 2832 | import-fresh@3.3.1: 2833 | dependencies: 2834 | parent-module: 1.0.1 2835 | resolve-from: 4.0.0 2836 | 2837 | imurmurhash@0.1.4: {} 2838 | 2839 | ini@1.3.8: {} 2840 | 2841 | iron-webcrypto@1.2.1: {} 2842 | 2843 | is-docker@2.2.1: {} 2844 | 2845 | is-docker@3.0.0: {} 2846 | 2847 | is-extglob@2.1.1: {} 2848 | 2849 | is-fullwidth-code-point@3.0.0: {} 2850 | 2851 | is-glob@4.0.3: 2852 | dependencies: 2853 | is-extglob: 2.1.1 2854 | 2855 | is-inside-container@1.0.0: 2856 | dependencies: 2857 | is-docker: 3.0.0 2858 | 2859 | is-number@7.0.0: {} 2860 | 2861 | is-port-reachable@4.0.0: {} 2862 | 2863 | is-stream@2.0.1: {} 2864 | 2865 | is-wsl@2.2.0: 2866 | dependencies: 2867 | is-docker: 2.2.1 2868 | 2869 | is-wsl@3.1.0: 2870 | dependencies: 2871 | is-inside-container: 1.0.0 2872 | 2873 | isexe@2.0.0: {} 2874 | 2875 | jackspeak@3.4.3: 2876 | dependencies: 2877 | '@isaacs/cliui': 8.0.2 2878 | optionalDependencies: 2879 | '@pkgjs/parseargs': 0.11.0 2880 | 2881 | joycon@3.1.1: {} 2882 | 2883 | js-yaml@4.1.0: 2884 | dependencies: 2885 | argparse: 2.0.1 2886 | 2887 | json-buffer@3.0.1: {} 2888 | 2889 | json-schema-to-typescript-lite@14.1.0: 2890 | dependencies: 2891 | '@apidevtools/json-schema-ref-parser': 11.9.3 2892 | '@types/json-schema': 7.0.15 2893 | 2894 | json-schema-traverse@0.4.1: {} 2895 | 2896 | json-schema-traverse@1.0.0: {} 2897 | 2898 | json-stable-stringify-without-jsonify@1.0.1: {} 2899 | 2900 | keyv@4.5.4: 2901 | dependencies: 2902 | json-buffer: 3.0.1 2903 | 2904 | levn@0.4.1: 2905 | dependencies: 2906 | prelude-ls: 1.2.1 2907 | type-check: 0.4.0 2908 | 2909 | lilconfig@3.1.3: {} 2910 | 2911 | lines-and-columns@1.2.4: {} 2912 | 2913 | load-tsconfig@0.2.5: {} 2914 | 2915 | local-pkg@1.1.1: 2916 | dependencies: 2917 | mlly: 1.7.4 2918 | pkg-types: 2.1.0 2919 | quansync: 0.2.8 2920 | 2921 | locate-path@6.0.0: 2922 | dependencies: 2923 | p-locate: 5.0.0 2924 | 2925 | locate-path@7.2.0: 2926 | dependencies: 2927 | p-locate: 6.0.0 2928 | 2929 | lodash.merge@4.6.2: {} 2930 | 2931 | lodash.sortby@4.7.0: {} 2932 | 2933 | lru-cache@10.4.3: {} 2934 | 2935 | merge-stream@2.0.0: {} 2936 | 2937 | merge2@1.4.1: {} 2938 | 2939 | micromatch@4.0.8: 2940 | dependencies: 2941 | braces: 3.0.3 2942 | picomatch: 2.3.1 2943 | 2944 | mime-db@1.33.0: {} 2945 | 2946 | mime-db@1.52.0: {} 2947 | 2948 | mime-db@1.53.0: {} 2949 | 2950 | mime-types@2.1.18: 2951 | dependencies: 2952 | mime-db: 1.33.0 2953 | 2954 | mime-types@2.1.35: 2955 | dependencies: 2956 | mime-db: 1.52.0 2957 | 2958 | mimic-fn@2.1.0: {} 2959 | 2960 | minimatch@3.1.2: 2961 | dependencies: 2962 | brace-expansion: 1.1.11 2963 | 2964 | minimatch@9.0.5: 2965 | dependencies: 2966 | brace-expansion: 2.0.1 2967 | 2968 | minimist@1.2.8: {} 2969 | 2970 | minipass@7.1.2: {} 2971 | 2972 | mlly@1.7.4: 2973 | dependencies: 2974 | acorn: 8.14.1 2975 | pathe: 2.0.3 2976 | pkg-types: 1.3.1 2977 | ufo: 1.5.4 2978 | 2979 | mrmime@2.0.1: {} 2980 | 2981 | ms@2.0.0: {} 2982 | 2983 | ms@2.1.3: {} 2984 | 2985 | mz@2.7.0: 2986 | dependencies: 2987 | any-promise: 1.3.0 2988 | object-assign: 4.1.1 2989 | thenify-all: 1.6.0 2990 | 2991 | natural-compare@1.4.0: {} 2992 | 2993 | natural-orderby@5.0.0: {} 2994 | 2995 | negotiator@0.6.3: {} 2996 | 2997 | node-mock-http@1.0.0: {} 2998 | 2999 | npm-run-path@4.0.1: 3000 | dependencies: 3001 | path-key: 3.1.1 3002 | 3003 | object-assign@4.1.1: {} 3004 | 3005 | ohash@2.0.11: {} 3006 | 3007 | on-headers@1.0.2: {} 3008 | 3009 | onetime@5.1.2: 3010 | dependencies: 3011 | mimic-fn: 2.1.0 3012 | 3013 | open@10.1.0: 3014 | dependencies: 3015 | default-browser: 5.2.1 3016 | define-lazy-prop: 3.0.0 3017 | is-inside-container: 1.0.0 3018 | is-wsl: 3.1.0 3019 | 3020 | optionator@0.9.4: 3021 | dependencies: 3022 | deep-is: 0.1.4 3023 | fast-levenshtein: 2.0.6 3024 | levn: 0.4.1 3025 | prelude-ls: 1.2.1 3026 | type-check: 0.4.0 3027 | word-wrap: 1.2.5 3028 | 3029 | p-limit@3.1.0: 3030 | dependencies: 3031 | yocto-queue: 0.1.0 3032 | 3033 | p-limit@4.0.0: 3034 | dependencies: 3035 | yocto-queue: 1.2.0 3036 | 3037 | p-locate@5.0.0: 3038 | dependencies: 3039 | p-limit: 3.1.0 3040 | 3041 | p-locate@6.0.0: 3042 | dependencies: 3043 | p-limit: 4.0.0 3044 | 3045 | package-json-from-dist@1.0.1: {} 3046 | 3047 | parent-module@1.0.1: 3048 | dependencies: 3049 | callsites: 3.1.0 3050 | 3051 | path-exists@4.0.0: {} 3052 | 3053 | path-exists@5.0.0: {} 3054 | 3055 | path-is-inside@1.0.2: {} 3056 | 3057 | path-key@3.1.1: {} 3058 | 3059 | path-scurry@1.11.1: 3060 | dependencies: 3061 | lru-cache: 10.4.3 3062 | minipass: 7.1.2 3063 | 3064 | path-to-regexp@3.3.0: {} 3065 | 3066 | pathe@2.0.3: {} 3067 | 3068 | picocolors@1.1.1: {} 3069 | 3070 | picomatch@2.3.1: {} 3071 | 3072 | picomatch@4.0.2: {} 3073 | 3074 | pirates@4.0.6: {} 3075 | 3076 | pkg-types@1.3.1: 3077 | dependencies: 3078 | confbox: 0.1.8 3079 | mlly: 1.7.4 3080 | pathe: 2.0.3 3081 | 3082 | pkg-types@2.1.0: 3083 | dependencies: 3084 | confbox: 0.2.1 3085 | exsolve: 1.0.4 3086 | pathe: 2.0.3 3087 | 3088 | postcss-load-config@6.0.1(tsx@4.19.3): 3089 | dependencies: 3090 | lilconfig: 3.1.3 3091 | optionalDependencies: 3092 | tsx: 4.19.3 3093 | 3094 | prelude-ls@1.2.1: {} 3095 | 3096 | punycode@2.3.1: {} 3097 | 3098 | quansync@0.2.8: {} 3099 | 3100 | queue-microtask@1.2.3: {} 3101 | 3102 | radix3@1.1.2: {} 3103 | 3104 | range-parser@1.2.0: {} 3105 | 3106 | rc@1.2.8: 3107 | dependencies: 3108 | deep-extend: 0.6.0 3109 | ini: 1.3.8 3110 | minimist: 1.2.8 3111 | strip-json-comments: 2.0.1 3112 | 3113 | readdirp@4.1.2: {} 3114 | 3115 | registry-auth-token@3.3.2: 3116 | dependencies: 3117 | rc: 1.2.8 3118 | safe-buffer: 5.2.1 3119 | 3120 | registry-url@3.1.0: 3121 | dependencies: 3122 | rc: 1.2.8 3123 | 3124 | require-from-string@2.0.2: {} 3125 | 3126 | resolve-from@4.0.0: {} 3127 | 3128 | resolve-from@5.0.0: {} 3129 | 3130 | resolve-pkg-maps@1.0.0: {} 3131 | 3132 | reusify@1.1.0: {} 3133 | 3134 | rollup@4.35.0: 3135 | dependencies: 3136 | '@types/estree': 1.0.6 3137 | optionalDependencies: 3138 | '@rollup/rollup-android-arm-eabi': 4.35.0 3139 | '@rollup/rollup-android-arm64': 4.35.0 3140 | '@rollup/rollup-darwin-arm64': 4.35.0 3141 | '@rollup/rollup-darwin-x64': 4.35.0 3142 | '@rollup/rollup-freebsd-arm64': 4.35.0 3143 | '@rollup/rollup-freebsd-x64': 4.35.0 3144 | '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 3145 | '@rollup/rollup-linux-arm-musleabihf': 4.35.0 3146 | '@rollup/rollup-linux-arm64-gnu': 4.35.0 3147 | '@rollup/rollup-linux-arm64-musl': 4.35.0 3148 | '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 3149 | '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 3150 | '@rollup/rollup-linux-riscv64-gnu': 4.35.0 3151 | '@rollup/rollup-linux-s390x-gnu': 4.35.0 3152 | '@rollup/rollup-linux-x64-gnu': 4.35.0 3153 | '@rollup/rollup-linux-x64-musl': 4.35.0 3154 | '@rollup/rollup-win32-arm64-msvc': 4.35.0 3155 | '@rollup/rollup-win32-ia32-msvc': 4.35.0 3156 | '@rollup/rollup-win32-x64-msvc': 4.35.0 3157 | fsevents: 2.3.3 3158 | 3159 | run-applescript@7.0.0: {} 3160 | 3161 | run-parallel@1.2.0: 3162 | dependencies: 3163 | queue-microtask: 1.2.3 3164 | 3165 | safe-buffer@5.1.2: {} 3166 | 3167 | safe-buffer@5.2.1: {} 3168 | 3169 | semver@7.7.1: {} 3170 | 3171 | serve-handler@6.1.6: 3172 | dependencies: 3173 | bytes: 3.0.0 3174 | content-disposition: 0.5.2 3175 | mime-types: 2.1.18 3176 | minimatch: 3.1.2 3177 | path-is-inside: 1.0.2 3178 | path-to-regexp: 3.3.0 3179 | range-parser: 1.2.0 3180 | 3181 | serve@14.2.4: 3182 | dependencies: 3183 | '@zeit/schemas': 2.36.0 3184 | ajv: 8.12.0 3185 | arg: 5.0.2 3186 | boxen: 7.0.0 3187 | chalk: 5.0.1 3188 | chalk-template: 0.4.0 3189 | clipboardy: 3.0.0 3190 | compression: 1.7.4 3191 | is-port-reachable: 4.0.0 3192 | serve-handler: 6.1.6 3193 | update-check: 1.5.4 3194 | transitivePeerDependencies: 3195 | - supports-color 3196 | 3197 | shebang-command@2.0.0: 3198 | dependencies: 3199 | shebang-regex: 3.0.0 3200 | 3201 | shebang-regex@3.0.0: {} 3202 | 3203 | signal-exit@3.0.7: {} 3204 | 3205 | signal-exit@4.1.0: {} 3206 | 3207 | source-map@0.8.0-beta.0: 3208 | dependencies: 3209 | whatwg-url: 7.1.0 3210 | 3211 | string-ts@2.2.1: {} 3212 | 3213 | string-width@4.2.3: 3214 | dependencies: 3215 | emoji-regex: 8.0.0 3216 | is-fullwidth-code-point: 3.0.0 3217 | strip-ansi: 6.0.1 3218 | 3219 | string-width@5.1.2: 3220 | dependencies: 3221 | eastasianwidth: 0.2.0 3222 | emoji-regex: 9.2.2 3223 | strip-ansi: 7.1.0 3224 | 3225 | strip-ansi@6.0.1: 3226 | dependencies: 3227 | ansi-regex: 5.0.1 3228 | 3229 | strip-ansi@7.1.0: 3230 | dependencies: 3231 | ansi-regex: 6.1.0 3232 | 3233 | strip-final-newline@2.0.0: {} 3234 | 3235 | strip-json-comments@2.0.1: {} 3236 | 3237 | strip-json-comments@3.1.1: {} 3238 | 3239 | sucrase@3.35.0: 3240 | dependencies: 3241 | '@jridgewell/gen-mapping': 0.3.8 3242 | commander: 4.1.1 3243 | glob: 10.4.5 3244 | lines-and-columns: 1.2.4 3245 | mz: 2.7.0 3246 | pirates: 4.0.6 3247 | ts-interface-checker: 0.1.13 3248 | 3249 | supports-color@7.2.0: 3250 | dependencies: 3251 | has-flag: 4.0.0 3252 | 3253 | tapable@2.2.1: {} 3254 | 3255 | thenify-all@1.6.0: 3256 | dependencies: 3257 | thenify: 3.3.1 3258 | 3259 | thenify@3.3.1: 3260 | dependencies: 3261 | any-promise: 1.3.0 3262 | 3263 | tinyexec@0.3.2: {} 3264 | 3265 | tinyglobby@0.2.12: 3266 | dependencies: 3267 | fdir: 6.4.3(picomatch@4.0.2) 3268 | picomatch: 4.0.2 3269 | 3270 | to-regex-range@5.0.1: 3271 | dependencies: 3272 | is-number: 7.0.0 3273 | 3274 | tr46@1.0.1: 3275 | dependencies: 3276 | punycode: 2.3.1 3277 | 3278 | tree-kill@1.2.2: {} 3279 | 3280 | ts-api-utils@2.0.1(typescript@5.8.2): 3281 | dependencies: 3282 | typescript: 5.8.2 3283 | 3284 | ts-api-utils@2.1.0(typescript@5.8.2): 3285 | dependencies: 3286 | typescript: 5.8.2 3287 | 3288 | ts-interface-checker@0.1.13: {} 3289 | 3290 | ts-pattern@5.6.2: {} 3291 | 3292 | tsup@8.4.0(tsx@4.19.3)(typescript@5.8.2): 3293 | dependencies: 3294 | bundle-require: 5.1.0(esbuild@0.25.1) 3295 | cac: 6.7.14 3296 | chokidar: 4.0.3 3297 | consola: 3.4.0 3298 | debug: 4.4.0 3299 | esbuild: 0.25.1 3300 | joycon: 3.1.1 3301 | picocolors: 1.1.1 3302 | postcss-load-config: 6.0.1(tsx@4.19.3) 3303 | resolve-from: 5.0.0 3304 | rollup: 4.35.0 3305 | source-map: 0.8.0-beta.0 3306 | sucrase: 3.35.0 3307 | tinyexec: 0.3.2 3308 | tinyglobby: 0.2.12 3309 | tree-kill: 1.2.2 3310 | optionalDependencies: 3311 | typescript: 5.8.2 3312 | transitivePeerDependencies: 3313 | - jiti 3314 | - supports-color 3315 | - tsx 3316 | - yaml 3317 | 3318 | tsx@4.19.3: 3319 | dependencies: 3320 | esbuild: 0.25.1 3321 | get-tsconfig: 4.10.0 3322 | optionalDependencies: 3323 | fsevents: 2.3.3 3324 | 3325 | type-check@0.4.0: 3326 | dependencies: 3327 | prelude-ls: 1.2.1 3328 | 3329 | type-fest@2.19.0: {} 3330 | 3331 | typescript@5.8.2: {} 3332 | 3333 | ufo@1.5.4: {} 3334 | 3335 | uncrypto@0.1.3: {} 3336 | 3337 | undici-types@6.20.0: {} 3338 | 3339 | unicorn-magic@0.1.0: {} 3340 | 3341 | update-check@1.5.4: 3342 | dependencies: 3343 | registry-auth-token: 3.3.2 3344 | registry-url: 3.1.0 3345 | 3346 | uri-js@4.4.1: 3347 | dependencies: 3348 | punycode: 2.3.1 3349 | 3350 | vary@1.1.2: {} 3351 | 3352 | webidl-conversions@4.0.2: {} 3353 | 3354 | whatwg-url@7.1.0: 3355 | dependencies: 3356 | lodash.sortby: 4.7.0 3357 | tr46: 1.0.1 3358 | webidl-conversions: 4.0.2 3359 | 3360 | which@2.0.2: 3361 | dependencies: 3362 | isexe: 2.0.0 3363 | 3364 | widest-line@4.0.1: 3365 | dependencies: 3366 | string-width: 5.1.2 3367 | 3368 | word-wrap@1.2.5: {} 3369 | 3370 | wrap-ansi@7.0.0: 3371 | dependencies: 3372 | ansi-styles: 4.3.0 3373 | string-width: 4.2.3 3374 | strip-ansi: 6.0.1 3375 | 3376 | wrap-ansi@8.1.0: 3377 | dependencies: 3378 | ansi-styles: 6.2.1 3379 | string-width: 5.1.2 3380 | strip-ansi: 7.1.0 3381 | 3382 | ws@8.18.1: {} 3383 | 3384 | yocto-queue@0.1.0: {} 3385 | 3386 | yocto-queue@1.2.0: {} 3387 | -------------------------------------------------------------------------------- /scripts/typegen.ts: -------------------------------------------------------------------------------- 1 | import type { Awaitable, TypedFlatConfigItem } from "#/types/type"; 2 | import { javascript } from "#/configs/javascript"; 3 | import { nextjs } from "#/configs/nextjs"; 4 | import { node } from "#/configs/node"; 5 | import { perfectionist } from "#/configs/perfectionist"; 6 | import { react } from "#/configs/react"; 7 | import { stylistic } from "#/configs/stylistic"; 8 | import { typescript } from "#/configs/typescript"; 9 | import { flatConfigsToRulesDTS } from "eslint-typegen/core"; 10 | import { builtinRules } from "eslint/use-at-your-own-risk"; 11 | import { writeFile } from "node:fs/promises"; 12 | import { join } from "node:path"; 13 | import { cwd } from "node:process"; 14 | 15 | /** 16 | * Combine array and non-array configs into a single array. 17 | */ 18 | export const combine = async (...configs: Awaitable[]): Promise => { 19 | const resolved = await Promise.all(configs); 20 | return resolved.flat(); 21 | }; 22 | 23 | const configs = await combine( 24 | // eslint-disable-next-line @typescript-eslint/no-deprecated 25 | { name: "bluzzi/eslint", plugins: { "": { rules: Object.fromEntries(builtinRules.entries()) } } }, 26 | javascript(), 27 | node(), 28 | stylistic(), 29 | typescript(), 30 | react(), 31 | nextjs(), 32 | perfectionist(), 33 | ); 34 | 35 | const configNames = configs.map((i) => i.name).filter(Boolean) as string[]; 36 | 37 | let dts = await flatConfigsToRulesDTS(configs, { includeAugmentation: false }); 38 | 39 | dts += ` 40 | // Names of all the configs 41 | export type ConfigNames = ${configNames.map((i) => `'${i}'`).join(" | ")} 42 | `; 43 | 44 | await writeFile(join(cwd(), "src/types/gen.d.ts"), dts); 45 | -------------------------------------------------------------------------------- /src/configs/ignore/config.ts: -------------------------------------------------------------------------------- 1 | import type { TypedFlatConfigItem } from "#/types/type"; 2 | 3 | export const ignore = (): TypedFlatConfigItem => { 4 | return { 5 | name: "bluzzi/ignore", 6 | ignores: [ 7 | "**/node_modules", 8 | "**/dist", 9 | "**/package-lock.json", 10 | "**/yarn.lock", 11 | "**/pnpm-lock.yaml", 12 | "**/bun.lockb", 13 | 14 | "**/output", 15 | "**/coverage", 16 | "**/temp", 17 | "**/.temp", 18 | "**/tmp", 19 | "**/.tmp", 20 | "**/.history", 21 | "**/.vitepress/cache", 22 | "**/.nuxt", 23 | "**/.next", 24 | "**/.vercel", 25 | "**/.changeset", 26 | "**/.idea", 27 | "**/.cache", 28 | "**/.output", 29 | "**/.vite-inspect", 30 | "**/.yarn", 31 | "**/.eslint-config-inspector", 32 | 33 | "**/CHANGELOG*.md", 34 | "**/*.min.*", 35 | "**/LICENSE*", 36 | "**/__snapshots__", 37 | "**/auto-import?(s).d.ts", 38 | "**/components.d.ts", 39 | ], 40 | }; 41 | }; 42 | -------------------------------------------------------------------------------- /src/configs/ignore/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./config"; 2 | -------------------------------------------------------------------------------- /src/configs/javascript/config.ts: -------------------------------------------------------------------------------- 1 | import type { TypedFlatConfigItem } from "#/types/type"; 2 | import js from "@eslint/js"; 3 | import globals from "globals"; 4 | 5 | export const javascript = (): TypedFlatConfigItem => { 6 | return { 7 | name: "bluzzi/javascript", 8 | languageOptions: { 9 | globals: { 10 | ...globals.browser, 11 | ...globals.es2021, 12 | ...globals.node, 13 | document: "readonly", 14 | navigator: "readonly", 15 | window: "readonly", 16 | }, 17 | parserOptions: { 18 | ecmaFeatures: { jsx: true }, 19 | }, 20 | }, 21 | linterOptions: { 22 | reportUnusedDisableDirectives: true, 23 | }, 24 | rules: { 25 | ...js.configs.recommended.rules, 26 | "array-callback-return": "error", 27 | "no-constructor-return": "error", 28 | "no-inner-declarations": "error", 29 | "no-promise-executor-return": "error", 30 | "no-self-compare": "error", 31 | "no-template-curly-in-string": "error", 32 | "no-unmodified-loop-condition": "error", 33 | "no-unreachable-loop": "error", 34 | "no-use-before-define": "error", 35 | "no-useless-assignment": "error", 36 | "default-case-last": "error", 37 | "eqeqeq": "error", 38 | "func-names": "error", 39 | "func-style": "error", 40 | "grouped-accessor-pairs": "error", 41 | "max-classes-per-file": "error", 42 | "max-depth": "error", 43 | "max-nested-callbacks": ["error", { max: 5 }], 44 | "new-cap": "off", // TODO: Check if this rule is relevant (this can be anoying with React) 45 | "no-array-constructor": "error", 46 | "no-caller": "error", 47 | "no-else-return": "error", 48 | "no-empty-function": "error", 49 | "no-eq-null": "error", 50 | "no-eval": "error", 51 | "no-implied-eval": "error", 52 | "no-extend-native": "error", 53 | "no-implicit-coercion": "error", 54 | "no-implicit-globals": "error", 55 | "no-invalid-this": "error", 56 | "no-iterator": "error", 57 | "no-label-var": "error", 58 | "no-lone-blocks": "error", 59 | "no-lonely-if": "error", 60 | "no-multi-assign": "error", 61 | "no-multi-str": "error", 62 | "no-new-func": "error", 63 | "no-new-wrappers": "error", 64 | "no-param-reassign": "off", // TODO: Check if this rule is relevant 65 | "no-plusplus": "error", 66 | "no-return-assign": "error", 67 | "no-script-url": "error", 68 | "no-sequences": "error", 69 | "no-undef-init": "error", 70 | "no-undefined": "off", // TODO: Check if this rule is relevant 71 | "no-unneeded-ternary": "error", 72 | "no-unused-expressions": "error", 73 | "no-useless-call": "error", 74 | "no-useless-computed-key": "error", 75 | "no-useless-constructor": "error", 76 | "no-useless-return": "error", 77 | "no-var": "error", 78 | "prefer-arrow-callback": "error", 79 | "prefer-const": "error", 80 | "prefer-object-has-own": "error", 81 | "prefer-object-spread": "error", 82 | "prefer-promise-reject-errors": "error", 83 | "prefer-rest-params": "error", 84 | "prefer-spread": "error", 85 | "prefer-template": "error", 86 | "require-unicode-regexp": "error", 87 | "yoda": "error", 88 | "no-duplicate-imports": "off", // TODO: Check if this rule is relevant 89 | "no-redeclare": "off", // Not relevant, since TypeScript already takes care of checking for this kind of error 90 | "no-restricted-syntax": ["error", { 91 | selector: "CallExpression[callee.property.name='forEach']", 92 | message: "`forEach` is more limited than a for loop as it doesn't support `break` for early exits or return values for chaining operations.", 93 | }], 94 | // TODO: add "no-restricted-syntax" for `.then()` and `.catch()` ? 95 | }, 96 | }; 97 | }; 98 | -------------------------------------------------------------------------------- /src/configs/javascript/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./config"; 2 | -------------------------------------------------------------------------------- /src/configs/nextjs/config.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-unsafe-member-access */ 2 | /* eslint-disable @typescript-eslint/no-unsafe-assignment */ 3 | 4 | import type { TypedFlatConfigItem } from "#/types/type"; 5 | import { nextjsPlugin } from "#/utils/extension"; 6 | 7 | export const nextjs = (): TypedFlatConfigItem => { 8 | return { 9 | name: "bluzzi/nextjs", 10 | files: ["**/*.ts", "**/*.tsx"], 11 | plugins: { 12 | "@next/next": nextjsPlugin, 13 | }, 14 | rules: { 15 | // https://github.com/vercel/next.js/blob/7a47ed5123b8dac03e9483cb823e224370da2667/packages/eslint-plugin-next/src/index.ts#L26 16 | ...nextjsPlugin.configs.recommended.rules, 17 | ...nextjsPlugin.configs["core-web-vitals"].rules, 18 | }, 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /src/configs/nextjs/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./config"; 2 | -------------------------------------------------------------------------------- /src/configs/node/config.ts: -------------------------------------------------------------------------------- 1 | import type { TypedFlatConfigItem } from "#/types/type"; 2 | import { nodePlugin } from "#/utils/extension"; 3 | 4 | export const node = (): TypedFlatConfigItem => { 5 | return { 6 | name: "bluzzi/node", 7 | plugins: { 8 | n: nodePlugin, 9 | }, 10 | rules: { 11 | "n/no-deprecated-api": "error", 12 | "n/no-new-require": "error", 13 | "n/no-path-concat": "error", 14 | }, 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /src/configs/node/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./config"; 2 | -------------------------------------------------------------------------------- /src/configs/perfectionist/config.ts: -------------------------------------------------------------------------------- 1 | import type { ParamsPerfectionist } from "./type"; 2 | import type { TypedFlatConfigItem } from "#/types/type"; 3 | import { perfectionistPlugin } from "#/utils/extension"; 4 | 5 | export const perfectionist = ({ tsconfigPath }: ParamsPerfectionist = {}): TypedFlatConfigItem => { 6 | return { 7 | name: "bluzzi/perfectionist", 8 | plugins: { 9 | perfectionist: perfectionistPlugin, 10 | }, 11 | rules: { 12 | "perfectionist/sort-imports": ["error", { 13 | type: "alphabetical", 14 | order: "asc", 15 | fallbackSort: { type: "line-length", order: "asc" }, 16 | ignoreCase: false, 17 | specialCharacters: "keep", 18 | locales: "en-US", 19 | internalPattern: ["^~/.*", "^#/.*"], 20 | sortSideEffects: false, 21 | partitionByComment: true, 22 | partitionByNewLine: false, 23 | newlinesBetween: "never", 24 | tsconfigRootDir: tsconfigPath, 25 | groups: [ 26 | ["external-type", "builtin-type", "internal-type", "parent-type", "sibling-type", "index-type"], 27 | ["object", "index", "sibling", "parent", "internal", "external", "builtin", "unknown"], 28 | ["style"], 29 | ["side-effect-style"], 30 | ["side-effect"], 31 | ], 32 | }], 33 | }, 34 | }; 35 | }; 36 | -------------------------------------------------------------------------------- /src/configs/perfectionist/index.ts: -------------------------------------------------------------------------------- 1 | export type * from "./type"; 2 | export * from "./config"; 3 | -------------------------------------------------------------------------------- /src/configs/perfectionist/type.ts: -------------------------------------------------------------------------------- 1 | export type ParamsPerfectionist = { 2 | /** 3 | * Specifies the directory of the root tsconfig.json file (ex: .). 4 | * This is used for marking aliased imports as internal or internal-type in the groups option. 5 | * @see https://perfectionist.dev/rules/sort-imports#tsconfigrootdir 6 | */ 7 | tsconfigPath?: string; 8 | }; 9 | -------------------------------------------------------------------------------- /src/configs/react/config.ts: -------------------------------------------------------------------------------- 1 | import type { TypedFlatConfigItem } from "#/types/type"; 2 | import { reactHooksPlugin, reactPlugin } from "#/utils/extension"; 3 | 4 | export const react = (): TypedFlatConfigItem => { 5 | return { 6 | name: "bluzzi/react", 7 | files: ["**/*.ts", "**/*.tsx"], 8 | plugins: { 9 | ...reactPlugin.configs.recommended.plugins, 10 | "react-hooks": reactHooksPlugin, 11 | }, 12 | languageOptions: { 13 | parserOptions: { 14 | ecmaFeatures: { 15 | jsx: true, 16 | }, 17 | }, 18 | sourceType: "module", 19 | }, 20 | rules: { 21 | ...reactPlugin.configs.recommended.rules, 22 | "react-hooks/rules-of-hooks": "error", 23 | "react-hooks/exhaustive-deps": "error", 24 | }, 25 | }; 26 | }; 27 | -------------------------------------------------------------------------------- /src/configs/react/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./config"; 2 | -------------------------------------------------------------------------------- /src/configs/stylistic/config.ts: -------------------------------------------------------------------------------- 1 | import type { ParamsStylistic } from "./type"; 2 | import type { TypedFlatConfigItem } from "#/types/type"; 3 | import { antfuPlugin, stylisticPlugin } from "#/utils/extension"; 4 | 5 | export const stylistic = ({ indent = 2, quotes = "double", semi = true, jsx = false }: ParamsStylistic = {}): TypedFlatConfigItem => { 6 | const config = stylisticPlugin.configs.customize({ indent, quotes, semi, jsx }); 7 | 8 | return { 9 | name: "bluzzi/stylistic", 10 | plugins: { 11 | "antfu": antfuPlugin, 12 | "@stylistic": stylisticPlugin, 13 | }, 14 | rules: { 15 | ...config.rules, 16 | 17 | "@stylistic/semi-style": "error", 18 | "@stylistic/no-extra-semi": "error", 19 | "@stylistic/function-call-spacing": "error", 20 | "@stylistic/generator-star-spacing": ["error", { before: false, after: true }], 21 | "@stylistic/implicit-arrow-linebreak": ["error", "beside"], 22 | "@stylistic/wrap-regex": "error", 23 | "@stylistic/nonblock-statement-body-position": "error", 24 | "@stylistic/arrow-parens": ["error", "always", { requireForBlockBody: false }], 25 | 26 | "@stylistic/jsx-props-no-multi-spaces": ["error"], 27 | "@stylistic/jsx-self-closing-comp": ["error", { component: true, html: true }], 28 | "@stylistic/jsx-curly-brace-presence": ["error", { props: "never", children: "never" }], 29 | 30 | "@stylistic/multiline-ternary": "off", // TODO: try the "never" option? 31 | 32 | "antfu/consistent-list-newline": "error", 33 | }, 34 | }; 35 | }; 36 | -------------------------------------------------------------------------------- /src/configs/stylistic/index.ts: -------------------------------------------------------------------------------- 1 | export type * from "./type"; 2 | export * from "./config"; 3 | -------------------------------------------------------------------------------- /src/configs/stylistic/type.ts: -------------------------------------------------------------------------------- 1 | export type ParamsStylistic = { 2 | /** 3 | * Indentation level 4 | * Similar to the `tabWidth` and `useTabs` options in Prettier 5 | * 6 | * @default 2 7 | */ 8 | indent?: number | "tab"; 9 | 10 | /** 11 | * Quote style 12 | * Similar to `singleQuote` option in Prettier 13 | * 14 | * @default 'double' 15 | */ 16 | quotes?: "single" | "double"; 17 | 18 | /** 19 | * Whether to enable semicolons 20 | * Similar to `semi` option in Prettier 21 | * 22 | * @default true 23 | */ 24 | semi?: boolean; 25 | 26 | /** 27 | * Whether to enable JSX 28 | * 29 | * @default false - enabled if "react" package is found 30 | */ 31 | jsx?: boolean; 32 | }; 33 | -------------------------------------------------------------------------------- /src/configs/typescript/config.ts: -------------------------------------------------------------------------------- 1 | import type { ParamsTS } from "./type"; 2 | import type { TypedFlatConfigItem } from "#/types/type"; 3 | import { typescriptParser, typescriptPlugin } from "#/utils/extension"; 4 | import { cwd } from "node:process"; 5 | 6 | export const typescript = ({ tsconfigPath }: ParamsTS = {}): TypedFlatConfigItem => { 7 | const isTypeChecked = typeof tsconfigPath !== "undefined"; 8 | 9 | const recommendedRules = isTypeChecked 10 | ? typescriptPlugin.configs["strict-type-checked"]?.rules ?? [] 11 | : typescriptPlugin.configs.strict?.rules ?? []; 12 | 13 | const stylisticRules = typescriptPlugin.configs["stylistic-type-checked"]?.rules; 14 | 15 | return { 16 | name: "bluzzi/typescript", 17 | plugins: { 18 | "@typescript-eslint": typescriptPlugin, 19 | }, 20 | languageOptions: { 21 | parser: typescriptParser, 22 | parserOptions: isTypeChecked 23 | ? { 24 | projectService: { defaultProject: tsconfigPath }, 25 | tsconfigRootDir: cwd(), 26 | } 27 | : {}, 28 | }, 29 | files: ["**/*.?([cm])[jt]s?(x)"], 30 | rules: { 31 | ...recommendedRules as Record, 32 | ...stylisticRules, 33 | "@typescript-eslint/ban-ts-comment": ["error", { "ts-expect-error": "allow-with-description" }], 34 | "@typescript-eslint/consistent-type-definitions": ["error", "type"], 35 | "@typescript-eslint/consistent-type-imports": ["error", { disallowTypeAnnotations: false, prefer: "type-imports", fixStyle: "separate-type-imports" }], 36 | "@typescript-eslint/consistent-type-exports": ["error", { fixMixedExportsWithInlineTypeSpecifier: false }], 37 | "@typescript-eslint/no-import-type-side-effects": "error", 38 | "@typescript-eslint/method-signature-style": ["error", "property"], 39 | "@typescript-eslint/no-require-imports": "error", 40 | "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }], 41 | "no-use-before-define": "off", 42 | "@typescript-eslint/no-use-before-define": ["error", { classes: false, functions: false, variables: true }], 43 | "@typescript-eslint/explicit-member-accessibility": "error", 44 | "@typescript-eslint/explicit-module-boundary-types": "off", // TODO: Check if this rule is relevant 45 | "@typescript-eslint/no-invalid-void-type": "off", // TODO: for undefined generics types (temporary?) 46 | "@typescript-eslint/prefer-enum-initializers": "error", 47 | "@typescript-eslint/prefer-find": "error", 48 | "@typescript-eslint/prefer-readonly": "error", 49 | "@typescript-eslint/prefer-regexp-exec": "error", 50 | "@typescript-eslint/promise-function-async": "error", 51 | "@typescript-eslint/require-array-sort-compare": "error", 52 | "no-return-await": "off", 53 | "@typescript-eslint/return-await": "error", 54 | "@typescript-eslint/strict-boolean-expressions": "off", // TODO: Check if this rule is relevant 55 | "@typescript-eslint/no-misused-promises": ["error", { checksVoidReturn: { attributes: false } }], // https://github.com/orgs/react-hook-form/discussions/8622 56 | "@typescript-eslint/no-non-null-assertion": "off", // TODO: Check if this rule is relevant 57 | "@typescript-eslint/no-confusing-void-expression": "off", // TODO: Check if this rule is relevant 58 | "@typescript-eslint/prefer-nullish-coalescing": "off", // TODO: Check if this rule is relevant 59 | "@typescript-eslint/no-unnecessary-type-parameters": "off", // TODO: Check if this rule is relevant (not working with `export const jwtDecode = (jwt: string): { expirationUnixTimestamp: number } & Payload => {`) 60 | }, 61 | }; 62 | }; 63 | -------------------------------------------------------------------------------- /src/configs/typescript/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./config"; 2 | export type * from "./type"; 3 | -------------------------------------------------------------------------------- /src/configs/typescript/type.ts: -------------------------------------------------------------------------------- 1 | export type ParamsTS = { 2 | /** 3 | * When this options is provided, type aware rules will be enabled. 4 | * @see https://typescript-eslint.io/linting/typed-linting/ 5 | */ 6 | tsconfigPath?: string; 7 | }; 8 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "#/utils/factory"; 2 | -------------------------------------------------------------------------------- /src/types/type.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | 3 | import type { ConfigNames, RuleOptions } from "./gen"; 4 | import type { ParamsStylistic } from "#/configs/stylistic"; 5 | import type { ParamsTS } from "#/configs/typescript"; 6 | import type { Linter } from "eslint"; 7 | 8 | export type Awaitable = T | Promise; 9 | 10 | export type Rules = RuleOptions; 11 | 12 | export type { ConfigNames }; 13 | 14 | export type TypedFlatConfigItem = Omit, "plugins"> & { 15 | name: `bluzzi/${string}`; 16 | 17 | /** 18 | * An object containing a name-value mapping of plugin names to plugin objects. 19 | * When `files` is specified, these plugins are only available to the matching files. 20 | * 21 | * [NOTE] Relax plugins type limitation, as most of the plugins did not have correct type info yet. 22 | * 23 | * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration) 24 | */ 25 | plugins?: Record; 26 | }; 27 | 28 | export type OptionsConfig = { 29 | /** 30 | * Enable TypeScript Language Server support. 31 | */ 32 | typescript?: ParamsTS; 33 | 34 | /** 35 | * Definitions of basic formatting rules. 36 | */ 37 | stylistic?: ParamsStylistic; 38 | }; 39 | -------------------------------------------------------------------------------- /src/utils/extension.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 2 | // @ts-nocheck 3 | 4 | export { default as antfuPlugin } from "eslint-plugin-antfu"; 5 | export { default as nodePlugin } from "eslint-plugin-n"; 6 | export { default as stylisticPlugin } from "@stylistic/eslint-plugin"; 7 | export { default as typescriptPlugin } from "@typescript-eslint/eslint-plugin"; 8 | export { default as nextjsPlugin } from "@next/eslint-plugin-next"; 9 | export { default as reactPlugin } from "@eslint-react/eslint-plugin"; 10 | export { default as reactHooksPlugin } from "eslint-plugin-react-hooks"; 11 | export { default as perfectionistPlugin } from "eslint-plugin-perfectionist"; 12 | 13 | export { default as typescriptParser } from "@typescript-eslint/parser"; 14 | -------------------------------------------------------------------------------- /src/utils/factory.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-unsafe-argument */ 2 | /* eslint-disable @typescript-eslint/no-explicit-any */ 3 | 4 | import type { Awaitable, ConfigNames, OptionsConfig, TypedFlatConfigItem } from "#/types/type"; 5 | import type { Linter } from "eslint"; 6 | import { ignore } from "#/configs/ignore"; 7 | import { javascript } from "#/configs/javascript/config"; 8 | import { nextjs } from "#/configs/nextjs"; 9 | import { node } from "#/configs/node"; 10 | import { perfectionist } from "#/configs/perfectionist"; 11 | import { react } from "#/configs/react"; 12 | import { stylistic } from "#/configs/stylistic/config"; 13 | import { typescript } from "#/configs/typescript/config"; 14 | import { logger } from "#/utils/logger"; 15 | import { FlatConfigComposer } from "eslint-flat-config-utils"; 16 | import { isPackageExists } from "local-pkg"; 17 | 18 | export const eslintConfig = async ( 19 | options: OptionsConfig = {}, 20 | ...userConfigs: Awaitable | Linter.Config[]>[] 21 | ): Promise> => { 22 | const configs: TypedFlatConfigItem[] = []; 23 | 24 | const enabled = { 25 | typescript: isPackageExists("typescript"), 26 | react: isPackageExists("react"), 27 | nextjs: isPackageExists("next"), 28 | }; 29 | 30 | // Ignore: 31 | logger.info("ignore - config enabled"); 32 | configs.push(ignore()); 33 | 34 | // JS: 35 | logger.info("javascript - config enabled"); 36 | configs.push(javascript()); 37 | 38 | // TS: 39 | if (enabled.typescript) { 40 | logger.info("typescript - config enabled (typescript package found)"); 41 | configs.push(typescript(options.typescript)); 42 | } 43 | 44 | // Node: 45 | logger.info("node - config enabled"); 46 | configs.push(node()); 47 | 48 | // Stylistic: 49 | logger.info("stylistic - config enabled"); 50 | configs.push(stylistic({ ...options.stylistic, jsx: enabled.react })); 51 | 52 | // React: 53 | if (enabled.react) { 54 | logger.info("react - config enabled"); 55 | configs.push(react()); 56 | } 57 | 58 | // NextJS: 59 | if (enabled.nextjs) { 60 | logger.info("nextjs - config enabled"); 61 | configs.push(nextjs()); 62 | } 63 | 64 | // Stylistic: 65 | logger.info("perfectionist - config enabled"); 66 | configs.push(perfectionist({ tsconfigPath: options.typescript?.tsconfigPath })); 67 | 68 | // Compose: 69 | const composer = new FlatConfigComposer(); 70 | await composer.append(...configs, ...userConfigs as any); 71 | 72 | return composer; 73 | }; 74 | -------------------------------------------------------------------------------- /src/utils/logger.ts: -------------------------------------------------------------------------------- 1 | export const ConsoleEffect = { 2 | Reset: "\x1b[0m", 3 | Bold: "\x1b[1m", 4 | Thin: "\x1b[2m", 5 | Underscore: "\x1b[4m", 6 | Blink: "\x1b[5m", 7 | Reverse: "\x1b[7m", 8 | Hidden: "\x1b[8m", 9 | }; 10 | 11 | export const ConsoleForground = { 12 | Gray: "\x1b[30m", 13 | Red: "\x1b[31m", 14 | Green: "\x1b[32m", 15 | Yellow: "\x1b[33m", 16 | Blue: "\x1b[34m", 17 | Magenta: "\x1b[35m", 18 | Cyan: "\x1b[36m", 19 | White: "\x1b[37m", 20 | }; 21 | 22 | export const ConsoleBackground = { 23 | Gray: "\x1b[40m", 24 | Red: "\x1b[41m", 25 | Green: "\x1b[42m", 26 | Yellow: "\x1b[43m", 27 | Blue: "\x1b[44m", 28 | Magenta: "\x1b[45m", 29 | Cyan: "\x1b[46m", 30 | White: "\x1b[47m", 31 | }; 32 | 33 | class Logger { 34 | public info(message: string): void { 35 | console.log(`[${ConsoleForground.Blue}i${ConsoleEffect.Reset}]: ${message}`); 36 | } 37 | 38 | public success(message: string): void { 39 | console.log(`[${ConsoleForground.Green}√${ConsoleEffect.Reset}]: ${message}`); 40 | } 41 | 42 | public warn(message: string): void { 43 | console.log(`[${ConsoleForground.Yellow}!${ConsoleEffect.Reset}]: ${message}`); 44 | } 45 | 46 | public error(message: string): void { 47 | console.log(`[${ConsoleForground.Red}×${ConsoleEffect.Reset}]: ${message}`); 48 | } 49 | } 50 | 51 | export const logger = new Logger(); 52 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | /* Cheat Sheet: https://www.totaltypescript.com/tsconfig-cheat-sheet */ 3 | 4 | "compilerOptions": { 5 | /* Base Options: */ 6 | "esModuleInterop": true, 7 | "skipLibCheck": true, 8 | "target": "ES2024", 9 | "allowJs": true, 10 | "resolveJsonModule": true, 11 | "moduleDetection": "force", 12 | "isolatedModules": true, 13 | "verbatimModuleSyntax": true, 14 | 15 | /* Strictness */ 16 | "strict": true, 17 | "noUncheckedIndexedAccess": true, 18 | "noImplicitOverride": true, 19 | 20 | /* If NOT transpiling with TypeScript: */ 21 | "module": "preserve", 22 | "noEmit": true, 23 | 24 | /* If your code doesn't run in the DOM: */ 25 | "lib": ["es2022"], 26 | 27 | /* Custom paths: */ 28 | "baseUrl": ".", 29 | "paths": { 30 | "#/*": ["./src/*"] 31 | }, 32 | } 33 | } --------------------------------------------------------------------------------