├── renovate.json ├── example ├── .prettierrc ├── input.css ├── tailwind.config.cjs └── index.html ├── .gitignore ├── .vscode └── settings.json ├── prettier.config.js ├── gen-types.mjs ├── tsconfig.json ├── .codesandbox └── tasks.json ├── LICENSE ├── eslint.config.js ├── src ├── dynamic.ts ├── utils.ts ├── core.test.ts ├── index.ts ├── core.ts └── index.test.ts ├── package.json ├── .github └── workflows │ └── ci.yml ├── README.md └── pnpm-lock.yaml /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["config:base"] 3 | } 4 | -------------------------------------------------------------------------------- /example/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["prettier-plugin-tailwindcss"] 3 | } 4 | -------------------------------------------------------------------------------- /example/input.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | *.log 5 | /types.ts 6 | output.css 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "editor.defaultFormatter": "esbenp.prettier-vscode", 4 | "eslint.experimental.useFlatConfig": true 5 | } 6 | -------------------------------------------------------------------------------- /example/tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | const { 2 | iconsPlugin, 3 | dynamicIconsPlugin, 4 | getIconCollections, 5 | } = require("../dist/index.cjs"); 6 | 7 | module.exports = { 8 | content: ["./index.html"], 9 | plugins: [ 10 | iconsPlugin({ 11 | scale: 10, 12 | strokeWidth: 1, 13 | collections: getIconCollections(["lucide", "tabler"]), 14 | }), 15 | dynamicIconsPlugin({ scale: 10 }), 16 | ], 17 | }; 18 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('@ianvs/prettier-plugin-sort-imports').PrettierConfig} */ 2 | export default { 3 | semi: false, 4 | overrides: [ 5 | { 6 | files: "pnpm-lock.yaml", 7 | options: { 8 | requirePragma: true, 9 | }, 10 | }, 11 | ], 12 | plugins: ["@ianvs/prettier-plugin-sort-imports"], 13 | importOrder: [ 14 | "", 15 | "", 16 | "", 17 | "^[.]", 18 | "", 19 | "", 20 | ], 21 | } 22 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 |
12 |
13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /gen-types.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import fs from "fs" 3 | import { createRequire } from "module" 4 | 5 | const req = createRequire(import.meta.url) 6 | const collections = req("@iconify/json/collections.json") 7 | 8 | fs.writeFileSync( 9 | "types.ts", 10 | `export const collectionNames = [${Object.keys(collections) 11 | .map((v) => JSON.stringify(v)) 12 | .join(", ")}] as const 13 | /** All the available icon collections when you have \`@iconify/json\` installed */\nexport type CollectionNames = typeof collectionNames[number] 14 | `, 15 | ) 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Base Options: */ 4 | "esModuleInterop": true, 5 | "skipLibCheck": true, 6 | "target": "es2022", 7 | "allowJs": true, 8 | "resolveJsonModule": true, 9 | "moduleDetection": "force", 10 | "isolatedModules": true, 11 | /* Strictness */ 12 | "strict": true, 13 | "noUncheckedIndexedAccess": true, 14 | /* If NOT transpiling with TypeScript: */ 15 | "moduleResolution": "Bundler", 16 | "module": "ESNext", 17 | "noEmit": true, 18 | /* If your code doesn't run in the DOM: */ 19 | "lib": ["es2022"] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.codesandbox/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // These tasks will run in order when initializing your CodeSandbox project. 3 | "setupTasks": [ 4 | { 5 | "name": "Install Dependencies", 6 | "command": "pnpm install" 7 | } 8 | ], 9 | 10 | // These tasks can be run from CodeSandbox. Running one will open a log in the app. 11 | "tasks": { 12 | "build-fast": { 13 | "name": "build-fast", 14 | "command": "pnpm build-fast", 15 | "runAtStart": false 16 | }, 17 | "build": { 18 | "name": "build", 19 | "command": "pnpm build", 20 | "runAtStart": true 21 | }, 22 | "test": { 23 | "name": "test", 24 | "command": "pnpm test", 25 | "runAtStart": false 26 | }, 27 | "prepublishOnly": { 28 | "name": "prepublishOnly", 29 | "command": "pnpm prepublishOnly", 30 | "runAtStart": false 31 | }, 32 | "gen-types": { 33 | "name": "gen-types", 34 | "command": "pnpm gen-types", 35 | "runAtStart": false 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright © 2021 EGOIST (https://github.com/sponsors/egoist) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import process from "node:process" 2 | import ts from "@typescript-eslint/eslint-plugin" 3 | import tsParser from "@typescript-eslint/parser" 4 | 5 | const files = ["src/**/*.ts"] 6 | const languageOptions = { 7 | parser: tsParser, 8 | parserOptions: { 9 | project: true, 10 | tsconfigRootDir: process.cwd(), 11 | }, 12 | } 13 | const linterOptions = { 14 | reportUnusedDisableDirectives: true, 15 | } 16 | const plugins = { 17 | "@typescript-eslint": ts, 18 | } 19 | 20 | export default [ 21 | // don't lint js files 22 | { 23 | ignores: ["**/*.js", "**/*.cjs", "**/*.mjs"], 24 | }, 25 | { 26 | files, 27 | languageOptions, 28 | linterOptions, 29 | plugins, 30 | rules: { 31 | ...ts.configs["eslint-recommended"].overrides[0].rules, 32 | ...ts.configs["recommended"].rules, 33 | "no-unused-vars": "off", 34 | "@typescript-eslint/no-unused-vars": [ 35 | "error", 36 | { 37 | argsIgnorePattern: "^_", 38 | varsIgnorePattern: "^_", 39 | }, 40 | ], 41 | 42 | "@typescript-eslint/no-non-null-assertion": "off", 43 | 44 | "@typescript-eslint/consistent-type-imports": "error", 45 | "@typescript-eslint/consistent-type-exports": "error", 46 | "@typescript-eslint/no-import-type-side-effects": "error", 47 | 48 | "no-console": ["warn", { allow: ["warn", "error"] }], 49 | }, 50 | }, 51 | ] 52 | -------------------------------------------------------------------------------- /src/dynamic.ts: -------------------------------------------------------------------------------- 1 | import { collectionNames } from "../types" 2 | import { generateComponent, getIconCollections } from "./core" 3 | 4 | import type { CollectionNames } from "../types" 5 | import type { GenerateOptions } from "./core" 6 | import type { IconifyJSON } from "@iconify/types" 7 | 8 | const cache = new Map() 9 | 10 | function getIconCollection(name: CollectionNames) { 11 | const cached = cache.get(name) 12 | if (cached) return cached 13 | 14 | const collection = getIconCollections([name])[name] 15 | if (collection) cache.set(name, collection) 16 | return collection 17 | } 18 | 19 | export function getDynamicCSSRules( 20 | icon: string, 21 | options: GenerateOptions, 22 | ): Record { 23 | const nameParts = icon.split(/--|\:/) 24 | if (nameParts.length !== 2) { 25 | throw new Error(`Invalid icon name: "${icon}"`) 26 | } 27 | 28 | const prefix = nameParts[0] 29 | const name = nameParts[1]! 30 | if (!collectionNames.includes(prefix as CollectionNames)) { 31 | throw new Error(`Invalid collection name: "${prefix}"`) 32 | } 33 | 34 | const icons = getIconCollection(prefix as CollectionNames) 35 | 36 | const generated = generateComponent( 37 | { 38 | icons, 39 | name, 40 | }, 41 | options, 42 | ) 43 | if (!generated) { 44 | throw new Error(`Invalid icon name: "${icon}"`) 45 | } 46 | 47 | return generated 48 | } 49 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | export type Optional = Pick, K> & Omit 2 | 3 | function callsites() { 4 | const _prepareStackTrace = Error.prepareStackTrace 5 | try { 6 | let result: NodeJS.CallSite[] = [] 7 | Error.prepareStackTrace = (_, callSites) => { 8 | const callSitesWithoutCurrent = callSites.slice(1) 9 | result = callSitesWithoutCurrent 10 | return callSitesWithoutCurrent 11 | } 12 | 13 | // eslint-disable-next-line @typescript-eslint/no-unused-expressions 14 | new Error().stack 15 | return result 16 | } finally { 17 | Error.prepareStackTrace = _prepareStackTrace 18 | } 19 | } 20 | 21 | function callerPath1() { 22 | const callSites = callsites() 23 | if (!callSites[0]) return 24 | return callSites[0].getFileName() 25 | } 26 | 27 | function callerPath2() { 28 | const error = new Error() 29 | const stack = error.stack?.split("\n") as string[] 30 | 31 | const data = stack.find( 32 | (line) => 33 | !line.trim().startsWith("Error") && 34 | !line.includes("(") && 35 | !line.includes(")"), 36 | ) 37 | if (!data) { 38 | return 39 | } 40 | 41 | const filePathPattern = new RegExp( 42 | /\s*at (\/.*|[a-zA-Z]:\\(?:([^<>:"\/\\|?*]*[^<>:"\/\\|?*.]\\|..\\)*([^<>:"\/\\|?*]*[^<>:"\/\\|?*.]\\?|..\\))?):\d+:\d+/i, 43 | ) 44 | const result = filePathPattern.exec(data) 45 | if (!result) { 46 | return 47 | } 48 | 49 | return result[1] 50 | } 51 | 52 | export function callerPath() { 53 | return callerPath1() ?? callerPath2() 54 | } 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@egoist/tailwindcss-icons", 3 | "version": "0.0.0", 4 | "description": "Icons utility for TailwindCSS", 5 | "publishConfig": { 6 | "access": "public" 7 | }, 8 | "type": "module", 9 | "files": [ 10 | "dist" 11 | ], 12 | "exports": { 13 | ".": { 14 | "import": { 15 | "types": "./dist/index.d.ts", 16 | "default": "./dist/index.js" 17 | }, 18 | "require": { 19 | "types": "./dist/index.d.cts", 20 | "default": "./dist/index.cjs" 21 | }, 22 | "types": "./dist/index.d.ts", 23 | "default": "./dist/index.js" 24 | } 25 | }, 26 | "main": "./dist/index.cjs", 27 | "module": "./dist/index.js", 28 | "types": "./dist/index.d.ts", 29 | "scripts": { 30 | "prepare": "pnpm run gen-types", 31 | "gen-types": "node ./gen-types.mjs", 32 | "build-fast": "pnpm gen-types && tsup src/index.ts --format cjs,esm", 33 | "build": "pnpm run build-fast --dts-resolve", 34 | "prepublishOnly": "pnpm run build", 35 | "test": "vitest run", 36 | "format": "prettier --write .", 37 | "format:check": "prettier --check .", 38 | "lint": "eslint --max-warnings 0 ." 39 | }, 40 | "license": "MIT", 41 | "packageManager": "pnpm@9.15.4", 42 | "devDependencies": { 43 | "@ianvs/prettier-plugin-sort-imports": "^4.4.1", 44 | "@iconify-json/heroicons": "^1.2.2", 45 | "@iconify/json": "^2.2.299", 46 | "@iconify/types": "^2.0.0", 47 | "@types/node": "^22.10.10", 48 | "@typescript-eslint/eslint-plugin": "^8.21.0", 49 | "@typescript-eslint/parser": "^8.21.0", 50 | "eslint": "^9.18.0", 51 | "postcss": "^8.5.1", 52 | "prettier": "^3.4.2", 53 | "prettier-plugin-tailwindcss": "^0.6.11", 54 | "tailwindcss": "^3.4.17", 55 | "tsup": "^8.3.5", 56 | "typescript": "^5.7.3", 57 | "vitest": "^3.0.4" 58 | }, 59 | "dependencies": { 60 | "@iconify/utils": "^2.2.1" 61 | }, 62 | "peerDependencies": { 63 | "tailwindcss": "*" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | test: 11 | if: "!contains(github.event.head_commit.message, 'skip-ci')" 12 | 13 | strategy: 14 | matrix: 15 | os: [ubuntu-latest, windows-latest] 16 | node-version: [18.x] 17 | 18 | runs-on: ${{ matrix.os }} 19 | 20 | # Steps represent a sequence of tasks that will be executed as part of the job 21 | steps: 22 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 23 | - uses: actions/checkout@v3 24 | 25 | - uses: actions/setup-node@v3 26 | with: 27 | node-version: ${{ matrix.node-version }} 28 | 29 | - name: Cache ~/.pnpm-store 30 | uses: actions/cache@v2 31 | env: 32 | cache-name: cache-pnpm-store 33 | with: 34 | path: ~/.pnpm-store 35 | key: ${{ runner.os }}-${{ matrix.node-version }}-test-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} 36 | restore-keys: | 37 | ${{ runner.os }}-${{ matrix.node-version }}-test-${{ env.cache-name }}- 38 | ${{ runner.os }}-${{ matrix.node-version }}-test- 39 | ${{ runner.os }}- 40 | 41 | - name: Install pnpm 42 | run: npm i -g pnpm 43 | 44 | - name: Install deps 45 | run: pnpm i 46 | 47 | # Runs a set of commands using the runners shell 48 | - name: Build and Test 49 | run: pnpm test 50 | 51 | release: 52 | runs-on: ubuntu-latest 53 | needs: ["test"] 54 | if: "!contains(github.event.head_commit.message, 'skip-release') && !contains(github.event.head_commit.message, 'skip-ci') && github.event_name != 'pull_request'" 55 | steps: 56 | - uses: actions/checkout@v3 57 | - uses: actions/setup-node@v3 58 | with: 59 | node-version: 18.x 60 | - name: Cache ~/.pnpm-store 61 | uses: actions/cache@v2 62 | env: 63 | cache-name: cache-pnpm-store 64 | with: 65 | path: ~/.pnpm-store 66 | key: ${{ runner.os }}-${{ matrix.node-version }}-release-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} 67 | restore-keys: | 68 | ${{ runner.os }}-${{ matrix.node-version }}-release-${{ env.cache-name }}- 69 | ${{ runner.os }}-${{ matrix.node-version }}-release- 70 | ${{ runner.os }}- 71 | - run: npm i -g pnpm 72 | - run: pnpm i 73 | - run: pnpm dlx semantic-release@20 --branches main 74 | env: 75 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 76 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 77 | -------------------------------------------------------------------------------- /src/core.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest" 2 | 3 | import { generateComponent, getIconCollections } from "./core" 4 | 5 | test("generateComponent", () => { 6 | const collections = getIconCollections(["mdi"]) 7 | expect( 8 | generateComponent( 9 | { icons: collections["mdi"], name: "home" }, 10 | { 11 | scale: 1.5, 12 | extraProperties: { 13 | "-webkit-mask-size": "contain", 14 | "-webkit-mask-position": "center", 15 | }, 16 | }, 17 | ), 18 | ).toMatchInlineSnapshot(` 19 | { 20 | "--svg": "url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/svg%3E")", 21 | "-webkit-mask-image": "var(--svg)", 22 | "-webkit-mask-position": "center", 23 | "-webkit-mask-repeat": "no-repeat", 24 | "-webkit-mask-size": "contain", 25 | "background-color": "currentColor", 26 | "display": "inline-block", 27 | "height": "1.5em", 28 | "mask-image": "var(--svg)", 29 | "mask-repeat": "no-repeat", 30 | "mask-size": "100% 100%", 31 | "width": "1.5em", 32 | } 33 | `) 34 | }) 35 | 36 | test("generate component with custom stroke width", () => { 37 | const collections = getIconCollections(["lucide", "mdi", "gala"]) 38 | 39 | expect( 40 | generateComponent( 41 | { icons: collections["mdi"], name: "home" }, 42 | { strokeWidth: 1 }, 43 | ), 44 | ).toMatchInlineSnapshot(` 45 | { 46 | "--svg": "url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg stroke-width='1'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/g%3E%3C/svg%3E")", 47 | "-webkit-mask-image": "var(--svg)", 48 | "-webkit-mask-repeat": "no-repeat", 49 | "-webkit-mask-size": "100% 100%", 50 | "background-color": "currentColor", 51 | "display": "inline-block", 52 | "height": "undefinedem", 53 | "mask-image": "var(--svg)", 54 | "mask-repeat": "no-repeat", 55 | "mask-size": "100% 100%", 56 | "width": "undefinedem", 57 | } 58 | `) 59 | 60 | expect( 61 | generateComponent( 62 | { icons: collections["lucide"], name: "home" }, 63 | { strokeWidth: 1 }, 64 | ), 65 | ).toMatchInlineSnapshot(` 66 | { 67 | "--svg": "url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'%3E%3Cpath d='M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8'/%3E%3Cpath d='M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3C/g%3E%3C/svg%3E")", 68 | "-webkit-mask-image": "var(--svg)", 69 | "-webkit-mask-repeat": "no-repeat", 70 | "-webkit-mask-size": "100% 100%", 71 | "background-color": "currentColor", 72 | "display": "inline-block", 73 | "height": "undefinedem", 74 | "mask-image": "var(--svg)", 75 | "mask-repeat": "no-repeat", 76 | "mask-size": "100% 100%", 77 | "width": "undefinedem", 78 | } 79 | `) 80 | }) 81 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { parseIconSet } from "@iconify/utils" 2 | import plugin from "tailwindcss/plugin.js" 3 | 4 | import { collectionNames } from "../types" 5 | import { 6 | generateIconComponent, 7 | getIconCollections, 8 | isPackageExists, 9 | } from "./core" 10 | import { getDynamicCSSRules } from "./dynamic" 11 | 12 | import type { CollectionNames } from "../types" 13 | import type { GenerateOptions } from "./core" 14 | import type { Optional } from "./utils" 15 | import type { IconifyJSONIconsData } from "@iconify/types" 16 | 17 | export { getIconCollections, collectionNames, type CollectionNames } 18 | 19 | type CollectionNamesAlias = { 20 | [key in CollectionNames]?: string 21 | } 22 | 23 | export type IconsPluginOptions = { 24 | collections?: Record> 25 | /** 26 | * alias to customize collection names 27 | * @default {} 28 | */ 29 | collectionNamesAlias?: CollectionNamesAlias 30 | /** 31 | * Class prefix for matching icon rules. 32 | * 33 | * @default `i` 34 | */ 35 | prefix?: string 36 | } & GenerateOptions 37 | 38 | type PluginFn = Parameters[0] 39 | const getPluginFunction = ( 40 | iconsPluginOptions?: IconsPluginOptions, 41 | ): PluginFn => { 42 | const { 43 | collections: propsCollections, 44 | scale = 1, 45 | prefix = "i", 46 | extraProperties = {}, 47 | strokeWidth, 48 | collectionNamesAlias = {}, 49 | } = iconsPluginOptions ?? {} 50 | 51 | const collections = 52 | propsCollections ?? 53 | getIconCollections( 54 | collectionNames.filter((name) => 55 | isPackageExists(`@iconify-json/${name}`), 56 | ), 57 | ) 58 | const components: Record> = {} 59 | 60 | for (const prefix of Object.keys(collections) as CollectionNames[]) { 61 | const collection: IconifyJSONIconsData = { 62 | ...collections[prefix], 63 | prefix, 64 | } 65 | parseIconSet(collection, (name, data) => { 66 | if (!data) return 67 | const collectionName = 68 | collectionNamesAlias[prefix as CollectionNames] ?? prefix 69 | components[`${collectionName}-${name}`] = generateIconComponent(data, { 70 | scale, 71 | extraProperties, 72 | strokeWidth, 73 | }) 74 | }) 75 | } 76 | return ({ matchComponents }) => { 77 | matchComponents( 78 | { 79 | [prefix]: (value) => { 80 | if (typeof value === "string") return components[value] ?? null 81 | return value 82 | }, 83 | }, 84 | { 85 | values: components, 86 | }, 87 | ) 88 | } 89 | } 90 | 91 | export const iconsPlugin = (iconsPluginOptions?: IconsPluginOptions) => { 92 | return plugin(getPluginFunction(iconsPluginOptions)) 93 | } 94 | 95 | export const dynamicIconsPlugin = ( 96 | iconsPluginOptions?: Omit< 97 | IconsPluginOptions, 98 | "collections" | "collectionNamesAlias" 99 | >, 100 | ) => { 101 | const { 102 | prefix = "i", 103 | scale = 1, 104 | strokeWidth, 105 | extraProperties = {}, 106 | } = iconsPluginOptions ?? {} 107 | 108 | return plugin(({ matchComponents }) => { 109 | matchComponents({ 110 | [prefix]: (value) => 111 | getDynamicCSSRules(value, { scale, extraProperties, strokeWidth }), 112 | }) 113 | }) 114 | } 115 | 116 | export default plugin.withOptions((iconsPluginOptions) => { 117 | return getPluginFunction(iconsPluginOptions) 118 | }) 119 | -------------------------------------------------------------------------------- /src/core.ts: -------------------------------------------------------------------------------- 1 | import fs from "fs" 2 | import { createRequire } from "module" 3 | import path from "path" 4 | import { getIconCSS, getIconData } from "@iconify/utils" 5 | 6 | import { callerPath } from "./utils" 7 | 8 | import type { CollectionNames } from "../types" 9 | import type { IconifyIcon, IconifyJSON } from "@iconify/types" 10 | 11 | export type GenerateOptions = { 12 | /** 13 | * Scale relative to the current font size (1em). 14 | * 15 | * @default 1 16 | */ 17 | scale?: number 18 | /** 19 | * Extra CSS properties applied to the generated CSS. 20 | * 21 | * @default `{}` 22 | */ 23 | extraProperties?: Record 24 | 25 | /** 26 | * Stroke width applied to the generated CSS. 27 | * 28 | * @default `undefined` 29 | */ 30 | strokeWidth?: number 31 | } 32 | 33 | declare const TSUP_FORMAT: "esm" | "cjs" 34 | const req = 35 | typeof TSUP_FORMAT === "undefined" || TSUP_FORMAT === "cjs" 36 | ? require 37 | : createRequire(import.meta.url) 38 | 39 | export const localResolve = (cwd: string, id: string) => { 40 | try { 41 | const resolved = req.resolve(id, { paths: [cwd] }) 42 | return resolved 43 | } catch { 44 | return null 45 | } 46 | } 47 | 48 | export const isPackageExists = (id: string) => { 49 | const p = callerPath() 50 | const cwd = p ? path.dirname(p) : process.cwd() 51 | return Boolean(localResolve(cwd, id)) 52 | } 53 | 54 | export function getIconCollections( 55 | include: T[] | "all", 56 | ): Record | Record { 57 | const p = callerPath() 58 | const cwd = p ? path.dirname(p) : process.cwd() 59 | 60 | const pkgPath = localResolve(cwd, "@iconify/json/package.json") 61 | if (!pkgPath) { 62 | if (Array.isArray(include)) { 63 | return include.reduce( 64 | (result, name) => { 65 | const jsonPath = localResolve(cwd, `@iconify-json/${name}/icons.json`) 66 | if (!jsonPath) { 67 | throw new Error( 68 | `Icon collection "${name}" not found. Please install @iconify-json/${name} or @iconify/json`, 69 | ) 70 | } 71 | return { 72 | ...result, 73 | [name]: req(jsonPath), 74 | } 75 | }, 76 | {} as Record, 77 | ) 78 | } 79 | return {} as Record 80 | } 81 | const pkgDir = path.dirname(pkgPath) 82 | const files = fs.readdirSync(path.join(pkgDir, "json")) 83 | const collections: Record = {} 84 | for (const file of files) { 85 | if ( 86 | include === "all" || 87 | (include as string[]).includes(file.replace(".json", "")) 88 | ) { 89 | const json: IconifyJSON = req(path.join(pkgDir, "json", file)) 90 | collections[json.prefix] = json 91 | } 92 | } 93 | return collections 94 | } 95 | 96 | export const generateIconComponent = ( 97 | data: IconifyIcon, 98 | options: GenerateOptions, 99 | ) => { 100 | if (options.strokeWidth) { 101 | const strokeWidthRegex = /stroke-width="\d+"/g 102 | const match = data.body.match(strokeWidthRegex) 103 | const noStrokeWidth = !match 104 | const isAllStrokeWidthAreEqual = 105 | match && match.every((strokeWidth) => strokeWidth === match[0]) 106 | if (isAllStrokeWidthAreEqual) { 107 | data.body = data.body.replace( 108 | strokeWidthRegex, 109 | `stroke-width="${options.strokeWidth}"`, 110 | ) 111 | } 112 | if (noStrokeWidth) { 113 | data.body = `${data.body}` 114 | } 115 | } 116 | 117 | const css = getIconCSS(data, {}) 118 | const rules: Record = {} 119 | css.replace(/^\s+([^:]+):\s*(.+);$/gm, (_, prop, value) => { 120 | if (prop === "width" || prop === "height") { 121 | rules[prop] = `${options.scale}em` 122 | } else { 123 | rules[prop] = value 124 | } 125 | return "" 126 | }) 127 | if (options.extraProperties) { 128 | Object.assign(rules, options.extraProperties) 129 | } 130 | return rules 131 | } 132 | 133 | export const generateComponent = ( 134 | { 135 | name, 136 | icons, 137 | }: { 138 | name: string 139 | icons: IconifyJSON 140 | }, 141 | options: GenerateOptions, 142 | ) => { 143 | const data = getIconData(icons, name) 144 | if (!data) return null 145 | return generateIconComponent(data, options) 146 | } 147 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **💛 You can help the author become a full-time open-source maintainer by [sponsoring him on GitHub](https://github.com/sponsors/egoist).** 2 | 3 | --- 4 | 5 | # @egoist/tailwindcss-icons 6 | 7 | > Use any icon from [Iconify](https://iconify.design/) 8 | 9 | [![npm version](https://badgen.net/npm/v/@egoist/tailwindcss-icons)](https://npm.im/@egoist/tailwindcss-icons) [![npm downloads](https://badgen.net/npm/dm/@egoist/tailwindcss-icons)](https://npm.im/@egoist/tailwindcss-icons) 10 | 11 | preview 12 | 13 | ## Install 14 | 15 | ```bash 16 | npm i @egoist/tailwindcss-icons -D 17 | ``` 18 | 19 | ## Usage 20 | 21 | With TailwindCSS v4 css config: 22 | 23 | ```css 24 | @plugin '@egoist/tailwindcss-icons'; 25 | 26 | /* pass options to the plugin */ 27 | @plugin '@egoist/tailwindcss-icons' { 28 | scale: 1.5; 29 | } 30 | ``` 31 | 32 | With js config: 33 | 34 | ```css 35 | @config "path/to/your/tailwind.config.ts"; 36 | ``` 37 | 38 | In your `tailwind.config.js`: 39 | 40 | ```js 41 | const { iconsPlugin, getIconCollections } = require("@egoist/tailwindcss-icons") 42 | 43 | module.exports = { 44 | plugins: [ 45 | iconsPlugin({ 46 | // Select the icon collections you want to use 47 | // You can also ignore this option to automatically discover all individual icon packages you have installed 48 | // If you install @iconify/json, you should explicitly specify the collections you want to use, like this: 49 | collections: getIconCollections(["mdi", "lucide"]), 50 | // If you want to use all icons from @iconify/json, you can do this: 51 | // collections: getIconCollections("all"), 52 | // and the more recommended way is to use `dynamicIconsPlugin`, see below. 53 | }), 54 | ], 55 | } 56 | ``` 57 | 58 | You also need to install `@iconify/json` (full icon collections, 50MB) or `@iconify-json/{collection_name}` (individual icon package): 59 | 60 | ```bash 61 | # install every icon: 62 | npm i @iconify/json -D 63 | 64 | # or install individual packages like this: 65 | npm i @iconify-json/mdi @iconify-json/lucide -D 66 | ``` 67 | 68 | Then you can use the icons in your HTML: 69 | 70 | ```html 71 | 72 | 73 | ``` 74 | 75 | Search the icon you want to use here: https://icones.js.org 76 | 77 | > [!TIP] 78 | > To get the full list of icon names as typescript type, you can refer to [this issue](https://github.com/egoist/tailwindcss-icons/issues/18#issuecomment-1987191833). 79 | 80 | ### Plugin Options 81 | 82 | | Option | Type | Default | Description | 83 | | -------------------- | --------------------------------- | ----------- | -------------------------------------------------------- | 84 | | prefix | string | `i` | Class prefix for matching icon rules | 85 | | scale | number | `1` | Scale relative to the current font size | 86 | | strokeWidth | number | `undefined` | Stroke width for icons (this may not work for all icons) | 87 | | extraProperties | Record | `{}` | Extra CSS properties applied to the generated CSS. | 88 | | collectionNamesAlias | [key in CollectionNames]?: string | `{}` | Alias to customize collection names. | 89 | 90 | ### Custom Icons 91 | 92 | You can also use custom icons with this plugin, for example: 93 | 94 | ```js 95 | module.exports = { 96 | plugins: [ 97 | iconsPlugin({ 98 | collections: { 99 | foo: { 100 | icons: { 101 | "arrow-left": { 102 | // svg body 103 | body: '', 104 | // svg width and height, optional 105 | width: 24, 106 | height: 24, 107 | }, 108 | }, 109 | }, 110 | }, 111 | }), 112 | ], 113 | } 114 | ``` 115 | 116 | Then you can use this custom icon as class name: `i-foo-arrow-left`. 117 | 118 | > [!TIP] 119 | > To read custom icons from directory, you can refer to [Load svgs from filesystem](https://github.com/egoist/tailwindcss-icons/issues/37) 120 | 121 | ### Generate Icon Dynamically 122 | 123 | The idea is from [@iconify/tailwind](https://iconify.design/docs/usage/css/tailwind), 124 | thanks to the author of Iconify for the great work! 125 | 126 | If you want to install `@iconify/json` and use whatever icon you want, 127 | you should add another plugin to your `tailwind.config.js`. 128 | 129 | This is because we can not provide autocomplete for all icons from `@iconify/json`, 130 | it will make your editor slow. 131 | 132 | ```js 133 | const { iconsPlugin, dynamicIconsPlugin } = require("@egoist/tailwindcss-icons") 134 | 135 | module.exports = { 136 | plugins: [iconsPlugin(), dynamicIconsPlugin()], 137 | } 138 | ``` 139 | 140 | Then you can use icons dynamically like ``. 141 | 142 | ## Sponsors 143 | 144 | [![sponsors](https://sponsors-images.egoist.dev/sponsors.svg)](https://github.com/sponsors/egoist) 145 | 146 | ## License 147 | 148 | MIT © [EGOIST](https://github.com/sponsors/egoist) 149 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import postcss from "postcss" 2 | import tailwindcss from "tailwindcss" 3 | import { expect, test } from "vitest" 4 | 5 | import { dynamicIconsPlugin, getIconCollections, iconsPlugin } from "." 6 | 7 | test("main", async () => { 8 | const result = await postcss([ 9 | tailwindcss({ 10 | config: { 11 | content: [ 12 | { 13 | raw: '', 14 | extension: "html", 15 | }, 16 | ], 17 | plugins: [ 18 | iconsPlugin({ 19 | collections: getIconCollections(["mdi", "tabler"]), 20 | }), 21 | ], 22 | }, 23 | }), 24 | ]).process(` 25 | @tailwind components; 26 | 27 | .foo { 28 | @apply i-mdi-home; 29 | } 30 | 31 | .bar { 32 | @apply i-mdi-house; 33 | } 34 | `) 35 | 36 | expect(result.css).toMatchInlineSnapshot(` 37 | ".i-mdi-home { 38 | 39 | display: inline-block; 40 | 41 | width: 1em; 42 | 43 | height: 1em; 44 | 45 | background-color: currentColor; 46 | 47 | -webkit-mask-image: var(--svg); 48 | 49 | mask-image: var(--svg); 50 | 51 | -webkit-mask-repeat: no-repeat; 52 | 53 | mask-repeat: no-repeat; 54 | 55 | -webkit-mask-size: 100% 100%; 56 | 57 | mask-size: 100% 100%; 58 | 59 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/svg%3E") 60 | } 61 | 62 | .i-tabler-plus { 63 | 64 | display: inline-block; 65 | 66 | width: 1em; 67 | 68 | height: 1em; 69 | 70 | background-color: currentColor; 71 | 72 | -webkit-mask-image: var(--svg); 73 | 74 | mask-image: var(--svg); 75 | 76 | -webkit-mask-repeat: no-repeat; 77 | 78 | mask-repeat: no-repeat; 79 | 80 | -webkit-mask-size: 100% 100%; 81 | 82 | mask-size: 100% 100%; 83 | 84 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 5v14m-7-7h14'/%3E%3C/svg%3E") 85 | } 86 | 87 | .foo { 88 | 89 | display: inline-block; 90 | 91 | width: 1em; 92 | 93 | height: 1em; 94 | 95 | background-color: currentColor; 96 | 97 | -webkit-mask-image: var(--svg); 98 | 99 | mask-image: var(--svg); 100 | 101 | -webkit-mask-repeat: no-repeat; 102 | 103 | mask-repeat: no-repeat; 104 | 105 | -webkit-mask-size: 100% 100%; 106 | 107 | mask-size: 100% 100%; 108 | 109 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/svg%3E") 110 | } 111 | 112 | .bar { 113 | 114 | display: inline-block; 115 | 116 | width: 1em; 117 | 118 | height: 1em; 119 | 120 | background-color: currentColor; 121 | 122 | -webkit-mask-image: var(--svg); 123 | 124 | mask-image: var(--svg); 125 | 126 | -webkit-mask-repeat: no-repeat; 127 | 128 | mask-repeat: no-repeat; 129 | 130 | -webkit-mask-size: 100% 100%; 131 | 132 | mask-size: 100% 100%; 133 | 134 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/svg%3E") 135 | } 136 | " 137 | `) 138 | }) 139 | 140 | test("custom icon", async () => { 141 | const result = await postcss([ 142 | tailwindcss({ 143 | config: { 144 | content: [ 145 | { 146 | raw: '', 147 | extension: "html", 148 | }, 149 | ], 150 | plugins: [ 151 | iconsPlugin({ 152 | collections: { 153 | foo: { 154 | icons: { 155 | "arrow-left": { 156 | body: '', 157 | width: 20, 158 | height: 20, 159 | }, 160 | animate: { 161 | body: ``, 162 | }, 163 | }, 164 | }, 165 | }, 166 | }), 167 | ], 168 | }, 169 | }), 170 | ]).process(` 171 | .foo { 172 | @apply i-foo-arrow-left; 173 | } 174 | 175 | .bar { 176 | @apply i-foo-animate; 177 | } 178 | `) 179 | 180 | expect(result.css).toMatchInlineSnapshot(` 181 | " 182 | .foo { 183 | 184 | display: inline-block; 185 | 186 | width: 1em; 187 | 188 | height: 1em; 189 | 190 | background-color: currentColor; 191 | 192 | -webkit-mask-image: var(--svg); 193 | 194 | mask-image: var(--svg); 195 | 196 | -webkit-mask-repeat: no-repeat; 197 | 198 | mask-repeat: no-repeat; 199 | 200 | -webkit-mask-size: 100% 100%; 201 | 202 | mask-size: 100% 100%; 203 | 204 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' width='20' height='20'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18'/%3E%3C/svg%3E") 205 | } 206 | 207 | .bar { 208 | 209 | display: inline-block; 210 | 211 | width: 1em; 212 | 213 | height: 1em; 214 | 215 | background-color: currentColor; 216 | 217 | -webkit-mask-image: var(--svg); 218 | 219 | mask-image: var(--svg); 220 | 221 | -webkit-mask-repeat: no-repeat; 222 | 223 | mask-repeat: no-repeat; 224 | 225 | -webkit-mask-size: 100% 100%; 226 | 227 | mask-size: 100% 100%; 228 | 229 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3E%3Ccircle fill='black' stroke='none' cx='25' cy='10' r='6'%3E%3Canimate attributeName='opacity' dur='1s' values='0;1;0' from='0' to='1' repeatCount='indefinite' begin='0.1'/%3E%3C/circle%3E%3C/svg%3E") 230 | } 231 | " 232 | `) 233 | }) 234 | 235 | test("set collection automatically", async () => { 236 | const processor = postcss([ 237 | tailwindcss({ 238 | config: { 239 | content: [ 240 | { 241 | raw: "", 242 | extension: "html", 243 | }, 244 | ], 245 | plugins: [iconsPlugin()], 246 | }, 247 | }), 248 | ]) 249 | 250 | const result = await processor.process(` 251 | .foo { 252 | @apply i-heroicons-arrow-left; 253 | } 254 | `) 255 | 256 | expect(result.css).toMatchInlineSnapshot(` 257 | " 258 | .foo { 259 | display: inline-block; 260 | width: 1em; 261 | height: 1em; 262 | background-color: currentColor; 263 | -webkit-mask-image: var(--svg); 264 | mask-image: var(--svg); 265 | -webkit-mask-repeat: no-repeat; 266 | mask-repeat: no-repeat; 267 | -webkit-mask-size: 100% 100%; 268 | mask-size: 100% 100%; 269 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18'/%3E%3C/svg%3E") 270 | } 271 | " 272 | `) 273 | 274 | await expect(() => 275 | processor.process(` 276 | .foo { 277 | @apply i-mdi-home; 278 | } 279 | `), 280 | ).rejects.toThrowErrorMatchingInlineSnapshot( 281 | `[CssSyntaxError: :3:5: The \`i-mdi-home\` class does not exist. If \`i-mdi-home\` is a custom class, make sure it is defined within a \`@layer\` directive.]`, 282 | ) 283 | }) 284 | 285 | test("custom icon collection name", async () => { 286 | const result = await postcss([ 287 | tailwindcss({ 288 | config: { 289 | content: [ 290 | { 291 | raw: '', 292 | extension: "html", 293 | }, 294 | ], 295 | plugins: [ 296 | iconsPlugin({ 297 | collections: getIconCollections(["heroicons"]), 298 | collectionNamesAlias: { 299 | heroicons: "hero", 300 | }, 301 | }), 302 | ], 303 | }, 304 | }), 305 | ]).process(`@tailwind components; 306 | .foo { 307 | @apply i-hero-academic-cap; 308 | }`) 309 | 310 | expect(result.css).toMatchInlineSnapshot(` 311 | ".i-hero-archive-box { 312 | display: inline-block; 313 | width: 1em; 314 | height: 1em; 315 | background-color: currentColor; 316 | -webkit-mask-image: var(--svg); 317 | mask-image: var(--svg); 318 | -webkit-mask-repeat: no-repeat; 319 | mask-repeat: no-repeat; 320 | -webkit-mask-size: 100% 100%; 321 | mask-size: 100% 100%; 322 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m20.25 7.5l-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125'/%3E%3C/svg%3E") 323 | } 324 | .foo { 325 | display: inline-block; 326 | width: 1em; 327 | height: 1em; 328 | background-color: currentColor; 329 | -webkit-mask-image: var(--svg); 330 | mask-image: var(--svg); 331 | -webkit-mask-repeat: no-repeat; 332 | mask-repeat: no-repeat; 333 | -webkit-mask-size: 100% 100%; 334 | mask-size: 100% 100%; 335 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M4.26 10.147a60 60 0 0 0-.491 6.347A48.6 48.6 0 0 1 12 20.904a48.6 48.6 0 0 1 8.232-4.41a61 61 0 0 0-.491-6.347m-15.482 0a51 51 0 0 0-2.658-.813A60 60 0 0 1 12 3.493a60 60 0 0 1 10.399 5.84q-1.345.372-2.658.814m-15.482 0A51 51 0 0 1 12 13.489a50.7 50.7 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5a.75.75 0 0 0 0 1.5m0 0v-3.675A55 55 0 0 1 12 8.443m-7.007 11.55A5.98 5.98 0 0 0 6.75 15.75v-1.5'/%3E%3C/svg%3E") 336 | }" 337 | `) 338 | }) 339 | 340 | test("generate icon dynamically", async () => { 341 | const result = await postcss([ 342 | tailwindcss({ 343 | config: { 344 | content: [ 345 | { 346 | raw: '', 347 | extension: "html", 348 | }, 349 | ], 350 | plugins: [iconsPlugin(), dynamicIconsPlugin()], 351 | }, 352 | }), 353 | ]).process(`@tailwind components; 354 | .foo { 355 | @apply i-[mdi--home]; 356 | }`) 357 | 358 | expect(result.css).toMatchInlineSnapshot(` 359 | ".i-heroicons-archive-box { 360 | display: inline-block; 361 | width: 1em; 362 | height: 1em; 363 | background-color: currentColor; 364 | -webkit-mask-image: var(--svg); 365 | mask-image: var(--svg); 366 | -webkit-mask-repeat: no-repeat; 367 | mask-repeat: no-repeat; 368 | -webkit-mask-size: 100% 100%; 369 | mask-size: 100% 100%; 370 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m20.25 7.5l-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125'/%3E%3C/svg%3E") 371 | } 372 | .foo { 373 | display: inline-block; 374 | width: 1em; 375 | height: 1em; 376 | background-color: currentColor; 377 | -webkit-mask-image: var(--svg); 378 | mask-image: var(--svg); 379 | -webkit-mask-repeat: no-repeat; 380 | mask-repeat: no-repeat; 381 | -webkit-mask-size: 100% 100%; 382 | mask-size: 100% 100%; 383 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/svg%3E") 384 | }" 385 | `) 386 | }) 387 | 388 | test("get all icon explicitly", { timeout: 20000 }, async () => { 389 | const result = await postcss([ 390 | tailwindcss({ 391 | config: { 392 | content: [ 393 | { 394 | raw: '', 395 | extension: "html", 396 | }, 397 | ], 398 | plugins: [iconsPlugin({ collections: getIconCollections("all") })], 399 | }, 400 | }), 401 | ]).process(`@tailwind components; 402 | .foo { 403 | @apply i-mdi-home; 404 | }`) 405 | 406 | expect(result.css).toMatchInlineSnapshot(` 407 | ".i-heroicons-archive-box { 408 | display: inline-block; 409 | width: 1em; 410 | height: 1em; 411 | background-color: currentColor; 412 | -webkit-mask-image: var(--svg); 413 | mask-image: var(--svg); 414 | -webkit-mask-repeat: no-repeat; 415 | mask-repeat: no-repeat; 416 | -webkit-mask-size: 100% 100%; 417 | mask-size: 100% 100%; 418 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m20.25 7.5l-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125'/%3E%3C/svg%3E") 419 | } 420 | .foo { 421 | display: inline-block; 422 | width: 1em; 423 | height: 1em; 424 | background-color: currentColor; 425 | -webkit-mask-image: var(--svg); 426 | mask-image: var(--svg); 427 | -webkit-mask-repeat: no-repeat; 428 | mask-repeat: no-repeat; 429 | -webkit-mask-size: 100% 100%; 430 | mask-size: 100% 100%; 431 | --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M10 20v-6h4v6h5v-8h3L12 3L2 12h3v8z'/%3E%3C/svg%3E") 432 | }" 433 | `) 434 | }) 435 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@iconify/utils': 12 | specifier: ^2.2.1 13 | version: 2.2.1 14 | devDependencies: 15 | '@ianvs/prettier-plugin-sort-imports': 16 | specifier: ^4.4.1 17 | version: 4.4.1(prettier@3.4.2) 18 | '@iconify-json/heroicons': 19 | specifier: ^1.2.2 20 | version: 1.2.2 21 | '@iconify/json': 22 | specifier: ^2.2.299 23 | version: 2.2.299 24 | '@iconify/types': 25 | specifier: ^2.0.0 26 | version: 2.0.0 27 | '@types/node': 28 | specifier: ^22.10.10 29 | version: 22.10.10 30 | '@typescript-eslint/eslint-plugin': 31 | specifier: ^8.21.0 32 | version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3) 33 | '@typescript-eslint/parser': 34 | specifier: ^8.21.0 35 | version: 8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3) 36 | eslint: 37 | specifier: ^9.18.0 38 | version: 9.18.0(jiti@1.21.6) 39 | postcss: 40 | specifier: ^8.5.1 41 | version: 8.5.1 42 | prettier: 43 | specifier: ^3.4.2 44 | version: 3.4.2 45 | prettier-plugin-tailwindcss: 46 | specifier: ^0.6.11 47 | version: 0.6.11(@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2))(prettier@3.4.2) 48 | tailwindcss: 49 | specifier: ^3.4.17 50 | version: 3.4.17 51 | tsup: 52 | specifier: ^8.3.5 53 | version: 8.3.5(jiti@1.21.6)(postcss@8.5.1)(typescript@5.7.3)(yaml@2.4.3) 54 | typescript: 55 | specifier: ^5.7.3 56 | version: 5.7.3 57 | vitest: 58 | specifier: ^3.0.4 59 | version: 3.0.4(@types/node@22.10.10) 60 | 61 | packages: 62 | 63 | '@alloc/quick-lru@5.2.0': 64 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 65 | engines: {node: '>=10'} 66 | 67 | '@antfu/install-pkg@0.4.1': 68 | resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} 69 | 70 | '@antfu/utils@0.7.10': 71 | resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} 72 | 73 | '@babel/code-frame@7.26.2': 74 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 75 | engines: {node: '>=6.9.0'} 76 | 77 | '@babel/generator@7.26.3': 78 | resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} 79 | engines: {node: '>=6.9.0'} 80 | 81 | '@babel/helper-string-parser@7.25.9': 82 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 83 | engines: {node: '>=6.9.0'} 84 | 85 | '@babel/helper-validator-identifier@7.25.9': 86 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 87 | engines: {node: '>=6.9.0'} 88 | 89 | '@babel/parser@7.26.3': 90 | resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} 91 | engines: {node: '>=6.0.0'} 92 | hasBin: true 93 | 94 | '@babel/template@7.25.9': 95 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 96 | engines: {node: '>=6.9.0'} 97 | 98 | '@babel/traverse@7.26.4': 99 | resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} 100 | engines: {node: '>=6.9.0'} 101 | 102 | '@babel/types@7.26.3': 103 | resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} 104 | engines: {node: '>=6.9.0'} 105 | 106 | '@esbuild/aix-ppc64@0.20.2': 107 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} 108 | engines: {node: '>=12'} 109 | cpu: [ppc64] 110 | os: [aix] 111 | 112 | '@esbuild/aix-ppc64@0.24.0': 113 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 114 | engines: {node: '>=18'} 115 | cpu: [ppc64] 116 | os: [aix] 117 | 118 | '@esbuild/android-arm64@0.20.2': 119 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} 120 | engines: {node: '>=12'} 121 | cpu: [arm64] 122 | os: [android] 123 | 124 | '@esbuild/android-arm64@0.24.0': 125 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 126 | engines: {node: '>=18'} 127 | cpu: [arm64] 128 | os: [android] 129 | 130 | '@esbuild/android-arm@0.20.2': 131 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} 132 | engines: {node: '>=12'} 133 | cpu: [arm] 134 | os: [android] 135 | 136 | '@esbuild/android-arm@0.24.0': 137 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 138 | engines: {node: '>=18'} 139 | cpu: [arm] 140 | os: [android] 141 | 142 | '@esbuild/android-x64@0.20.2': 143 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} 144 | engines: {node: '>=12'} 145 | cpu: [x64] 146 | os: [android] 147 | 148 | '@esbuild/android-x64@0.24.0': 149 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 150 | engines: {node: '>=18'} 151 | cpu: [x64] 152 | os: [android] 153 | 154 | '@esbuild/darwin-arm64@0.20.2': 155 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} 156 | engines: {node: '>=12'} 157 | cpu: [arm64] 158 | os: [darwin] 159 | 160 | '@esbuild/darwin-arm64@0.24.0': 161 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 162 | engines: {node: '>=18'} 163 | cpu: [arm64] 164 | os: [darwin] 165 | 166 | '@esbuild/darwin-x64@0.20.2': 167 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} 168 | engines: {node: '>=12'} 169 | cpu: [x64] 170 | os: [darwin] 171 | 172 | '@esbuild/darwin-x64@0.24.0': 173 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 174 | engines: {node: '>=18'} 175 | cpu: [x64] 176 | os: [darwin] 177 | 178 | '@esbuild/freebsd-arm64@0.20.2': 179 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} 180 | engines: {node: '>=12'} 181 | cpu: [arm64] 182 | os: [freebsd] 183 | 184 | '@esbuild/freebsd-arm64@0.24.0': 185 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 186 | engines: {node: '>=18'} 187 | cpu: [arm64] 188 | os: [freebsd] 189 | 190 | '@esbuild/freebsd-x64@0.20.2': 191 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} 192 | engines: {node: '>=12'} 193 | cpu: [x64] 194 | os: [freebsd] 195 | 196 | '@esbuild/freebsd-x64@0.24.0': 197 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 198 | engines: {node: '>=18'} 199 | cpu: [x64] 200 | os: [freebsd] 201 | 202 | '@esbuild/linux-arm64@0.20.2': 203 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} 204 | engines: {node: '>=12'} 205 | cpu: [arm64] 206 | os: [linux] 207 | 208 | '@esbuild/linux-arm64@0.24.0': 209 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 210 | engines: {node: '>=18'} 211 | cpu: [arm64] 212 | os: [linux] 213 | 214 | '@esbuild/linux-arm@0.20.2': 215 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} 216 | engines: {node: '>=12'} 217 | cpu: [arm] 218 | os: [linux] 219 | 220 | '@esbuild/linux-arm@0.24.0': 221 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 222 | engines: {node: '>=18'} 223 | cpu: [arm] 224 | os: [linux] 225 | 226 | '@esbuild/linux-ia32@0.20.2': 227 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} 228 | engines: {node: '>=12'} 229 | cpu: [ia32] 230 | os: [linux] 231 | 232 | '@esbuild/linux-ia32@0.24.0': 233 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 234 | engines: {node: '>=18'} 235 | cpu: [ia32] 236 | os: [linux] 237 | 238 | '@esbuild/linux-loong64@0.20.2': 239 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} 240 | engines: {node: '>=12'} 241 | cpu: [loong64] 242 | os: [linux] 243 | 244 | '@esbuild/linux-loong64@0.24.0': 245 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 246 | engines: {node: '>=18'} 247 | cpu: [loong64] 248 | os: [linux] 249 | 250 | '@esbuild/linux-mips64el@0.20.2': 251 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} 252 | engines: {node: '>=12'} 253 | cpu: [mips64el] 254 | os: [linux] 255 | 256 | '@esbuild/linux-mips64el@0.24.0': 257 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 258 | engines: {node: '>=18'} 259 | cpu: [mips64el] 260 | os: [linux] 261 | 262 | '@esbuild/linux-ppc64@0.20.2': 263 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} 264 | engines: {node: '>=12'} 265 | cpu: [ppc64] 266 | os: [linux] 267 | 268 | '@esbuild/linux-ppc64@0.24.0': 269 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 270 | engines: {node: '>=18'} 271 | cpu: [ppc64] 272 | os: [linux] 273 | 274 | '@esbuild/linux-riscv64@0.20.2': 275 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} 276 | engines: {node: '>=12'} 277 | cpu: [riscv64] 278 | os: [linux] 279 | 280 | '@esbuild/linux-riscv64@0.24.0': 281 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 282 | engines: {node: '>=18'} 283 | cpu: [riscv64] 284 | os: [linux] 285 | 286 | '@esbuild/linux-s390x@0.20.2': 287 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} 288 | engines: {node: '>=12'} 289 | cpu: [s390x] 290 | os: [linux] 291 | 292 | '@esbuild/linux-s390x@0.24.0': 293 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 294 | engines: {node: '>=18'} 295 | cpu: [s390x] 296 | os: [linux] 297 | 298 | '@esbuild/linux-x64@0.20.2': 299 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} 300 | engines: {node: '>=12'} 301 | cpu: [x64] 302 | os: [linux] 303 | 304 | '@esbuild/linux-x64@0.24.0': 305 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 306 | engines: {node: '>=18'} 307 | cpu: [x64] 308 | os: [linux] 309 | 310 | '@esbuild/netbsd-x64@0.20.2': 311 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} 312 | engines: {node: '>=12'} 313 | cpu: [x64] 314 | os: [netbsd] 315 | 316 | '@esbuild/netbsd-x64@0.24.0': 317 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 318 | engines: {node: '>=18'} 319 | cpu: [x64] 320 | os: [netbsd] 321 | 322 | '@esbuild/openbsd-arm64@0.24.0': 323 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 324 | engines: {node: '>=18'} 325 | cpu: [arm64] 326 | os: [openbsd] 327 | 328 | '@esbuild/openbsd-x64@0.20.2': 329 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} 330 | engines: {node: '>=12'} 331 | cpu: [x64] 332 | os: [openbsd] 333 | 334 | '@esbuild/openbsd-x64@0.24.0': 335 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 336 | engines: {node: '>=18'} 337 | cpu: [x64] 338 | os: [openbsd] 339 | 340 | '@esbuild/sunos-x64@0.20.2': 341 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} 342 | engines: {node: '>=12'} 343 | cpu: [x64] 344 | os: [sunos] 345 | 346 | '@esbuild/sunos-x64@0.24.0': 347 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 348 | engines: {node: '>=18'} 349 | cpu: [x64] 350 | os: [sunos] 351 | 352 | '@esbuild/win32-arm64@0.20.2': 353 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} 354 | engines: {node: '>=12'} 355 | cpu: [arm64] 356 | os: [win32] 357 | 358 | '@esbuild/win32-arm64@0.24.0': 359 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 360 | engines: {node: '>=18'} 361 | cpu: [arm64] 362 | os: [win32] 363 | 364 | '@esbuild/win32-ia32@0.20.2': 365 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} 366 | engines: {node: '>=12'} 367 | cpu: [ia32] 368 | os: [win32] 369 | 370 | '@esbuild/win32-ia32@0.24.0': 371 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 372 | engines: {node: '>=18'} 373 | cpu: [ia32] 374 | os: [win32] 375 | 376 | '@esbuild/win32-x64@0.20.2': 377 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} 378 | engines: {node: '>=12'} 379 | cpu: [x64] 380 | os: [win32] 381 | 382 | '@esbuild/win32-x64@0.24.0': 383 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 384 | engines: {node: '>=18'} 385 | cpu: [x64] 386 | os: [win32] 387 | 388 | '@eslint-community/eslint-utils@4.4.0': 389 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 390 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 391 | peerDependencies: 392 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 393 | 394 | '@eslint-community/regexpp@4.12.1': 395 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 396 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 397 | 398 | '@eslint/config-array@0.19.1': 399 | resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} 400 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 401 | 402 | '@eslint/core@0.10.0': 403 | resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} 404 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 405 | 406 | '@eslint/eslintrc@3.2.0': 407 | resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} 408 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 409 | 410 | '@eslint/js@9.18.0': 411 | resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} 412 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 413 | 414 | '@eslint/object-schema@2.1.5': 415 | resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} 416 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 417 | 418 | '@eslint/plugin-kit@0.2.5': 419 | resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} 420 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 421 | 422 | '@humanfs/core@0.19.1': 423 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 424 | engines: {node: '>=18.18.0'} 425 | 426 | '@humanfs/node@0.16.6': 427 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 428 | engines: {node: '>=18.18.0'} 429 | 430 | '@humanwhocodes/module-importer@1.0.1': 431 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 432 | engines: {node: '>=12.22'} 433 | 434 | '@humanwhocodes/retry@0.3.0': 435 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 436 | engines: {node: '>=18.18'} 437 | 438 | '@humanwhocodes/retry@0.4.1': 439 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 440 | engines: {node: '>=18.18'} 441 | 442 | '@ianvs/prettier-plugin-sort-imports@4.4.1': 443 | resolution: {integrity: sha512-F0/Hrcfpy8WuxlQyAWJTEren/uxKhYonOGY4OyWmwRdeTvkh9mMSCxowZLjNkhwi/2ipqCgtXwwOk7tW0mWXkA==} 444 | peerDependencies: 445 | '@vue/compiler-sfc': 2.7.x || 3.x 446 | prettier: 2 || 3 447 | peerDependenciesMeta: 448 | '@vue/compiler-sfc': 449 | optional: true 450 | 451 | '@iconify-json/heroicons@1.2.2': 452 | resolution: {integrity: sha512-qoW4pXr5kTTL6juEjgTs83OJIwpePu7q1tdtKVEdj+i0zyyVHgg/dd9grsXJQnpTpBt6/VwNjrXBvFjRsKPENg==} 453 | 454 | '@iconify/json@2.2.299': 455 | resolution: {integrity: sha512-YsHoXNK4tBfY1aABlnAxGv8BFNsXBRfTuhRqkXLC0AK+amM+IDPLpVyOPCttcEHKuAsmh0OVPsrCZe2bC0puTA==} 456 | 457 | '@iconify/types@2.0.0': 458 | resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} 459 | 460 | '@iconify/utils@2.2.1': 461 | resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} 462 | 463 | '@isaacs/cliui@8.0.2': 464 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 465 | engines: {node: '>=12'} 466 | 467 | '@jridgewell/gen-mapping@0.3.5': 468 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 469 | engines: {node: '>=6.0.0'} 470 | 471 | '@jridgewell/resolve-uri@3.1.2': 472 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 473 | engines: {node: '>=6.0.0'} 474 | 475 | '@jridgewell/set-array@1.2.1': 476 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 477 | engines: {node: '>=6.0.0'} 478 | 479 | '@jridgewell/sourcemap-codec@1.4.15': 480 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 481 | 482 | '@jridgewell/sourcemap-codec@1.5.0': 483 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 484 | 485 | '@jridgewell/trace-mapping@0.3.25': 486 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 487 | 488 | '@nodelib/fs.scandir@2.1.5': 489 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 490 | engines: {node: '>= 8'} 491 | 492 | '@nodelib/fs.stat@2.0.5': 493 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 494 | engines: {node: '>= 8'} 495 | 496 | '@nodelib/fs.walk@1.2.8': 497 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 498 | engines: {node: '>= 8'} 499 | 500 | '@pkgjs/parseargs@0.11.0': 501 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 502 | engines: {node: '>=14'} 503 | 504 | '@rollup/rollup-android-arm-eabi@4.28.1': 505 | resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} 506 | cpu: [arm] 507 | os: [android] 508 | 509 | '@rollup/rollup-android-arm64@4.28.1': 510 | resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} 511 | cpu: [arm64] 512 | os: [android] 513 | 514 | '@rollup/rollup-darwin-arm64@4.28.1': 515 | resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} 516 | cpu: [arm64] 517 | os: [darwin] 518 | 519 | '@rollup/rollup-darwin-x64@4.28.1': 520 | resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} 521 | cpu: [x64] 522 | os: [darwin] 523 | 524 | '@rollup/rollup-freebsd-arm64@4.28.1': 525 | resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} 526 | cpu: [arm64] 527 | os: [freebsd] 528 | 529 | '@rollup/rollup-freebsd-x64@4.28.1': 530 | resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} 531 | cpu: [x64] 532 | os: [freebsd] 533 | 534 | '@rollup/rollup-linux-arm-gnueabihf@4.28.1': 535 | resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} 536 | cpu: [arm] 537 | os: [linux] 538 | 539 | '@rollup/rollup-linux-arm-musleabihf@4.28.1': 540 | resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} 541 | cpu: [arm] 542 | os: [linux] 543 | 544 | '@rollup/rollup-linux-arm64-gnu@4.28.1': 545 | resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} 546 | cpu: [arm64] 547 | os: [linux] 548 | 549 | '@rollup/rollup-linux-arm64-musl@4.28.1': 550 | resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} 551 | cpu: [arm64] 552 | os: [linux] 553 | 554 | '@rollup/rollup-linux-loongarch64-gnu@4.28.1': 555 | resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} 556 | cpu: [loong64] 557 | os: [linux] 558 | 559 | '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': 560 | resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} 561 | cpu: [ppc64] 562 | os: [linux] 563 | 564 | '@rollup/rollup-linux-riscv64-gnu@4.28.1': 565 | resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} 566 | cpu: [riscv64] 567 | os: [linux] 568 | 569 | '@rollup/rollup-linux-s390x-gnu@4.28.1': 570 | resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} 571 | cpu: [s390x] 572 | os: [linux] 573 | 574 | '@rollup/rollup-linux-x64-gnu@4.28.1': 575 | resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} 576 | cpu: [x64] 577 | os: [linux] 578 | 579 | '@rollup/rollup-linux-x64-musl@4.28.1': 580 | resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} 581 | cpu: [x64] 582 | os: [linux] 583 | 584 | '@rollup/rollup-win32-arm64-msvc@4.28.1': 585 | resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} 586 | cpu: [arm64] 587 | os: [win32] 588 | 589 | '@rollup/rollup-win32-ia32-msvc@4.28.1': 590 | resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} 591 | cpu: [ia32] 592 | os: [win32] 593 | 594 | '@rollup/rollup-win32-x64-msvc@4.28.1': 595 | resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} 596 | cpu: [x64] 597 | os: [win32] 598 | 599 | '@types/estree@1.0.6': 600 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 601 | 602 | '@types/json-schema@7.0.15': 603 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 604 | 605 | '@types/node@22.10.10': 606 | resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==} 607 | 608 | '@typescript-eslint/eslint-plugin@8.21.0': 609 | resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} 610 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 611 | peerDependencies: 612 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 613 | eslint: ^8.57.0 || ^9.0.0 614 | typescript: '>=4.8.4 <5.8.0' 615 | 616 | '@typescript-eslint/parser@8.21.0': 617 | resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} 618 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 619 | peerDependencies: 620 | eslint: ^8.57.0 || ^9.0.0 621 | typescript: '>=4.8.4 <5.8.0' 622 | 623 | '@typescript-eslint/scope-manager@8.21.0': 624 | resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} 625 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 626 | 627 | '@typescript-eslint/type-utils@8.21.0': 628 | resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} 629 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 630 | peerDependencies: 631 | eslint: ^8.57.0 || ^9.0.0 632 | typescript: '>=4.8.4 <5.8.0' 633 | 634 | '@typescript-eslint/types@8.21.0': 635 | resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} 636 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 637 | 638 | '@typescript-eslint/typescript-estree@8.21.0': 639 | resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} 640 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 641 | peerDependencies: 642 | typescript: '>=4.8.4 <5.8.0' 643 | 644 | '@typescript-eslint/utils@8.21.0': 645 | resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} 646 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 647 | peerDependencies: 648 | eslint: ^8.57.0 || ^9.0.0 649 | typescript: '>=4.8.4 <5.8.0' 650 | 651 | '@typescript-eslint/visitor-keys@8.21.0': 652 | resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} 653 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 654 | 655 | '@vitest/expect@3.0.4': 656 | resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==} 657 | 658 | '@vitest/mocker@3.0.4': 659 | resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==} 660 | peerDependencies: 661 | msw: ^2.4.9 662 | vite: ^5.0.0 || ^6.0.0 663 | peerDependenciesMeta: 664 | msw: 665 | optional: true 666 | vite: 667 | optional: true 668 | 669 | '@vitest/pretty-format@3.0.4': 670 | resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==} 671 | 672 | '@vitest/runner@3.0.4': 673 | resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==} 674 | 675 | '@vitest/snapshot@3.0.4': 676 | resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==} 677 | 678 | '@vitest/spy@3.0.4': 679 | resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==} 680 | 681 | '@vitest/utils@3.0.4': 682 | resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==} 683 | 684 | acorn-jsx@5.3.2: 685 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 686 | peerDependencies: 687 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 688 | 689 | acorn@8.14.0: 690 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 691 | engines: {node: '>=0.4.0'} 692 | hasBin: true 693 | 694 | ajv@6.12.6: 695 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 696 | 697 | ansi-regex@5.0.1: 698 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 699 | engines: {node: '>=8'} 700 | 701 | ansi-regex@6.0.1: 702 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 703 | engines: {node: '>=12'} 704 | 705 | ansi-styles@4.3.0: 706 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 707 | engines: {node: '>=8'} 708 | 709 | ansi-styles@6.2.1: 710 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 711 | engines: {node: '>=12'} 712 | 713 | any-promise@1.3.0: 714 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 715 | 716 | anymatch@3.1.3: 717 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 718 | engines: {node: '>= 8'} 719 | 720 | arg@5.0.2: 721 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 722 | 723 | argparse@2.0.1: 724 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 725 | 726 | assertion-error@2.0.1: 727 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 728 | engines: {node: '>=12'} 729 | 730 | balanced-match@1.0.2: 731 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 732 | 733 | binary-extensions@2.3.0: 734 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 735 | engines: {node: '>=8'} 736 | 737 | brace-expansion@1.1.11: 738 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 739 | 740 | brace-expansion@2.0.1: 741 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 742 | 743 | braces@3.0.3: 744 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 745 | engines: {node: '>=8'} 746 | 747 | bundle-require@5.0.0: 748 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} 749 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 750 | peerDependencies: 751 | esbuild: '>=0.18' 752 | 753 | cac@6.7.14: 754 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 755 | engines: {node: '>=8'} 756 | 757 | callsites@3.1.0: 758 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 759 | engines: {node: '>=6'} 760 | 761 | camelcase-css@2.0.1: 762 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 763 | engines: {node: '>= 6'} 764 | 765 | chai@5.1.2: 766 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} 767 | engines: {node: '>=12'} 768 | 769 | chalk@4.1.2: 770 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 771 | engines: {node: '>=10'} 772 | 773 | check-error@2.1.1: 774 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 775 | engines: {node: '>= 16'} 776 | 777 | chokidar@3.6.0: 778 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 779 | engines: {node: '>= 8.10.0'} 780 | 781 | chokidar@4.0.1: 782 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 783 | engines: {node: '>= 14.16.0'} 784 | 785 | color-convert@2.0.1: 786 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 787 | engines: {node: '>=7.0.0'} 788 | 789 | color-name@1.1.4: 790 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 791 | 792 | commander@4.1.1: 793 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 794 | engines: {node: '>= 6'} 795 | 796 | concat-map@0.0.1: 797 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 798 | 799 | confbox@0.1.8: 800 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 801 | 802 | consola@3.2.3: 803 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 804 | engines: {node: ^14.18.0 || >=16.10.0} 805 | 806 | cross-spawn@7.0.3: 807 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 808 | engines: {node: '>= 8'} 809 | 810 | cross-spawn@7.0.6: 811 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 812 | engines: {node: '>= 8'} 813 | 814 | cssesc@3.0.0: 815 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 816 | engines: {node: '>=4'} 817 | hasBin: true 818 | 819 | debug@4.4.0: 820 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 821 | engines: {node: '>=6.0'} 822 | peerDependencies: 823 | supports-color: '*' 824 | peerDependenciesMeta: 825 | supports-color: 826 | optional: true 827 | 828 | deep-eql@5.0.2: 829 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 830 | engines: {node: '>=6'} 831 | 832 | deep-is@0.1.4: 833 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 834 | 835 | didyoumean@1.2.2: 836 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 837 | 838 | dlv@1.1.3: 839 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 840 | 841 | eastasianwidth@0.2.0: 842 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 843 | 844 | emoji-regex@8.0.0: 845 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 846 | 847 | emoji-regex@9.2.2: 848 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 849 | 850 | es-module-lexer@1.6.0: 851 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 852 | 853 | esbuild@0.20.2: 854 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} 855 | engines: {node: '>=12'} 856 | hasBin: true 857 | 858 | esbuild@0.24.0: 859 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 860 | engines: {node: '>=18'} 861 | hasBin: true 862 | 863 | escape-string-regexp@4.0.0: 864 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 865 | engines: {node: '>=10'} 866 | 867 | eslint-scope@8.2.0: 868 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 869 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 870 | 871 | eslint-visitor-keys@3.4.3: 872 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 873 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 874 | 875 | eslint-visitor-keys@4.2.0: 876 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 877 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 878 | 879 | eslint@9.18.0: 880 | resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} 881 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 882 | hasBin: true 883 | peerDependencies: 884 | jiti: '*' 885 | peerDependenciesMeta: 886 | jiti: 887 | optional: true 888 | 889 | espree@10.3.0: 890 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 891 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 892 | 893 | esquery@1.5.0: 894 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 895 | engines: {node: '>=0.10'} 896 | 897 | esrecurse@4.3.0: 898 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 899 | engines: {node: '>=4.0'} 900 | 901 | estraverse@5.3.0: 902 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 903 | engines: {node: '>=4.0'} 904 | 905 | estree-walker@3.0.3: 906 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 907 | 908 | esutils@2.0.3: 909 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 910 | engines: {node: '>=0.10.0'} 911 | 912 | expect-type@1.1.0: 913 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} 914 | engines: {node: '>=12.0.0'} 915 | 916 | fast-deep-equal@3.1.3: 917 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 918 | 919 | fast-glob@3.3.2: 920 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 921 | engines: {node: '>=8.6.0'} 922 | 923 | fast-json-stable-stringify@2.1.0: 924 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 925 | 926 | fast-levenshtein@2.0.6: 927 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 928 | 929 | fastq@1.17.1: 930 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 931 | 932 | fdir@6.4.2: 933 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 934 | peerDependencies: 935 | picomatch: ^3 || ^4 936 | peerDependenciesMeta: 937 | picomatch: 938 | optional: true 939 | 940 | file-entry-cache@8.0.0: 941 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 942 | engines: {node: '>=16.0.0'} 943 | 944 | fill-range@7.1.1: 945 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 946 | engines: {node: '>=8'} 947 | 948 | find-up@5.0.0: 949 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 950 | engines: {node: '>=10'} 951 | 952 | flat-cache@4.0.1: 953 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 954 | engines: {node: '>=16'} 955 | 956 | flatted@3.3.1: 957 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 958 | 959 | foreground-child@3.1.1: 960 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 961 | engines: {node: '>=14'} 962 | 963 | fsevents@2.3.3: 964 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 965 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 966 | os: [darwin] 967 | 968 | function-bind@1.1.2: 969 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 970 | 971 | glob-parent@5.1.2: 972 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 973 | engines: {node: '>= 6'} 974 | 975 | glob-parent@6.0.2: 976 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 977 | engines: {node: '>=10.13.0'} 978 | 979 | glob@10.4.1: 980 | resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} 981 | engines: {node: '>=16 || 14 >=14.18'} 982 | hasBin: true 983 | 984 | globals@11.12.0: 985 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 986 | engines: {node: '>=4'} 987 | 988 | globals@14.0.0: 989 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 990 | engines: {node: '>=18'} 991 | 992 | globals@15.13.0: 993 | resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} 994 | engines: {node: '>=18'} 995 | 996 | graphemer@1.4.0: 997 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 998 | 999 | has-flag@4.0.0: 1000 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1001 | engines: {node: '>=8'} 1002 | 1003 | hasown@2.0.2: 1004 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1005 | engines: {node: '>= 0.4'} 1006 | 1007 | ignore@5.3.1: 1008 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 1009 | engines: {node: '>= 4'} 1010 | 1011 | import-fresh@3.3.0: 1012 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1013 | engines: {node: '>=6'} 1014 | 1015 | imurmurhash@0.1.4: 1016 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1017 | engines: {node: '>=0.8.19'} 1018 | 1019 | is-binary-path@2.1.0: 1020 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1021 | engines: {node: '>=8'} 1022 | 1023 | is-core-module@2.16.1: 1024 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1025 | engines: {node: '>= 0.4'} 1026 | 1027 | is-extglob@2.1.1: 1028 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1029 | engines: {node: '>=0.10.0'} 1030 | 1031 | is-fullwidth-code-point@3.0.0: 1032 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1033 | engines: {node: '>=8'} 1034 | 1035 | is-glob@4.0.3: 1036 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1037 | engines: {node: '>=0.10.0'} 1038 | 1039 | is-number@7.0.0: 1040 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1041 | engines: {node: '>=0.12.0'} 1042 | 1043 | isexe@2.0.0: 1044 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1045 | 1046 | jackspeak@3.3.0: 1047 | resolution: {integrity: sha512-glPiBfKguqA7v8JsXO3iLjJWZ9FV1vNpoI0I9hI9Mnk5yetO9uPLSpiCEmiVijAssv2f54HpvtzvAHfhPieiDQ==} 1048 | engines: {node: '>=14'} 1049 | 1050 | jiti@1.21.6: 1051 | resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} 1052 | hasBin: true 1053 | 1054 | joycon@3.1.1: 1055 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1056 | engines: {node: '>=10'} 1057 | 1058 | js-tokens@4.0.0: 1059 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1060 | 1061 | js-yaml@4.1.0: 1062 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1063 | hasBin: true 1064 | 1065 | jsesc@3.1.0: 1066 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1067 | engines: {node: '>=6'} 1068 | hasBin: true 1069 | 1070 | json-buffer@3.0.1: 1071 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1072 | 1073 | json-schema-traverse@0.4.1: 1074 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1075 | 1076 | json-stable-stringify-without-jsonify@1.0.1: 1077 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1078 | 1079 | keyv@4.5.4: 1080 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1081 | 1082 | kolorist@1.8.0: 1083 | resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} 1084 | 1085 | levn@0.4.1: 1086 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1087 | engines: {node: '>= 0.8.0'} 1088 | 1089 | lilconfig@3.1.1: 1090 | resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} 1091 | engines: {node: '>=14'} 1092 | 1093 | lilconfig@3.1.3: 1094 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1095 | engines: {node: '>=14'} 1096 | 1097 | lines-and-columns@1.2.4: 1098 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1099 | 1100 | load-tsconfig@0.2.5: 1101 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1102 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1103 | 1104 | local-pkg@0.5.1: 1105 | resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} 1106 | engines: {node: '>=14'} 1107 | 1108 | locate-path@6.0.0: 1109 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1110 | engines: {node: '>=10'} 1111 | 1112 | lodash.merge@4.6.2: 1113 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1114 | 1115 | lodash.sortby@4.7.0: 1116 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1117 | 1118 | loupe@3.1.2: 1119 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} 1120 | 1121 | lru-cache@10.2.2: 1122 | resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} 1123 | engines: {node: 14 || >=16.14} 1124 | 1125 | magic-string@0.30.17: 1126 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1127 | 1128 | merge2@1.4.1: 1129 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1130 | engines: {node: '>= 8'} 1131 | 1132 | micromatch@4.0.8: 1133 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1134 | engines: {node: '>=8.6'} 1135 | 1136 | minimatch@3.1.2: 1137 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1138 | 1139 | minimatch@9.0.4: 1140 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} 1141 | engines: {node: '>=16 || 14 >=14.17'} 1142 | 1143 | minipass@7.1.2: 1144 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1145 | engines: {node: '>=16 || 14 >=14.17'} 1146 | 1147 | mlly@1.7.3: 1148 | resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} 1149 | 1150 | ms@2.1.3: 1151 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1152 | 1153 | mz@2.7.0: 1154 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1155 | 1156 | nanoid@3.3.8: 1157 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1158 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1159 | hasBin: true 1160 | 1161 | natural-compare@1.4.0: 1162 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1163 | 1164 | normalize-path@3.0.0: 1165 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1166 | engines: {node: '>=0.10.0'} 1167 | 1168 | object-assign@4.1.1: 1169 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1170 | engines: {node: '>=0.10.0'} 1171 | 1172 | object-hash@3.0.0: 1173 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1174 | engines: {node: '>= 6'} 1175 | 1176 | optionator@0.9.4: 1177 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1178 | engines: {node: '>= 0.8.0'} 1179 | 1180 | p-limit@3.1.0: 1181 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1182 | engines: {node: '>=10'} 1183 | 1184 | p-locate@5.0.0: 1185 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1186 | engines: {node: '>=10'} 1187 | 1188 | package-manager-detector@0.2.7: 1189 | resolution: {integrity: sha512-g4+387DXDKlZzHkP+9FLt8yKj8+/3tOkPv7DVTJGGRm00RkEWgqbFstX1mXJ4M0VDYhUqsTOiISqNOJnhAu3PQ==} 1190 | 1191 | parent-module@1.0.1: 1192 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1193 | engines: {node: '>=6'} 1194 | 1195 | path-exists@4.0.0: 1196 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1197 | engines: {node: '>=8'} 1198 | 1199 | path-key@3.1.1: 1200 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1201 | engines: {node: '>=8'} 1202 | 1203 | path-parse@1.0.7: 1204 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1205 | 1206 | path-scurry@1.11.1: 1207 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1208 | engines: {node: '>=16 || 14 >=14.18'} 1209 | 1210 | pathe@1.1.2: 1211 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1212 | 1213 | pathe@2.0.2: 1214 | resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} 1215 | 1216 | pathval@2.0.0: 1217 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1218 | engines: {node: '>= 14.16'} 1219 | 1220 | picocolors@1.1.1: 1221 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1222 | 1223 | picomatch@2.3.1: 1224 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1225 | engines: {node: '>=8.6'} 1226 | 1227 | picomatch@4.0.2: 1228 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1229 | engines: {node: '>=12'} 1230 | 1231 | pify@2.3.0: 1232 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1233 | engines: {node: '>=0.10.0'} 1234 | 1235 | pirates@4.0.6: 1236 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1237 | engines: {node: '>= 6'} 1238 | 1239 | pkg-types@1.2.1: 1240 | resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} 1241 | 1242 | postcss-import@15.1.0: 1243 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1244 | engines: {node: '>=14.0.0'} 1245 | peerDependencies: 1246 | postcss: ^8.0.0 1247 | 1248 | postcss-js@4.0.1: 1249 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1250 | engines: {node: ^12 || ^14 || >= 16} 1251 | peerDependencies: 1252 | postcss: ^8.4.21 1253 | 1254 | postcss-load-config@4.0.2: 1255 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1256 | engines: {node: '>= 14'} 1257 | peerDependencies: 1258 | postcss: '>=8.0.9' 1259 | ts-node: '>=9.0.0' 1260 | peerDependenciesMeta: 1261 | postcss: 1262 | optional: true 1263 | ts-node: 1264 | optional: true 1265 | 1266 | postcss-load-config@6.0.1: 1267 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1268 | engines: {node: '>= 18'} 1269 | peerDependencies: 1270 | jiti: '>=1.21.0' 1271 | postcss: '>=8.0.9' 1272 | tsx: ^4.8.1 1273 | yaml: ^2.4.2 1274 | peerDependenciesMeta: 1275 | jiti: 1276 | optional: true 1277 | postcss: 1278 | optional: true 1279 | tsx: 1280 | optional: true 1281 | yaml: 1282 | optional: true 1283 | 1284 | postcss-nested@6.2.0: 1285 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1286 | engines: {node: '>=12.0'} 1287 | peerDependencies: 1288 | postcss: ^8.2.14 1289 | 1290 | postcss-selector-parser@6.1.2: 1291 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1292 | engines: {node: '>=4'} 1293 | 1294 | postcss-value-parser@4.2.0: 1295 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1296 | 1297 | postcss@8.5.1: 1298 | resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} 1299 | engines: {node: ^10 || ^12 || >=14} 1300 | 1301 | prelude-ls@1.2.1: 1302 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1303 | engines: {node: '>= 0.8.0'} 1304 | 1305 | prettier-plugin-tailwindcss@0.6.11: 1306 | resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} 1307 | engines: {node: '>=14.21.3'} 1308 | peerDependencies: 1309 | '@ianvs/prettier-plugin-sort-imports': '*' 1310 | '@prettier/plugin-pug': '*' 1311 | '@shopify/prettier-plugin-liquid': '*' 1312 | '@trivago/prettier-plugin-sort-imports': '*' 1313 | '@zackad/prettier-plugin-twig': '*' 1314 | prettier: ^3.0 1315 | prettier-plugin-astro: '*' 1316 | prettier-plugin-css-order: '*' 1317 | prettier-plugin-import-sort: '*' 1318 | prettier-plugin-jsdoc: '*' 1319 | prettier-plugin-marko: '*' 1320 | prettier-plugin-multiline-arrays: '*' 1321 | prettier-plugin-organize-attributes: '*' 1322 | prettier-plugin-organize-imports: '*' 1323 | prettier-plugin-sort-imports: '*' 1324 | prettier-plugin-style-order: '*' 1325 | prettier-plugin-svelte: '*' 1326 | peerDependenciesMeta: 1327 | '@ianvs/prettier-plugin-sort-imports': 1328 | optional: true 1329 | '@prettier/plugin-pug': 1330 | optional: true 1331 | '@shopify/prettier-plugin-liquid': 1332 | optional: true 1333 | '@trivago/prettier-plugin-sort-imports': 1334 | optional: true 1335 | '@zackad/prettier-plugin-twig': 1336 | optional: true 1337 | prettier-plugin-astro: 1338 | optional: true 1339 | prettier-plugin-css-order: 1340 | optional: true 1341 | prettier-plugin-import-sort: 1342 | optional: true 1343 | prettier-plugin-jsdoc: 1344 | optional: true 1345 | prettier-plugin-marko: 1346 | optional: true 1347 | prettier-plugin-multiline-arrays: 1348 | optional: true 1349 | prettier-plugin-organize-attributes: 1350 | optional: true 1351 | prettier-plugin-organize-imports: 1352 | optional: true 1353 | prettier-plugin-sort-imports: 1354 | optional: true 1355 | prettier-plugin-style-order: 1356 | optional: true 1357 | prettier-plugin-svelte: 1358 | optional: true 1359 | 1360 | prettier@3.4.2: 1361 | resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} 1362 | engines: {node: '>=14'} 1363 | hasBin: true 1364 | 1365 | punycode@2.3.1: 1366 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1367 | engines: {node: '>=6'} 1368 | 1369 | queue-microtask@1.2.3: 1370 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1371 | 1372 | read-cache@1.0.0: 1373 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1374 | 1375 | readdirp@3.6.0: 1376 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1377 | engines: {node: '>=8.10.0'} 1378 | 1379 | readdirp@4.0.2: 1380 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 1381 | engines: {node: '>= 14.16.0'} 1382 | 1383 | resolve-from@4.0.0: 1384 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1385 | engines: {node: '>=4'} 1386 | 1387 | resolve-from@5.0.0: 1388 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1389 | engines: {node: '>=8'} 1390 | 1391 | resolve@1.22.10: 1392 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1393 | engines: {node: '>= 0.4'} 1394 | hasBin: true 1395 | 1396 | reusify@1.0.4: 1397 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1398 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1399 | 1400 | rollup@4.28.1: 1401 | resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} 1402 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1403 | hasBin: true 1404 | 1405 | run-parallel@1.2.0: 1406 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1407 | 1408 | semver@7.6.2: 1409 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} 1410 | engines: {node: '>=10'} 1411 | hasBin: true 1412 | 1413 | shebang-command@2.0.0: 1414 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1415 | engines: {node: '>=8'} 1416 | 1417 | shebang-regex@3.0.0: 1418 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1419 | engines: {node: '>=8'} 1420 | 1421 | siginfo@2.0.0: 1422 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1423 | 1424 | signal-exit@4.1.0: 1425 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1426 | engines: {node: '>=14'} 1427 | 1428 | source-map-js@1.2.1: 1429 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1430 | engines: {node: '>=0.10.0'} 1431 | 1432 | source-map@0.8.0-beta.0: 1433 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1434 | engines: {node: '>= 8'} 1435 | 1436 | stackback@0.0.2: 1437 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1438 | 1439 | std-env@3.8.0: 1440 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1441 | 1442 | string-width@4.2.3: 1443 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1444 | engines: {node: '>=8'} 1445 | 1446 | string-width@5.1.2: 1447 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1448 | engines: {node: '>=12'} 1449 | 1450 | strip-ansi@6.0.1: 1451 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1452 | engines: {node: '>=8'} 1453 | 1454 | strip-ansi@7.1.0: 1455 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1456 | engines: {node: '>=12'} 1457 | 1458 | strip-json-comments@3.1.1: 1459 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1460 | engines: {node: '>=8'} 1461 | 1462 | sucrase@3.35.0: 1463 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1464 | engines: {node: '>=16 || 14 >=14.17'} 1465 | hasBin: true 1466 | 1467 | supports-color@7.2.0: 1468 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1469 | engines: {node: '>=8'} 1470 | 1471 | supports-preserve-symlinks-flag@1.0.0: 1472 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1473 | engines: {node: '>= 0.4'} 1474 | 1475 | tailwindcss@3.4.17: 1476 | resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} 1477 | engines: {node: '>=14.0.0'} 1478 | hasBin: true 1479 | 1480 | thenify-all@1.6.0: 1481 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1482 | engines: {node: '>=0.8'} 1483 | 1484 | thenify@3.3.1: 1485 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1486 | 1487 | tinybench@2.9.0: 1488 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1489 | 1490 | tinyexec@0.3.1: 1491 | resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} 1492 | 1493 | tinyexec@0.3.2: 1494 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1495 | 1496 | tinyglobby@0.2.10: 1497 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} 1498 | engines: {node: '>=12.0.0'} 1499 | 1500 | tinypool@1.0.2: 1501 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1502 | engines: {node: ^18.0.0 || >=20.0.0} 1503 | 1504 | tinyrainbow@2.0.0: 1505 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1506 | engines: {node: '>=14.0.0'} 1507 | 1508 | tinyspy@3.0.2: 1509 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1510 | engines: {node: '>=14.0.0'} 1511 | 1512 | to-regex-range@5.0.1: 1513 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1514 | engines: {node: '>=8.0'} 1515 | 1516 | tr46@1.0.1: 1517 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1518 | 1519 | tree-kill@1.2.2: 1520 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1521 | hasBin: true 1522 | 1523 | ts-api-utils@2.0.0: 1524 | resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} 1525 | engines: {node: '>=18.12'} 1526 | peerDependencies: 1527 | typescript: '>=4.8.4' 1528 | 1529 | ts-interface-checker@0.1.13: 1530 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1531 | 1532 | tsup@8.3.5: 1533 | resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} 1534 | engines: {node: '>=18'} 1535 | hasBin: true 1536 | peerDependencies: 1537 | '@microsoft/api-extractor': ^7.36.0 1538 | '@swc/core': ^1 1539 | postcss: ^8.4.12 1540 | typescript: '>=4.5.0' 1541 | peerDependenciesMeta: 1542 | '@microsoft/api-extractor': 1543 | optional: true 1544 | '@swc/core': 1545 | optional: true 1546 | postcss: 1547 | optional: true 1548 | typescript: 1549 | optional: true 1550 | 1551 | type-check@0.4.0: 1552 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1553 | engines: {node: '>= 0.8.0'} 1554 | 1555 | typescript@5.7.3: 1556 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1557 | engines: {node: '>=14.17'} 1558 | hasBin: true 1559 | 1560 | ufo@1.5.4: 1561 | resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} 1562 | 1563 | undici-types@6.20.0: 1564 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1565 | 1566 | uri-js@4.4.1: 1567 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1568 | 1569 | util-deprecate@1.0.2: 1570 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1571 | 1572 | vite-node@3.0.4: 1573 | resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==} 1574 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1575 | hasBin: true 1576 | 1577 | vite@5.2.12: 1578 | resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} 1579 | engines: {node: ^18.0.0 || >=20.0.0} 1580 | hasBin: true 1581 | peerDependencies: 1582 | '@types/node': ^18.0.0 || >=20.0.0 1583 | less: '*' 1584 | lightningcss: ^1.21.0 1585 | sass: '*' 1586 | stylus: '*' 1587 | sugarss: '*' 1588 | terser: ^5.4.0 1589 | peerDependenciesMeta: 1590 | '@types/node': 1591 | optional: true 1592 | less: 1593 | optional: true 1594 | lightningcss: 1595 | optional: true 1596 | sass: 1597 | optional: true 1598 | stylus: 1599 | optional: true 1600 | sugarss: 1601 | optional: true 1602 | terser: 1603 | optional: true 1604 | 1605 | vitest@3.0.4: 1606 | resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==} 1607 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1608 | hasBin: true 1609 | peerDependencies: 1610 | '@edge-runtime/vm': '*' 1611 | '@types/debug': ^4.1.12 1612 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1613 | '@vitest/browser': 3.0.4 1614 | '@vitest/ui': 3.0.4 1615 | happy-dom: '*' 1616 | jsdom: '*' 1617 | peerDependenciesMeta: 1618 | '@edge-runtime/vm': 1619 | optional: true 1620 | '@types/debug': 1621 | optional: true 1622 | '@types/node': 1623 | optional: true 1624 | '@vitest/browser': 1625 | optional: true 1626 | '@vitest/ui': 1627 | optional: true 1628 | happy-dom: 1629 | optional: true 1630 | jsdom: 1631 | optional: true 1632 | 1633 | webidl-conversions@4.0.2: 1634 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1635 | 1636 | whatwg-url@7.1.0: 1637 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1638 | 1639 | which@2.0.2: 1640 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1641 | engines: {node: '>= 8'} 1642 | hasBin: true 1643 | 1644 | why-is-node-running@2.3.0: 1645 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1646 | engines: {node: '>=8'} 1647 | hasBin: true 1648 | 1649 | word-wrap@1.2.5: 1650 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1651 | engines: {node: '>=0.10.0'} 1652 | 1653 | wrap-ansi@7.0.0: 1654 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1655 | engines: {node: '>=10'} 1656 | 1657 | wrap-ansi@8.1.0: 1658 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1659 | engines: {node: '>=12'} 1660 | 1661 | yaml@2.4.3: 1662 | resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} 1663 | engines: {node: '>= 14'} 1664 | hasBin: true 1665 | 1666 | yocto-queue@0.1.0: 1667 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1668 | engines: {node: '>=10'} 1669 | 1670 | snapshots: 1671 | 1672 | '@alloc/quick-lru@5.2.0': {} 1673 | 1674 | '@antfu/install-pkg@0.4.1': 1675 | dependencies: 1676 | package-manager-detector: 0.2.7 1677 | tinyexec: 0.3.1 1678 | 1679 | '@antfu/utils@0.7.10': {} 1680 | 1681 | '@babel/code-frame@7.26.2': 1682 | dependencies: 1683 | '@babel/helper-validator-identifier': 7.25.9 1684 | js-tokens: 4.0.0 1685 | picocolors: 1.1.1 1686 | 1687 | '@babel/generator@7.26.3': 1688 | dependencies: 1689 | '@babel/parser': 7.26.3 1690 | '@babel/types': 7.26.3 1691 | '@jridgewell/gen-mapping': 0.3.5 1692 | '@jridgewell/trace-mapping': 0.3.25 1693 | jsesc: 3.1.0 1694 | 1695 | '@babel/helper-string-parser@7.25.9': {} 1696 | 1697 | '@babel/helper-validator-identifier@7.25.9': {} 1698 | 1699 | '@babel/parser@7.26.3': 1700 | dependencies: 1701 | '@babel/types': 7.26.3 1702 | 1703 | '@babel/template@7.25.9': 1704 | dependencies: 1705 | '@babel/code-frame': 7.26.2 1706 | '@babel/parser': 7.26.3 1707 | '@babel/types': 7.26.3 1708 | 1709 | '@babel/traverse@7.26.4': 1710 | dependencies: 1711 | '@babel/code-frame': 7.26.2 1712 | '@babel/generator': 7.26.3 1713 | '@babel/parser': 7.26.3 1714 | '@babel/template': 7.25.9 1715 | '@babel/types': 7.26.3 1716 | debug: 4.4.0 1717 | globals: 11.12.0 1718 | transitivePeerDependencies: 1719 | - supports-color 1720 | 1721 | '@babel/types@7.26.3': 1722 | dependencies: 1723 | '@babel/helper-string-parser': 7.25.9 1724 | '@babel/helper-validator-identifier': 7.25.9 1725 | 1726 | '@esbuild/aix-ppc64@0.20.2': 1727 | optional: true 1728 | 1729 | '@esbuild/aix-ppc64@0.24.0': 1730 | optional: true 1731 | 1732 | '@esbuild/android-arm64@0.20.2': 1733 | optional: true 1734 | 1735 | '@esbuild/android-arm64@0.24.0': 1736 | optional: true 1737 | 1738 | '@esbuild/android-arm@0.20.2': 1739 | optional: true 1740 | 1741 | '@esbuild/android-arm@0.24.0': 1742 | optional: true 1743 | 1744 | '@esbuild/android-x64@0.20.2': 1745 | optional: true 1746 | 1747 | '@esbuild/android-x64@0.24.0': 1748 | optional: true 1749 | 1750 | '@esbuild/darwin-arm64@0.20.2': 1751 | optional: true 1752 | 1753 | '@esbuild/darwin-arm64@0.24.0': 1754 | optional: true 1755 | 1756 | '@esbuild/darwin-x64@0.20.2': 1757 | optional: true 1758 | 1759 | '@esbuild/darwin-x64@0.24.0': 1760 | optional: true 1761 | 1762 | '@esbuild/freebsd-arm64@0.20.2': 1763 | optional: true 1764 | 1765 | '@esbuild/freebsd-arm64@0.24.0': 1766 | optional: true 1767 | 1768 | '@esbuild/freebsd-x64@0.20.2': 1769 | optional: true 1770 | 1771 | '@esbuild/freebsd-x64@0.24.0': 1772 | optional: true 1773 | 1774 | '@esbuild/linux-arm64@0.20.2': 1775 | optional: true 1776 | 1777 | '@esbuild/linux-arm64@0.24.0': 1778 | optional: true 1779 | 1780 | '@esbuild/linux-arm@0.20.2': 1781 | optional: true 1782 | 1783 | '@esbuild/linux-arm@0.24.0': 1784 | optional: true 1785 | 1786 | '@esbuild/linux-ia32@0.20.2': 1787 | optional: true 1788 | 1789 | '@esbuild/linux-ia32@0.24.0': 1790 | optional: true 1791 | 1792 | '@esbuild/linux-loong64@0.20.2': 1793 | optional: true 1794 | 1795 | '@esbuild/linux-loong64@0.24.0': 1796 | optional: true 1797 | 1798 | '@esbuild/linux-mips64el@0.20.2': 1799 | optional: true 1800 | 1801 | '@esbuild/linux-mips64el@0.24.0': 1802 | optional: true 1803 | 1804 | '@esbuild/linux-ppc64@0.20.2': 1805 | optional: true 1806 | 1807 | '@esbuild/linux-ppc64@0.24.0': 1808 | optional: true 1809 | 1810 | '@esbuild/linux-riscv64@0.20.2': 1811 | optional: true 1812 | 1813 | '@esbuild/linux-riscv64@0.24.0': 1814 | optional: true 1815 | 1816 | '@esbuild/linux-s390x@0.20.2': 1817 | optional: true 1818 | 1819 | '@esbuild/linux-s390x@0.24.0': 1820 | optional: true 1821 | 1822 | '@esbuild/linux-x64@0.20.2': 1823 | optional: true 1824 | 1825 | '@esbuild/linux-x64@0.24.0': 1826 | optional: true 1827 | 1828 | '@esbuild/netbsd-x64@0.20.2': 1829 | optional: true 1830 | 1831 | '@esbuild/netbsd-x64@0.24.0': 1832 | optional: true 1833 | 1834 | '@esbuild/openbsd-arm64@0.24.0': 1835 | optional: true 1836 | 1837 | '@esbuild/openbsd-x64@0.20.2': 1838 | optional: true 1839 | 1840 | '@esbuild/openbsd-x64@0.24.0': 1841 | optional: true 1842 | 1843 | '@esbuild/sunos-x64@0.20.2': 1844 | optional: true 1845 | 1846 | '@esbuild/sunos-x64@0.24.0': 1847 | optional: true 1848 | 1849 | '@esbuild/win32-arm64@0.20.2': 1850 | optional: true 1851 | 1852 | '@esbuild/win32-arm64@0.24.0': 1853 | optional: true 1854 | 1855 | '@esbuild/win32-ia32@0.20.2': 1856 | optional: true 1857 | 1858 | '@esbuild/win32-ia32@0.24.0': 1859 | optional: true 1860 | 1861 | '@esbuild/win32-x64@0.20.2': 1862 | optional: true 1863 | 1864 | '@esbuild/win32-x64@0.24.0': 1865 | optional: true 1866 | 1867 | '@eslint-community/eslint-utils@4.4.0(eslint@9.18.0(jiti@1.21.6))': 1868 | dependencies: 1869 | eslint: 9.18.0(jiti@1.21.6) 1870 | eslint-visitor-keys: 3.4.3 1871 | 1872 | '@eslint-community/regexpp@4.12.1': {} 1873 | 1874 | '@eslint/config-array@0.19.1': 1875 | dependencies: 1876 | '@eslint/object-schema': 2.1.5 1877 | debug: 4.4.0 1878 | minimatch: 3.1.2 1879 | transitivePeerDependencies: 1880 | - supports-color 1881 | 1882 | '@eslint/core@0.10.0': 1883 | dependencies: 1884 | '@types/json-schema': 7.0.15 1885 | 1886 | '@eslint/eslintrc@3.2.0': 1887 | dependencies: 1888 | ajv: 6.12.6 1889 | debug: 4.4.0 1890 | espree: 10.3.0 1891 | globals: 14.0.0 1892 | ignore: 5.3.1 1893 | import-fresh: 3.3.0 1894 | js-yaml: 4.1.0 1895 | minimatch: 3.1.2 1896 | strip-json-comments: 3.1.1 1897 | transitivePeerDependencies: 1898 | - supports-color 1899 | 1900 | '@eslint/js@9.18.0': {} 1901 | 1902 | '@eslint/object-schema@2.1.5': {} 1903 | 1904 | '@eslint/plugin-kit@0.2.5': 1905 | dependencies: 1906 | '@eslint/core': 0.10.0 1907 | levn: 0.4.1 1908 | 1909 | '@humanfs/core@0.19.1': {} 1910 | 1911 | '@humanfs/node@0.16.6': 1912 | dependencies: 1913 | '@humanfs/core': 0.19.1 1914 | '@humanwhocodes/retry': 0.3.0 1915 | 1916 | '@humanwhocodes/module-importer@1.0.1': {} 1917 | 1918 | '@humanwhocodes/retry@0.3.0': {} 1919 | 1920 | '@humanwhocodes/retry@0.4.1': {} 1921 | 1922 | '@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2)': 1923 | dependencies: 1924 | '@babel/generator': 7.26.3 1925 | '@babel/parser': 7.26.3 1926 | '@babel/traverse': 7.26.4 1927 | '@babel/types': 7.26.3 1928 | prettier: 3.4.2 1929 | semver: 7.6.2 1930 | transitivePeerDependencies: 1931 | - supports-color 1932 | 1933 | '@iconify-json/heroicons@1.2.2': 1934 | dependencies: 1935 | '@iconify/types': 2.0.0 1936 | 1937 | '@iconify/json@2.2.299': 1938 | dependencies: 1939 | '@iconify/types': 2.0.0 1940 | pathe: 1.1.2 1941 | 1942 | '@iconify/types@2.0.0': {} 1943 | 1944 | '@iconify/utils@2.2.1': 1945 | dependencies: 1946 | '@antfu/install-pkg': 0.4.1 1947 | '@antfu/utils': 0.7.10 1948 | '@iconify/types': 2.0.0 1949 | debug: 4.4.0 1950 | globals: 15.13.0 1951 | kolorist: 1.8.0 1952 | local-pkg: 0.5.1 1953 | mlly: 1.7.3 1954 | transitivePeerDependencies: 1955 | - supports-color 1956 | 1957 | '@isaacs/cliui@8.0.2': 1958 | dependencies: 1959 | string-width: 5.1.2 1960 | string-width-cjs: string-width@4.2.3 1961 | strip-ansi: 7.1.0 1962 | strip-ansi-cjs: strip-ansi@6.0.1 1963 | wrap-ansi: 8.1.0 1964 | wrap-ansi-cjs: wrap-ansi@7.0.0 1965 | 1966 | '@jridgewell/gen-mapping@0.3.5': 1967 | dependencies: 1968 | '@jridgewell/set-array': 1.2.1 1969 | '@jridgewell/sourcemap-codec': 1.4.15 1970 | '@jridgewell/trace-mapping': 0.3.25 1971 | 1972 | '@jridgewell/resolve-uri@3.1.2': {} 1973 | 1974 | '@jridgewell/set-array@1.2.1': {} 1975 | 1976 | '@jridgewell/sourcemap-codec@1.4.15': {} 1977 | 1978 | '@jridgewell/sourcemap-codec@1.5.0': {} 1979 | 1980 | '@jridgewell/trace-mapping@0.3.25': 1981 | dependencies: 1982 | '@jridgewell/resolve-uri': 3.1.2 1983 | '@jridgewell/sourcemap-codec': 1.4.15 1984 | 1985 | '@nodelib/fs.scandir@2.1.5': 1986 | dependencies: 1987 | '@nodelib/fs.stat': 2.0.5 1988 | run-parallel: 1.2.0 1989 | 1990 | '@nodelib/fs.stat@2.0.5': {} 1991 | 1992 | '@nodelib/fs.walk@1.2.8': 1993 | dependencies: 1994 | '@nodelib/fs.scandir': 2.1.5 1995 | fastq: 1.17.1 1996 | 1997 | '@pkgjs/parseargs@0.11.0': 1998 | optional: true 1999 | 2000 | '@rollup/rollup-android-arm-eabi@4.28.1': 2001 | optional: true 2002 | 2003 | '@rollup/rollup-android-arm64@4.28.1': 2004 | optional: true 2005 | 2006 | '@rollup/rollup-darwin-arm64@4.28.1': 2007 | optional: true 2008 | 2009 | '@rollup/rollup-darwin-x64@4.28.1': 2010 | optional: true 2011 | 2012 | '@rollup/rollup-freebsd-arm64@4.28.1': 2013 | optional: true 2014 | 2015 | '@rollup/rollup-freebsd-x64@4.28.1': 2016 | optional: true 2017 | 2018 | '@rollup/rollup-linux-arm-gnueabihf@4.28.1': 2019 | optional: true 2020 | 2021 | '@rollup/rollup-linux-arm-musleabihf@4.28.1': 2022 | optional: true 2023 | 2024 | '@rollup/rollup-linux-arm64-gnu@4.28.1': 2025 | optional: true 2026 | 2027 | '@rollup/rollup-linux-arm64-musl@4.28.1': 2028 | optional: true 2029 | 2030 | '@rollup/rollup-linux-loongarch64-gnu@4.28.1': 2031 | optional: true 2032 | 2033 | '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': 2034 | optional: true 2035 | 2036 | '@rollup/rollup-linux-riscv64-gnu@4.28.1': 2037 | optional: true 2038 | 2039 | '@rollup/rollup-linux-s390x-gnu@4.28.1': 2040 | optional: true 2041 | 2042 | '@rollup/rollup-linux-x64-gnu@4.28.1': 2043 | optional: true 2044 | 2045 | '@rollup/rollup-linux-x64-musl@4.28.1': 2046 | optional: true 2047 | 2048 | '@rollup/rollup-win32-arm64-msvc@4.28.1': 2049 | optional: true 2050 | 2051 | '@rollup/rollup-win32-ia32-msvc@4.28.1': 2052 | optional: true 2053 | 2054 | '@rollup/rollup-win32-x64-msvc@4.28.1': 2055 | optional: true 2056 | 2057 | '@types/estree@1.0.6': {} 2058 | 2059 | '@types/json-schema@7.0.15': {} 2060 | 2061 | '@types/node@22.10.10': 2062 | dependencies: 2063 | undici-types: 6.20.0 2064 | 2065 | '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3)': 2066 | dependencies: 2067 | '@eslint-community/regexpp': 4.12.1 2068 | '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3) 2069 | '@typescript-eslint/scope-manager': 8.21.0 2070 | '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3) 2071 | '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3) 2072 | '@typescript-eslint/visitor-keys': 8.21.0 2073 | eslint: 9.18.0(jiti@1.21.6) 2074 | graphemer: 1.4.0 2075 | ignore: 5.3.1 2076 | natural-compare: 1.4.0 2077 | ts-api-utils: 2.0.0(typescript@5.7.3) 2078 | typescript: 5.7.3 2079 | transitivePeerDependencies: 2080 | - supports-color 2081 | 2082 | '@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3)': 2083 | dependencies: 2084 | '@typescript-eslint/scope-manager': 8.21.0 2085 | '@typescript-eslint/types': 8.21.0 2086 | '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) 2087 | '@typescript-eslint/visitor-keys': 8.21.0 2088 | debug: 4.4.0 2089 | eslint: 9.18.0(jiti@1.21.6) 2090 | typescript: 5.7.3 2091 | transitivePeerDependencies: 2092 | - supports-color 2093 | 2094 | '@typescript-eslint/scope-manager@8.21.0': 2095 | dependencies: 2096 | '@typescript-eslint/types': 8.21.0 2097 | '@typescript-eslint/visitor-keys': 8.21.0 2098 | 2099 | '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3)': 2100 | dependencies: 2101 | '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) 2102 | '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3) 2103 | debug: 4.4.0 2104 | eslint: 9.18.0(jiti@1.21.6) 2105 | ts-api-utils: 2.0.0(typescript@5.7.3) 2106 | typescript: 5.7.3 2107 | transitivePeerDependencies: 2108 | - supports-color 2109 | 2110 | '@typescript-eslint/types@8.21.0': {} 2111 | 2112 | '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': 2113 | dependencies: 2114 | '@typescript-eslint/types': 8.21.0 2115 | '@typescript-eslint/visitor-keys': 8.21.0 2116 | debug: 4.4.0 2117 | fast-glob: 3.3.2 2118 | is-glob: 4.0.3 2119 | minimatch: 9.0.4 2120 | semver: 7.6.2 2121 | ts-api-utils: 2.0.0(typescript@5.7.3) 2122 | typescript: 5.7.3 2123 | transitivePeerDependencies: 2124 | - supports-color 2125 | 2126 | '@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.7.3)': 2127 | dependencies: 2128 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0(jiti@1.21.6)) 2129 | '@typescript-eslint/scope-manager': 8.21.0 2130 | '@typescript-eslint/types': 8.21.0 2131 | '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) 2132 | eslint: 9.18.0(jiti@1.21.6) 2133 | typescript: 5.7.3 2134 | transitivePeerDependencies: 2135 | - supports-color 2136 | 2137 | '@typescript-eslint/visitor-keys@8.21.0': 2138 | dependencies: 2139 | '@typescript-eslint/types': 8.21.0 2140 | eslint-visitor-keys: 4.2.0 2141 | 2142 | '@vitest/expect@3.0.4': 2143 | dependencies: 2144 | '@vitest/spy': 3.0.4 2145 | '@vitest/utils': 3.0.4 2146 | chai: 5.1.2 2147 | tinyrainbow: 2.0.0 2148 | 2149 | '@vitest/mocker@3.0.4(vite@5.2.12(@types/node@22.10.10))': 2150 | dependencies: 2151 | '@vitest/spy': 3.0.4 2152 | estree-walker: 3.0.3 2153 | magic-string: 0.30.17 2154 | optionalDependencies: 2155 | vite: 5.2.12(@types/node@22.10.10) 2156 | 2157 | '@vitest/pretty-format@3.0.4': 2158 | dependencies: 2159 | tinyrainbow: 2.0.0 2160 | 2161 | '@vitest/runner@3.0.4': 2162 | dependencies: 2163 | '@vitest/utils': 3.0.4 2164 | pathe: 2.0.2 2165 | 2166 | '@vitest/snapshot@3.0.4': 2167 | dependencies: 2168 | '@vitest/pretty-format': 3.0.4 2169 | magic-string: 0.30.17 2170 | pathe: 2.0.2 2171 | 2172 | '@vitest/spy@3.0.4': 2173 | dependencies: 2174 | tinyspy: 3.0.2 2175 | 2176 | '@vitest/utils@3.0.4': 2177 | dependencies: 2178 | '@vitest/pretty-format': 3.0.4 2179 | loupe: 3.1.2 2180 | tinyrainbow: 2.0.0 2181 | 2182 | acorn-jsx@5.3.2(acorn@8.14.0): 2183 | dependencies: 2184 | acorn: 8.14.0 2185 | 2186 | acorn@8.14.0: {} 2187 | 2188 | ajv@6.12.6: 2189 | dependencies: 2190 | fast-deep-equal: 3.1.3 2191 | fast-json-stable-stringify: 2.1.0 2192 | json-schema-traverse: 0.4.1 2193 | uri-js: 4.4.1 2194 | 2195 | ansi-regex@5.0.1: {} 2196 | 2197 | ansi-regex@6.0.1: {} 2198 | 2199 | ansi-styles@4.3.0: 2200 | dependencies: 2201 | color-convert: 2.0.1 2202 | 2203 | ansi-styles@6.2.1: {} 2204 | 2205 | any-promise@1.3.0: {} 2206 | 2207 | anymatch@3.1.3: 2208 | dependencies: 2209 | normalize-path: 3.0.0 2210 | picomatch: 2.3.1 2211 | 2212 | arg@5.0.2: {} 2213 | 2214 | argparse@2.0.1: {} 2215 | 2216 | assertion-error@2.0.1: {} 2217 | 2218 | balanced-match@1.0.2: {} 2219 | 2220 | binary-extensions@2.3.0: {} 2221 | 2222 | brace-expansion@1.1.11: 2223 | dependencies: 2224 | balanced-match: 1.0.2 2225 | concat-map: 0.0.1 2226 | 2227 | brace-expansion@2.0.1: 2228 | dependencies: 2229 | balanced-match: 1.0.2 2230 | 2231 | braces@3.0.3: 2232 | dependencies: 2233 | fill-range: 7.1.1 2234 | 2235 | bundle-require@5.0.0(esbuild@0.24.0): 2236 | dependencies: 2237 | esbuild: 0.24.0 2238 | load-tsconfig: 0.2.5 2239 | 2240 | cac@6.7.14: {} 2241 | 2242 | callsites@3.1.0: {} 2243 | 2244 | camelcase-css@2.0.1: {} 2245 | 2246 | chai@5.1.2: 2247 | dependencies: 2248 | assertion-error: 2.0.1 2249 | check-error: 2.1.1 2250 | deep-eql: 5.0.2 2251 | loupe: 3.1.2 2252 | pathval: 2.0.0 2253 | 2254 | chalk@4.1.2: 2255 | dependencies: 2256 | ansi-styles: 4.3.0 2257 | supports-color: 7.2.0 2258 | 2259 | check-error@2.1.1: {} 2260 | 2261 | chokidar@3.6.0: 2262 | dependencies: 2263 | anymatch: 3.1.3 2264 | braces: 3.0.3 2265 | glob-parent: 5.1.2 2266 | is-binary-path: 2.1.0 2267 | is-glob: 4.0.3 2268 | normalize-path: 3.0.0 2269 | readdirp: 3.6.0 2270 | optionalDependencies: 2271 | fsevents: 2.3.3 2272 | 2273 | chokidar@4.0.1: 2274 | dependencies: 2275 | readdirp: 4.0.2 2276 | 2277 | color-convert@2.0.1: 2278 | dependencies: 2279 | color-name: 1.1.4 2280 | 2281 | color-name@1.1.4: {} 2282 | 2283 | commander@4.1.1: {} 2284 | 2285 | concat-map@0.0.1: {} 2286 | 2287 | confbox@0.1.8: {} 2288 | 2289 | consola@3.2.3: {} 2290 | 2291 | cross-spawn@7.0.3: 2292 | dependencies: 2293 | path-key: 3.1.1 2294 | shebang-command: 2.0.0 2295 | which: 2.0.2 2296 | 2297 | cross-spawn@7.0.6: 2298 | dependencies: 2299 | path-key: 3.1.1 2300 | shebang-command: 2.0.0 2301 | which: 2.0.2 2302 | 2303 | cssesc@3.0.0: {} 2304 | 2305 | debug@4.4.0: 2306 | dependencies: 2307 | ms: 2.1.3 2308 | 2309 | deep-eql@5.0.2: {} 2310 | 2311 | deep-is@0.1.4: {} 2312 | 2313 | didyoumean@1.2.2: {} 2314 | 2315 | dlv@1.1.3: {} 2316 | 2317 | eastasianwidth@0.2.0: {} 2318 | 2319 | emoji-regex@8.0.0: {} 2320 | 2321 | emoji-regex@9.2.2: {} 2322 | 2323 | es-module-lexer@1.6.0: {} 2324 | 2325 | esbuild@0.20.2: 2326 | optionalDependencies: 2327 | '@esbuild/aix-ppc64': 0.20.2 2328 | '@esbuild/android-arm': 0.20.2 2329 | '@esbuild/android-arm64': 0.20.2 2330 | '@esbuild/android-x64': 0.20.2 2331 | '@esbuild/darwin-arm64': 0.20.2 2332 | '@esbuild/darwin-x64': 0.20.2 2333 | '@esbuild/freebsd-arm64': 0.20.2 2334 | '@esbuild/freebsd-x64': 0.20.2 2335 | '@esbuild/linux-arm': 0.20.2 2336 | '@esbuild/linux-arm64': 0.20.2 2337 | '@esbuild/linux-ia32': 0.20.2 2338 | '@esbuild/linux-loong64': 0.20.2 2339 | '@esbuild/linux-mips64el': 0.20.2 2340 | '@esbuild/linux-ppc64': 0.20.2 2341 | '@esbuild/linux-riscv64': 0.20.2 2342 | '@esbuild/linux-s390x': 0.20.2 2343 | '@esbuild/linux-x64': 0.20.2 2344 | '@esbuild/netbsd-x64': 0.20.2 2345 | '@esbuild/openbsd-x64': 0.20.2 2346 | '@esbuild/sunos-x64': 0.20.2 2347 | '@esbuild/win32-arm64': 0.20.2 2348 | '@esbuild/win32-ia32': 0.20.2 2349 | '@esbuild/win32-x64': 0.20.2 2350 | 2351 | esbuild@0.24.0: 2352 | optionalDependencies: 2353 | '@esbuild/aix-ppc64': 0.24.0 2354 | '@esbuild/android-arm': 0.24.0 2355 | '@esbuild/android-arm64': 0.24.0 2356 | '@esbuild/android-x64': 0.24.0 2357 | '@esbuild/darwin-arm64': 0.24.0 2358 | '@esbuild/darwin-x64': 0.24.0 2359 | '@esbuild/freebsd-arm64': 0.24.0 2360 | '@esbuild/freebsd-x64': 0.24.0 2361 | '@esbuild/linux-arm': 0.24.0 2362 | '@esbuild/linux-arm64': 0.24.0 2363 | '@esbuild/linux-ia32': 0.24.0 2364 | '@esbuild/linux-loong64': 0.24.0 2365 | '@esbuild/linux-mips64el': 0.24.0 2366 | '@esbuild/linux-ppc64': 0.24.0 2367 | '@esbuild/linux-riscv64': 0.24.0 2368 | '@esbuild/linux-s390x': 0.24.0 2369 | '@esbuild/linux-x64': 0.24.0 2370 | '@esbuild/netbsd-x64': 0.24.0 2371 | '@esbuild/openbsd-arm64': 0.24.0 2372 | '@esbuild/openbsd-x64': 0.24.0 2373 | '@esbuild/sunos-x64': 0.24.0 2374 | '@esbuild/win32-arm64': 0.24.0 2375 | '@esbuild/win32-ia32': 0.24.0 2376 | '@esbuild/win32-x64': 0.24.0 2377 | 2378 | escape-string-regexp@4.0.0: {} 2379 | 2380 | eslint-scope@8.2.0: 2381 | dependencies: 2382 | esrecurse: 4.3.0 2383 | estraverse: 5.3.0 2384 | 2385 | eslint-visitor-keys@3.4.3: {} 2386 | 2387 | eslint-visitor-keys@4.2.0: {} 2388 | 2389 | eslint@9.18.0(jiti@1.21.6): 2390 | dependencies: 2391 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0(jiti@1.21.6)) 2392 | '@eslint-community/regexpp': 4.12.1 2393 | '@eslint/config-array': 0.19.1 2394 | '@eslint/core': 0.10.0 2395 | '@eslint/eslintrc': 3.2.0 2396 | '@eslint/js': 9.18.0 2397 | '@eslint/plugin-kit': 0.2.5 2398 | '@humanfs/node': 0.16.6 2399 | '@humanwhocodes/module-importer': 1.0.1 2400 | '@humanwhocodes/retry': 0.4.1 2401 | '@types/estree': 1.0.6 2402 | '@types/json-schema': 7.0.15 2403 | ajv: 6.12.6 2404 | chalk: 4.1.2 2405 | cross-spawn: 7.0.6 2406 | debug: 4.4.0 2407 | escape-string-regexp: 4.0.0 2408 | eslint-scope: 8.2.0 2409 | eslint-visitor-keys: 4.2.0 2410 | espree: 10.3.0 2411 | esquery: 1.5.0 2412 | esutils: 2.0.3 2413 | fast-deep-equal: 3.1.3 2414 | file-entry-cache: 8.0.0 2415 | find-up: 5.0.0 2416 | glob-parent: 6.0.2 2417 | ignore: 5.3.1 2418 | imurmurhash: 0.1.4 2419 | is-glob: 4.0.3 2420 | json-stable-stringify-without-jsonify: 1.0.1 2421 | lodash.merge: 4.6.2 2422 | minimatch: 3.1.2 2423 | natural-compare: 1.4.0 2424 | optionator: 0.9.4 2425 | optionalDependencies: 2426 | jiti: 1.21.6 2427 | transitivePeerDependencies: 2428 | - supports-color 2429 | 2430 | espree@10.3.0: 2431 | dependencies: 2432 | acorn: 8.14.0 2433 | acorn-jsx: 5.3.2(acorn@8.14.0) 2434 | eslint-visitor-keys: 4.2.0 2435 | 2436 | esquery@1.5.0: 2437 | dependencies: 2438 | estraverse: 5.3.0 2439 | 2440 | esrecurse@4.3.0: 2441 | dependencies: 2442 | estraverse: 5.3.0 2443 | 2444 | estraverse@5.3.0: {} 2445 | 2446 | estree-walker@3.0.3: 2447 | dependencies: 2448 | '@types/estree': 1.0.6 2449 | 2450 | esutils@2.0.3: {} 2451 | 2452 | expect-type@1.1.0: {} 2453 | 2454 | fast-deep-equal@3.1.3: {} 2455 | 2456 | fast-glob@3.3.2: 2457 | dependencies: 2458 | '@nodelib/fs.stat': 2.0.5 2459 | '@nodelib/fs.walk': 1.2.8 2460 | glob-parent: 5.1.2 2461 | merge2: 1.4.1 2462 | micromatch: 4.0.8 2463 | 2464 | fast-json-stable-stringify@2.1.0: {} 2465 | 2466 | fast-levenshtein@2.0.6: {} 2467 | 2468 | fastq@1.17.1: 2469 | dependencies: 2470 | reusify: 1.0.4 2471 | 2472 | fdir@6.4.2(picomatch@4.0.2): 2473 | optionalDependencies: 2474 | picomatch: 4.0.2 2475 | 2476 | file-entry-cache@8.0.0: 2477 | dependencies: 2478 | flat-cache: 4.0.1 2479 | 2480 | fill-range@7.1.1: 2481 | dependencies: 2482 | to-regex-range: 5.0.1 2483 | 2484 | find-up@5.0.0: 2485 | dependencies: 2486 | locate-path: 6.0.0 2487 | path-exists: 4.0.0 2488 | 2489 | flat-cache@4.0.1: 2490 | dependencies: 2491 | flatted: 3.3.1 2492 | keyv: 4.5.4 2493 | 2494 | flatted@3.3.1: {} 2495 | 2496 | foreground-child@3.1.1: 2497 | dependencies: 2498 | cross-spawn: 7.0.3 2499 | signal-exit: 4.1.0 2500 | 2501 | fsevents@2.3.3: 2502 | optional: true 2503 | 2504 | function-bind@1.1.2: {} 2505 | 2506 | glob-parent@5.1.2: 2507 | dependencies: 2508 | is-glob: 4.0.3 2509 | 2510 | glob-parent@6.0.2: 2511 | dependencies: 2512 | is-glob: 4.0.3 2513 | 2514 | glob@10.4.1: 2515 | dependencies: 2516 | foreground-child: 3.1.1 2517 | jackspeak: 3.3.0 2518 | minimatch: 9.0.4 2519 | minipass: 7.1.2 2520 | path-scurry: 1.11.1 2521 | 2522 | globals@11.12.0: {} 2523 | 2524 | globals@14.0.0: {} 2525 | 2526 | globals@15.13.0: {} 2527 | 2528 | graphemer@1.4.0: {} 2529 | 2530 | has-flag@4.0.0: {} 2531 | 2532 | hasown@2.0.2: 2533 | dependencies: 2534 | function-bind: 1.1.2 2535 | 2536 | ignore@5.3.1: {} 2537 | 2538 | import-fresh@3.3.0: 2539 | dependencies: 2540 | parent-module: 1.0.1 2541 | resolve-from: 4.0.0 2542 | 2543 | imurmurhash@0.1.4: {} 2544 | 2545 | is-binary-path@2.1.0: 2546 | dependencies: 2547 | binary-extensions: 2.3.0 2548 | 2549 | is-core-module@2.16.1: 2550 | dependencies: 2551 | hasown: 2.0.2 2552 | 2553 | is-extglob@2.1.1: {} 2554 | 2555 | is-fullwidth-code-point@3.0.0: {} 2556 | 2557 | is-glob@4.0.3: 2558 | dependencies: 2559 | is-extglob: 2.1.1 2560 | 2561 | is-number@7.0.0: {} 2562 | 2563 | isexe@2.0.0: {} 2564 | 2565 | jackspeak@3.3.0: 2566 | dependencies: 2567 | '@isaacs/cliui': 8.0.2 2568 | optionalDependencies: 2569 | '@pkgjs/parseargs': 0.11.0 2570 | 2571 | jiti@1.21.6: {} 2572 | 2573 | joycon@3.1.1: {} 2574 | 2575 | js-tokens@4.0.0: {} 2576 | 2577 | js-yaml@4.1.0: 2578 | dependencies: 2579 | argparse: 2.0.1 2580 | 2581 | jsesc@3.1.0: {} 2582 | 2583 | json-buffer@3.0.1: {} 2584 | 2585 | json-schema-traverse@0.4.1: {} 2586 | 2587 | json-stable-stringify-without-jsonify@1.0.1: {} 2588 | 2589 | keyv@4.5.4: 2590 | dependencies: 2591 | json-buffer: 3.0.1 2592 | 2593 | kolorist@1.8.0: {} 2594 | 2595 | levn@0.4.1: 2596 | dependencies: 2597 | prelude-ls: 1.2.1 2598 | type-check: 0.4.0 2599 | 2600 | lilconfig@3.1.1: {} 2601 | 2602 | lilconfig@3.1.3: {} 2603 | 2604 | lines-and-columns@1.2.4: {} 2605 | 2606 | load-tsconfig@0.2.5: {} 2607 | 2608 | local-pkg@0.5.1: 2609 | dependencies: 2610 | mlly: 1.7.3 2611 | pkg-types: 1.2.1 2612 | 2613 | locate-path@6.0.0: 2614 | dependencies: 2615 | p-locate: 5.0.0 2616 | 2617 | lodash.merge@4.6.2: {} 2618 | 2619 | lodash.sortby@4.7.0: {} 2620 | 2621 | loupe@3.1.2: {} 2622 | 2623 | lru-cache@10.2.2: {} 2624 | 2625 | magic-string@0.30.17: 2626 | dependencies: 2627 | '@jridgewell/sourcemap-codec': 1.5.0 2628 | 2629 | merge2@1.4.1: {} 2630 | 2631 | micromatch@4.0.8: 2632 | dependencies: 2633 | braces: 3.0.3 2634 | picomatch: 2.3.1 2635 | 2636 | minimatch@3.1.2: 2637 | dependencies: 2638 | brace-expansion: 1.1.11 2639 | 2640 | minimatch@9.0.4: 2641 | dependencies: 2642 | brace-expansion: 2.0.1 2643 | 2644 | minipass@7.1.2: {} 2645 | 2646 | mlly@1.7.3: 2647 | dependencies: 2648 | acorn: 8.14.0 2649 | pathe: 1.1.2 2650 | pkg-types: 1.2.1 2651 | ufo: 1.5.4 2652 | 2653 | ms@2.1.3: {} 2654 | 2655 | mz@2.7.0: 2656 | dependencies: 2657 | any-promise: 1.3.0 2658 | object-assign: 4.1.1 2659 | thenify-all: 1.6.0 2660 | 2661 | nanoid@3.3.8: {} 2662 | 2663 | natural-compare@1.4.0: {} 2664 | 2665 | normalize-path@3.0.0: {} 2666 | 2667 | object-assign@4.1.1: {} 2668 | 2669 | object-hash@3.0.0: {} 2670 | 2671 | optionator@0.9.4: 2672 | dependencies: 2673 | deep-is: 0.1.4 2674 | fast-levenshtein: 2.0.6 2675 | levn: 0.4.1 2676 | prelude-ls: 1.2.1 2677 | type-check: 0.4.0 2678 | word-wrap: 1.2.5 2679 | 2680 | p-limit@3.1.0: 2681 | dependencies: 2682 | yocto-queue: 0.1.0 2683 | 2684 | p-locate@5.0.0: 2685 | dependencies: 2686 | p-limit: 3.1.0 2687 | 2688 | package-manager-detector@0.2.7: {} 2689 | 2690 | parent-module@1.0.1: 2691 | dependencies: 2692 | callsites: 3.1.0 2693 | 2694 | path-exists@4.0.0: {} 2695 | 2696 | path-key@3.1.1: {} 2697 | 2698 | path-parse@1.0.7: {} 2699 | 2700 | path-scurry@1.11.1: 2701 | dependencies: 2702 | lru-cache: 10.2.2 2703 | minipass: 7.1.2 2704 | 2705 | pathe@1.1.2: {} 2706 | 2707 | pathe@2.0.2: {} 2708 | 2709 | pathval@2.0.0: {} 2710 | 2711 | picocolors@1.1.1: {} 2712 | 2713 | picomatch@2.3.1: {} 2714 | 2715 | picomatch@4.0.2: {} 2716 | 2717 | pify@2.3.0: {} 2718 | 2719 | pirates@4.0.6: {} 2720 | 2721 | pkg-types@1.2.1: 2722 | dependencies: 2723 | confbox: 0.1.8 2724 | mlly: 1.7.3 2725 | pathe: 1.1.2 2726 | 2727 | postcss-import@15.1.0(postcss@8.5.1): 2728 | dependencies: 2729 | postcss: 8.5.1 2730 | postcss-value-parser: 4.2.0 2731 | read-cache: 1.0.0 2732 | resolve: 1.22.10 2733 | 2734 | postcss-js@4.0.1(postcss@8.5.1): 2735 | dependencies: 2736 | camelcase-css: 2.0.1 2737 | postcss: 8.5.1 2738 | 2739 | postcss-load-config@4.0.2(postcss@8.5.1): 2740 | dependencies: 2741 | lilconfig: 3.1.3 2742 | yaml: 2.4.3 2743 | optionalDependencies: 2744 | postcss: 8.5.1 2745 | 2746 | postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.5.1)(yaml@2.4.3): 2747 | dependencies: 2748 | lilconfig: 3.1.1 2749 | optionalDependencies: 2750 | jiti: 1.21.6 2751 | postcss: 8.5.1 2752 | yaml: 2.4.3 2753 | 2754 | postcss-nested@6.2.0(postcss@8.5.1): 2755 | dependencies: 2756 | postcss: 8.5.1 2757 | postcss-selector-parser: 6.1.2 2758 | 2759 | postcss-selector-parser@6.1.2: 2760 | dependencies: 2761 | cssesc: 3.0.0 2762 | util-deprecate: 1.0.2 2763 | 2764 | postcss-value-parser@4.2.0: {} 2765 | 2766 | postcss@8.5.1: 2767 | dependencies: 2768 | nanoid: 3.3.8 2769 | picocolors: 1.1.1 2770 | source-map-js: 1.2.1 2771 | 2772 | prelude-ls@1.2.1: {} 2773 | 2774 | prettier-plugin-tailwindcss@0.6.11(@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2))(prettier@3.4.2): 2775 | dependencies: 2776 | prettier: 3.4.2 2777 | optionalDependencies: 2778 | '@ianvs/prettier-plugin-sort-imports': 4.4.1(prettier@3.4.2) 2779 | 2780 | prettier@3.4.2: {} 2781 | 2782 | punycode@2.3.1: {} 2783 | 2784 | queue-microtask@1.2.3: {} 2785 | 2786 | read-cache@1.0.0: 2787 | dependencies: 2788 | pify: 2.3.0 2789 | 2790 | readdirp@3.6.0: 2791 | dependencies: 2792 | picomatch: 2.3.1 2793 | 2794 | readdirp@4.0.2: {} 2795 | 2796 | resolve-from@4.0.0: {} 2797 | 2798 | resolve-from@5.0.0: {} 2799 | 2800 | resolve@1.22.10: 2801 | dependencies: 2802 | is-core-module: 2.16.1 2803 | path-parse: 1.0.7 2804 | supports-preserve-symlinks-flag: 1.0.0 2805 | 2806 | reusify@1.0.4: {} 2807 | 2808 | rollup@4.28.1: 2809 | dependencies: 2810 | '@types/estree': 1.0.6 2811 | optionalDependencies: 2812 | '@rollup/rollup-android-arm-eabi': 4.28.1 2813 | '@rollup/rollup-android-arm64': 4.28.1 2814 | '@rollup/rollup-darwin-arm64': 4.28.1 2815 | '@rollup/rollup-darwin-x64': 4.28.1 2816 | '@rollup/rollup-freebsd-arm64': 4.28.1 2817 | '@rollup/rollup-freebsd-x64': 4.28.1 2818 | '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 2819 | '@rollup/rollup-linux-arm-musleabihf': 4.28.1 2820 | '@rollup/rollup-linux-arm64-gnu': 4.28.1 2821 | '@rollup/rollup-linux-arm64-musl': 4.28.1 2822 | '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 2823 | '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 2824 | '@rollup/rollup-linux-riscv64-gnu': 4.28.1 2825 | '@rollup/rollup-linux-s390x-gnu': 4.28.1 2826 | '@rollup/rollup-linux-x64-gnu': 4.28.1 2827 | '@rollup/rollup-linux-x64-musl': 4.28.1 2828 | '@rollup/rollup-win32-arm64-msvc': 4.28.1 2829 | '@rollup/rollup-win32-ia32-msvc': 4.28.1 2830 | '@rollup/rollup-win32-x64-msvc': 4.28.1 2831 | fsevents: 2.3.3 2832 | 2833 | run-parallel@1.2.0: 2834 | dependencies: 2835 | queue-microtask: 1.2.3 2836 | 2837 | semver@7.6.2: {} 2838 | 2839 | shebang-command@2.0.0: 2840 | dependencies: 2841 | shebang-regex: 3.0.0 2842 | 2843 | shebang-regex@3.0.0: {} 2844 | 2845 | siginfo@2.0.0: {} 2846 | 2847 | signal-exit@4.1.0: {} 2848 | 2849 | source-map-js@1.2.1: {} 2850 | 2851 | source-map@0.8.0-beta.0: 2852 | dependencies: 2853 | whatwg-url: 7.1.0 2854 | 2855 | stackback@0.0.2: {} 2856 | 2857 | std-env@3.8.0: {} 2858 | 2859 | string-width@4.2.3: 2860 | dependencies: 2861 | emoji-regex: 8.0.0 2862 | is-fullwidth-code-point: 3.0.0 2863 | strip-ansi: 6.0.1 2864 | 2865 | string-width@5.1.2: 2866 | dependencies: 2867 | eastasianwidth: 0.2.0 2868 | emoji-regex: 9.2.2 2869 | strip-ansi: 7.1.0 2870 | 2871 | strip-ansi@6.0.1: 2872 | dependencies: 2873 | ansi-regex: 5.0.1 2874 | 2875 | strip-ansi@7.1.0: 2876 | dependencies: 2877 | ansi-regex: 6.0.1 2878 | 2879 | strip-json-comments@3.1.1: {} 2880 | 2881 | sucrase@3.35.0: 2882 | dependencies: 2883 | '@jridgewell/gen-mapping': 0.3.5 2884 | commander: 4.1.1 2885 | glob: 10.4.1 2886 | lines-and-columns: 1.2.4 2887 | mz: 2.7.0 2888 | pirates: 4.0.6 2889 | ts-interface-checker: 0.1.13 2890 | 2891 | supports-color@7.2.0: 2892 | dependencies: 2893 | has-flag: 4.0.0 2894 | 2895 | supports-preserve-symlinks-flag@1.0.0: {} 2896 | 2897 | tailwindcss@3.4.17: 2898 | dependencies: 2899 | '@alloc/quick-lru': 5.2.0 2900 | arg: 5.0.2 2901 | chokidar: 3.6.0 2902 | didyoumean: 1.2.2 2903 | dlv: 1.1.3 2904 | fast-glob: 3.3.2 2905 | glob-parent: 6.0.2 2906 | is-glob: 4.0.3 2907 | jiti: 1.21.6 2908 | lilconfig: 3.1.3 2909 | micromatch: 4.0.8 2910 | normalize-path: 3.0.0 2911 | object-hash: 3.0.0 2912 | picocolors: 1.1.1 2913 | postcss: 8.5.1 2914 | postcss-import: 15.1.0(postcss@8.5.1) 2915 | postcss-js: 4.0.1(postcss@8.5.1) 2916 | postcss-load-config: 4.0.2(postcss@8.5.1) 2917 | postcss-nested: 6.2.0(postcss@8.5.1) 2918 | postcss-selector-parser: 6.1.2 2919 | resolve: 1.22.10 2920 | sucrase: 3.35.0 2921 | transitivePeerDependencies: 2922 | - ts-node 2923 | 2924 | thenify-all@1.6.0: 2925 | dependencies: 2926 | thenify: 3.3.1 2927 | 2928 | thenify@3.3.1: 2929 | dependencies: 2930 | any-promise: 1.3.0 2931 | 2932 | tinybench@2.9.0: {} 2933 | 2934 | tinyexec@0.3.1: {} 2935 | 2936 | tinyexec@0.3.2: {} 2937 | 2938 | tinyglobby@0.2.10: 2939 | dependencies: 2940 | fdir: 6.4.2(picomatch@4.0.2) 2941 | picomatch: 4.0.2 2942 | 2943 | tinypool@1.0.2: {} 2944 | 2945 | tinyrainbow@2.0.0: {} 2946 | 2947 | tinyspy@3.0.2: {} 2948 | 2949 | to-regex-range@5.0.1: 2950 | dependencies: 2951 | is-number: 7.0.0 2952 | 2953 | tr46@1.0.1: 2954 | dependencies: 2955 | punycode: 2.3.1 2956 | 2957 | tree-kill@1.2.2: {} 2958 | 2959 | ts-api-utils@2.0.0(typescript@5.7.3): 2960 | dependencies: 2961 | typescript: 5.7.3 2962 | 2963 | ts-interface-checker@0.1.13: {} 2964 | 2965 | tsup@8.3.5(jiti@1.21.6)(postcss@8.5.1)(typescript@5.7.3)(yaml@2.4.3): 2966 | dependencies: 2967 | bundle-require: 5.0.0(esbuild@0.24.0) 2968 | cac: 6.7.14 2969 | chokidar: 4.0.1 2970 | consola: 3.2.3 2971 | debug: 4.4.0 2972 | esbuild: 0.24.0 2973 | joycon: 3.1.1 2974 | picocolors: 1.1.1 2975 | postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.5.1)(yaml@2.4.3) 2976 | resolve-from: 5.0.0 2977 | rollup: 4.28.1 2978 | source-map: 0.8.0-beta.0 2979 | sucrase: 3.35.0 2980 | tinyexec: 0.3.1 2981 | tinyglobby: 0.2.10 2982 | tree-kill: 1.2.2 2983 | optionalDependencies: 2984 | postcss: 8.5.1 2985 | typescript: 5.7.3 2986 | transitivePeerDependencies: 2987 | - jiti 2988 | - supports-color 2989 | - tsx 2990 | - yaml 2991 | 2992 | type-check@0.4.0: 2993 | dependencies: 2994 | prelude-ls: 1.2.1 2995 | 2996 | typescript@5.7.3: {} 2997 | 2998 | ufo@1.5.4: {} 2999 | 3000 | undici-types@6.20.0: {} 3001 | 3002 | uri-js@4.4.1: 3003 | dependencies: 3004 | punycode: 2.3.1 3005 | 3006 | util-deprecate@1.0.2: {} 3007 | 3008 | vite-node@3.0.4(@types/node@22.10.10): 3009 | dependencies: 3010 | cac: 6.7.14 3011 | debug: 4.4.0 3012 | es-module-lexer: 1.6.0 3013 | pathe: 2.0.2 3014 | vite: 5.2.12(@types/node@22.10.10) 3015 | transitivePeerDependencies: 3016 | - '@types/node' 3017 | - less 3018 | - lightningcss 3019 | - sass 3020 | - stylus 3021 | - sugarss 3022 | - supports-color 3023 | - terser 3024 | 3025 | vite@5.2.12(@types/node@22.10.10): 3026 | dependencies: 3027 | esbuild: 0.20.2 3028 | postcss: 8.5.1 3029 | rollup: 4.28.1 3030 | optionalDependencies: 3031 | '@types/node': 22.10.10 3032 | fsevents: 2.3.3 3033 | 3034 | vitest@3.0.4(@types/node@22.10.10): 3035 | dependencies: 3036 | '@vitest/expect': 3.0.4 3037 | '@vitest/mocker': 3.0.4(vite@5.2.12(@types/node@22.10.10)) 3038 | '@vitest/pretty-format': 3.0.4 3039 | '@vitest/runner': 3.0.4 3040 | '@vitest/snapshot': 3.0.4 3041 | '@vitest/spy': 3.0.4 3042 | '@vitest/utils': 3.0.4 3043 | chai: 5.1.2 3044 | debug: 4.4.0 3045 | expect-type: 1.1.0 3046 | magic-string: 0.30.17 3047 | pathe: 2.0.2 3048 | std-env: 3.8.0 3049 | tinybench: 2.9.0 3050 | tinyexec: 0.3.2 3051 | tinypool: 1.0.2 3052 | tinyrainbow: 2.0.0 3053 | vite: 5.2.12(@types/node@22.10.10) 3054 | vite-node: 3.0.4(@types/node@22.10.10) 3055 | why-is-node-running: 2.3.0 3056 | optionalDependencies: 3057 | '@types/node': 22.10.10 3058 | transitivePeerDependencies: 3059 | - less 3060 | - lightningcss 3061 | - msw 3062 | - sass 3063 | - stylus 3064 | - sugarss 3065 | - supports-color 3066 | - terser 3067 | 3068 | webidl-conversions@4.0.2: {} 3069 | 3070 | whatwg-url@7.1.0: 3071 | dependencies: 3072 | lodash.sortby: 4.7.0 3073 | tr46: 1.0.1 3074 | webidl-conversions: 4.0.2 3075 | 3076 | which@2.0.2: 3077 | dependencies: 3078 | isexe: 2.0.0 3079 | 3080 | why-is-node-running@2.3.0: 3081 | dependencies: 3082 | siginfo: 2.0.0 3083 | stackback: 0.0.2 3084 | 3085 | word-wrap@1.2.5: {} 3086 | 3087 | wrap-ansi@7.0.0: 3088 | dependencies: 3089 | ansi-styles: 4.3.0 3090 | string-width: 4.2.3 3091 | strip-ansi: 6.0.1 3092 | 3093 | wrap-ansi@8.1.0: 3094 | dependencies: 3095 | ansi-styles: 6.2.1 3096 | string-width: 5.1.2 3097 | strip-ansi: 7.1.0 3098 | 3099 | yaml@2.4.3: {} 3100 | 3101 | yocto-queue@0.1.0: {} 3102 | --------------------------------------------------------------------------------