diff --git a/plugins-demo/tailwind-demo/.gitignore b/plugins-demo/tailwind-demo/.gitignore deleted file mode 100644 index 8d67a86..0000000 --- a/plugins-demo/tailwind-demo/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -node_modules -dist diff --git a/plugins-demo/tailwind-demo/package.json b/plugins-demo/tailwind-demo/package.json deleted file mode 100644 index 8bbb64d..0000000 --- a/plugins-demo/tailwind-demo/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@iconify-demo/tailwind", - "version": "1.0.0", - "private": true, - "description": "", - "main": "index.js", - "scripts": { - "build": "tailwindcss -i ./src/input.css -o ./dist/output.css" - }, - "keywords": [], - "devDependencies": { - "@iconify-json/fa6-regular": "^1.2.2", - "@iconify-json/mdi-light": "^1.2.1", - "@iconify-json/vscode-icons": "^1.2.3", - "@iconify/tailwind": "workspace:*", - "@iconify/tools": "3.0.0-beta.3", - "tailwindcss": "^3.4.16" - } -} diff --git a/plugins-demo/tailwind-demo/src/index.html b/plugins-demo/tailwind-demo/src/index.html deleted file mode 100644 index 57fc069..0000000 --- a/plugins-demo/tailwind-demo/src/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - -
-

Main plugin

-

- Monotone icons (changes color, blue): - - - - - -

-

- Color icons: - - - - - -

-

- Using width/height to resize icon: - - -

-

- Scaled non-square icons: - -

-
-
-

Dynamic selectors plugin, custom options

-

Icons should scale to 1.5em, which is about 24px

-

- Monotone icons (red, blue): - - -

-

- Failed icon (should not be pre-rendered): - -

-

- Colored icons: - - -

-
-
-

Dynamic selectors plugin

-

- Few icons that change color on hover (first icon also changes - icon on hover): - - - - -

-

- Custom icons, imported from "svg" directory (first icon's - animation slowed down using "customise" option): - - - - -

-

- Icons with hardcoded palette: - - - - -

-
-
-

Clean selectors plugin (deprecated)

-

- Monotone icon: 1em size (changing color), text-2xl size (red): - - -

-

- Custom size set via width/height: - -

-
- - diff --git a/plugins-demo/tailwind-demo/src/input.css b/plugins-demo/tailwind-demo/src/input.css deleted file mode 100644 index 9a552ae..0000000 --- a/plugins-demo/tailwind-demo/src/input.css +++ /dev/null @@ -1,11 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -.demo { - color: #16a34a; - vertical-align: -6px; -} -.demo:hover { - color: #b91c1c; -} diff --git a/plugins-demo/tailwind-demo/svg/spinner1.svg b/plugins-demo/tailwind-demo/svg/spinner1.svg deleted file mode 100644 index 6dac21d..0000000 --- a/plugins-demo/tailwind-demo/svg/spinner1.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - \ No newline at end of file diff --git a/plugins-demo/tailwind-demo/svg/spinner2.svg b/plugins-demo/tailwind-demo/svg/spinner2.svg deleted file mode 100644 index 0fbab07..0000000 --- a/plugins-demo/tailwind-demo/svg/spinner2.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugins-demo/tailwind-demo/tailwind.config.js b/plugins-demo/tailwind-demo/tailwind.config.js deleted file mode 100644 index 45f7485..0000000 --- a/plugins-demo/tailwind-demo/tailwind.config.js +++ /dev/null @@ -1,132 +0,0 @@ -const { - addCleanIconSelectors, - addDynamicIconSelectors, - addIconSelectors, -} = require('@iconify/tailwind'); -const { - importDirectorySync, - cleanupSVG, - parseColorsSync, - runSVGO, - isEmptyColor, -} = require('@iconify/tools'); - -// Import icons from directory 'svg' -const customSet = importDirectorySync('svg'); - -// Clean up all icons -customSet.forEachSync((name, type) => { - if (type !== 'icon') { - return; - } - - // Get SVG object for icon - const svg = customSet.toSVG(name); - if (!svg) { - // Invalid icon - customSet.remove(name); - return; - } - - try { - // Clean up icon - cleanupSVG(svg); - - // This is a monotone icon, change color to `currentColor`, add it if missing - // Skip this step if icons have palette - parseColorsSync(svg, { - defaultColor: 'currentColor', - callback: (attr, colorStr, color) => { - return !color || isEmptyColor(color) - ? colorStr - : 'currentColor'; - }, - }); - - // Optimise icon - runSVGO(svg); - } catch (err) { - // Something went wrong when parsing icon: remove it - console.error(`Error parsing ${name}:`, err); - customSet.remove(name); - return; - } - - // Update icon in icon set from SVG object - customSet.fromSVG(name, svg); -}); - -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ['./src/*.html'], - plugins: [ - // Main plugin, default options - addIconSelectors(['mdi-light', 'vscode-icons']), - // Main plugin, custom options - addIconSelectors({ - maskSelector: '.custom-monotone', - backgroundSelector: '.custom-background', - // Like UnoCSS - iconSelector: '.i-{prefix}-{name}', - scale: 1.5, - prefixes: [ - { - prefix: 'mdi-light', - icons: ['home'], - customise: (content) => - content.replace(/currentColor/g, '#40f'), - }, - { - prefix: 'custom', - source: customSet.export(), - customise: (content) => - content.replace(/currentColor/g, '#f20'), - }, - ], - }), - // Main plugin, no size - addIconSelectors({ - maskSelector: '.iconify-nosize', - backgroundSelector: '', - scale: 0, - // No prefixes list: reusing data from plugin above - }), - // Main plugin, no square and scale - addIconSelectors({ - maskSelector: '.fa6-mask', - backgroundSelector: '.fa6-bg', // unused - iconSelector: '.{prefix}-{name}', - square: false, - scale: 2, - prefixes: ['fa6-regular'], - }), - // Plugin with clean selectors: requires writing all used icons in first parameter - addCleanIconSelectors(['mdi-light:home']), - // Plugin with dynamic selectors - addDynamicIconSelectors({ - iconSets: { - custom: customSet.export(), - }, - customise: (content, name, prefix) => { - switch (name) { - case 'spinner1': - return content.replace( - 'animation:0.75s', - 'animation:5s' - ); - } - return content; - }, - }), - // Plugin with dynamic selectors that contains only css for overriding icon - addDynamicIconSelectors({ - prefix: 'icon-hover', - overrideOnly: true, - }), - // Icons without size - addDynamicIconSelectors({ - prefix: 'scaled-icon', - scale: 0, - }), - ], -}; diff --git a/plugins-demo/tailwind4-demo/.gitignore b/plugins-demo/tailwind4-demo/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/plugins-demo/tailwind4-demo/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/plugins-demo/tailwind4-demo/.vscode/extensions.json b/plugins-demo/tailwind4-demo/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/plugins-demo/tailwind4-demo/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/plugins-demo/tailwind4-demo/README.md b/plugins-demo/tailwind4-demo/README.md new file mode 100644 index 0000000..5854aeb --- /dev/null +++ b/plugins-demo/tailwind4-demo/README.md @@ -0,0 +1,33 @@ +# tailwind4-demo + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` diff --git a/plugins-demo/tailwind4-demo/env.d.ts b/plugins-demo/tailwind4-demo/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/plugins-demo/tailwind4-demo/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/plugins-demo/tailwind4-demo/index.html b/plugins-demo/tailwind4-demo/index.html new file mode 100644 index 0000000..200c820 --- /dev/null +++ b/plugins-demo/tailwind4-demo/index.html @@ -0,0 +1,13 @@ + + + + + + + Tailwind CSS Test + + +
+ + + diff --git a/plugins-demo/tailwind4-demo/package.json b/plugins-demo/tailwind4-demo/package.json new file mode 100644 index 0000000..96c1579 --- /dev/null +++ b/plugins-demo/tailwind4-demo/package.json @@ -0,0 +1,33 @@ +{ + "name": "tailwind4-demo", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build" + }, + "dependencies": { + "vue": "^3.5.13" + }, + "devDependencies": { + "@iconify/tailwind4": "workspace:*", + "@iconify-json/fa6-regular": "^1.2.2", + "@iconify-json/mdi-light": "^1.2.1", + "@iconify-json/vscode-icons": "^1.2.6", + "@tailwindcss/vite": "4.0.0-beta.8", + "@tsconfig/node22": "^22.0.0", + "@types/node": "^22.9.3", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/tsconfig": "^0.7.0", + "npm-run-all2": "^7.0.1", + "tailwindcss": "4.0.0-beta.8", + "typescript": "~5.6.3", + "vite": "^6.0.1", + "vite-plugin-vue-devtools": "^7.6.5", + "vue-tsc": "^2.1.10" + } +} diff --git a/plugins-demo/tailwind4-demo/public/favicon.ico b/plugins-demo/tailwind4-demo/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/plugins-demo/tailwind4-demo/public/favicon.ico differ diff --git a/plugins-demo/tailwind4-demo/src/App.vue b/plugins-demo/tailwind4-demo/src/App.vue new file mode 100644 index 0000000..f2697bc --- /dev/null +++ b/plugins-demo/tailwind4-demo/src/App.vue @@ -0,0 +1,27 @@ + diff --git a/plugins-demo/tailwind4-demo/src/assets/main.css b/plugins-demo/tailwind4-demo/src/assets/main.css new file mode 100644 index 0000000..7726e74 --- /dev/null +++ b/plugins-demo/tailwind4-demo/src/assets/main.css @@ -0,0 +1,10 @@ +@import 'tailwindcss'; + +@plugin "@iconify/tailwind4"; + +.demo { + color: var(--color-blue-600); +} +.demo:hover { + color: var(--color-red-600); +} diff --git a/plugins-demo/tailwind4-demo/src/main.ts b/plugins-demo/tailwind4-demo/src/main.ts new file mode 100644 index 0000000..0ac3a5f --- /dev/null +++ b/plugins-demo/tailwind4-demo/src/main.ts @@ -0,0 +1,6 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/plugins-demo/tailwind4-demo/tsconfig.app.json b/plugins-demo/tailwind4-demo/tsconfig.app.json new file mode 100644 index 0000000..93f952f --- /dev/null +++ b/plugins-demo/tailwind4-demo/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/plugins-demo/tailwind4-demo/tsconfig.json b/plugins-demo/tailwind4-demo/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/plugins-demo/tailwind4-demo/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/plugins-demo/tailwind4-demo/tsconfig.node.json b/plugins-demo/tailwind4-demo/tsconfig.node.json new file mode 100644 index 0000000..5a0c6a5 --- /dev/null +++ b/plugins-demo/tailwind4-demo/tsconfig.node.json @@ -0,0 +1,19 @@ +{ + "extends": "@tsconfig/node22/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "noEmit": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/plugins-demo/tailwind4-demo/vite.config.ts b/plugins-demo/tailwind4-demo/vite.config.ts new file mode 100644 index 0000000..37d7d01 --- /dev/null +++ b/plugins-demo/tailwind4-demo/vite.config.ts @@ -0,0 +1,15 @@ +import { fileURLToPath, URL } from 'node:url'; +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import vueDevTools from 'vite-plugin-vue-devtools'; +import tailwindcss from '@tailwindcss/vite'; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [tailwindcss(), vue(), vueDevTools()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, +}); diff --git a/plugins/tailwind/build.js b/plugins/tailwind/build.js deleted file mode 100644 index 20707e3..0000000 --- a/plugins/tailwind/build.js +++ /dev/null @@ -1,98 +0,0 @@ -/* eslint-disable */ -const fs = require('fs'); -const child_process = require('child_process'); - -// List of commands to run -const commands = []; - -// Parse command line -const compile = { - lib: true, - dist: true, - api: true, -}; -process.argv.slice(2).forEach((cmd) => { - if (cmd.slice(0, 2) !== '--') { - return; - } - const parts = cmd.slice(2).split('-'); - if (parts.length === 2) { - // Parse 2 part commands like --with-lib - const key = parts.pop(); - if (compile[key] === void 0) { - return; - } - switch (parts.shift()) { - case 'with': - // enable module - compile[key] = true; - break; - - case 'without': - // disable module - compile[key] = false; - break; - - case 'only': - // disable other modules - Object.keys(compile).forEach((key2) => { - compile[key2] = key2 === key; - }); - break; - } - } -}); - -// Check if required modules in same monorepo are available -const fileExists = (file) => { - try { - fs.statSync(file); - } catch (e) { - return false; - } - return true; -}; - -if (compile.dist && !fileExists('./lib/index.js')) { - compile.lib = true; -} - -if (compile.api && !fileExists('./lib/index.d.ts')) { - compile.lib = true; -} - -// Compile packages -Object.keys(compile).forEach((key) => { - if (compile[key]) { - commands.push({ - cmd: 'npm', - args: ['run', 'build:' + key], - }); - } -}); - -/** - * Run next command - */ -const next = () => { - const item = commands.shift(); - if (item === void 0) { - process.exit(0); - } - - if (item.cwd === void 0) { - item.cwd = __dirname; - } - - const result = child_process.spawnSync(item.cmd, item.args, { - cwd: item.cwd, - stdio: 'inherit', - }); - - if (result.status === 0) { - process.nextTick(next); - } else { - process.exit(result.status); - } -}; -next(); diff --git a/plugins/tailwind/eslint.config.mjs b/plugins/tailwind/eslint.config.js similarity index 100% rename from plugins/tailwind/eslint.config.mjs rename to plugins/tailwind/eslint.config.js diff --git a/plugins/tailwind/jest.config.js b/plugins/tailwind/jest.config.js deleted file mode 100644 index 422a485..0000000 --- a/plugins/tailwind/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ -module.exports = { - verbose: true, - preset: 'ts-jest', - testEnvironment: 'node', - testMatch: ['**/tests/*-test.ts'], -}; diff --git a/plugins/tailwind/package.json b/plugins/tailwind/package.json index d701b74..2bee8c9 100644 --- a/plugins/tailwind/package.json +++ b/plugins/tailwind/package.json @@ -1,8 +1,9 @@ { - "name": "@iconify/tailwind", + "name": "@iconify/tailwind4", "description": "Iconify plugin for Tailwind CSS", + "type": "module", "author": "Vjacheslav Trushkin (https://iconify.design)", - "version": "1.2.0", + "version": "1.0.0", "license": "MIT", "main": "./dist/plugin.js", "types": "./dist/plugin.d.ts", @@ -18,11 +19,11 @@ "clean": "rimraf lib dist tsconfig.tsbuildinfo", "lint": "eslint src/**/*.ts", "prebuild": "pnpm run lint && pnpm run clean", - "build": "node build", + "build": "npm run build:lib && npm run build:dist && npm run build:api", "build:api": "api-extractor run --local --verbose", "build:lib": "tsc -b", - "build:dist": "rollup -c rollup.config.mjs", - "test": "jest --runInBand" + "build:dist": "rollup -c rollup.config.js", + "test": "vitest --config vitest.config.js" }, "dependencies": { "@iconify/types": "workspace:^" @@ -42,11 +43,10 @@ "@typescript-eslint/eslint-plugin": "^8.17.0", "eslint": "^9.16.0", "globals": "^15.13.0", - "jest": "^29.7.0", "rimraf": "^6.0.1", "rollup": "^4.28.1", - "tailwindcss": "^3.4.16", - "ts-jest": "^29.2.5", - "typescript": "^5.7.2" + "tailwindcss": "4.0.0-beta.8", + "typescript": "^5.7.2", + "vitest": "^2.1.8" } } diff --git a/plugins/tailwind/rollup.config.mjs b/plugins/tailwind/rollup.config.js similarity index 100% rename from plugins/tailwind/rollup.config.mjs rename to plugins/tailwind/rollup.config.js diff --git a/plugins/tailwind/src/clean.ts b/plugins/tailwind/src/clean.ts deleted file mode 100644 index a007fd5..0000000 --- a/plugins/tailwind/src/clean.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { getIconsCSSData } from '@iconify/utils/lib/css/icons'; -import { loadIconSet } from './helpers/loader'; -import { getIconNames } from './helpers/names'; -import type { CleanIconifyPluginOptions } from './helpers/options'; - -/** - * Get CSS rules for icons list - */ -export function getCSSRulesForIcons( - icons: string[] | string, - options: CleanIconifyPluginOptions = {} -): Record> { - const rules = Object.create(null) as Record>; - - // Get all icons - const prefixes = getIconNames(icons); - - // Parse all icon sets - for (const prefix in prefixes) { - const iconSet = loadIconSet(options.iconSets?.[prefix] || prefix); - if (!iconSet) { - throw new Error( - `Cannot load icon set for "${prefix}". Install "@iconify-json/${prefix}" as dev dependency?` - ); - } - - const generated = getIconsCSSData( - iconSet, - Array.from(prefixes[prefix]), - { - ...options, - customise: (content, name) => - options.customise?.(content, name, prefix) ?? content, - } - ); - - const result = generated.common - ? [generated.common, ...generated.css] - : generated.css; - result.forEach((item) => { - const selector = - item.selector instanceof Array - ? item.selector.join(', ') - : item.selector; - rules[selector] = item.rules; - }); - } - - return rules; -} diff --git a/plugins/tailwind/src/dynamic.ts b/plugins/tailwind/src/dynamic.ts index edbf02d..b412f3e 100644 --- a/plugins/tailwind/src/dynamic.ts +++ b/plugins/tailwind/src/dynamic.ts @@ -1,7 +1,7 @@ import { getIconsCSSData } from '@iconify/utils/lib/css/icons'; import { matchIconName } from '@iconify/utils/lib/icon/name'; -import { loadIconSet } from './helpers/loader'; -import type { DynamicIconifyPluginOptions } from './helpers/options'; +import { loadIconSet } from './helpers/loader.js'; +import type { DynamicIconifyPluginOptions } from './helpers/options.js'; /** * Get dynamic CSS rules @@ -10,7 +10,7 @@ export function getDynamicCSSRules( icon: string, options: DynamicIconifyPluginOptions = {} ): Record { - const nameParts = icon.split(/--|\:/); + const nameParts = icon.split(/--|:/); if (nameParts.length !== 2) { throw new Error(`Invalid icon name: "${icon}"`); } diff --git a/plugins/tailwind/src/helpers/loader.ts b/plugins/tailwind/src/helpers/loader.ts index 66f6307..269f5d1 100644 --- a/plugins/tailwind/src/helpers/loader.ts +++ b/plugins/tailwind/src/helpers/loader.ts @@ -1,6 +1,6 @@ import { readFileSync } from 'node:fs'; import type { IconifyJSON } from '@iconify/types'; -import { IconifyIconSetSource } from './options'; +import type { IconifyIconSetSource } from './options.js'; import { matchIconName } from '@iconify/utils/lib/icon/name'; /** diff --git a/plugins/tailwind/src/helpers/names.ts b/plugins/tailwind/src/helpers/names.ts deleted file mode 100644 index 54d9e68..0000000 --- a/plugins/tailwind/src/helpers/names.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { matchIconName } from '@iconify/utils/lib/icon/name'; - -/** - * Get icon names from list - */ -export function getIconNames( - icons: string[] | string -): Record> | undefined { - const prefixes = Object.create(null) as Record>; - - // Add entry - const add = (prefix: string, name: string) => { - if ( - typeof prefix === 'string' && - prefix.match(matchIconName) && - typeof name === 'string' && - name.match(matchIconName) - ) { - (prefixes[prefix] || (prefixes[prefix] = new Set())).add(name); - } - }; - - // Comma or space separated string - let iconNames: string[] | undefined; - if (typeof icons === 'string') { - iconNames = icons.split(/[\s,.]/); - } else if (icons instanceof Array) { - iconNames = []; - // Split each array entry - icons.forEach((item) => { - item.split(/[\s,.]/).forEach((name) => iconNames.push(name)); - }); - } else { - return; - } - - // Parse array - if (iconNames?.length) { - iconNames.forEach((icon) => { - if (!icon.trim()) { - return; - } - - // Attempt prefix:name split - const nameParts = icon.split(':'); - if (nameParts.length === 2) { - add(nameParts[0], nameParts[1]); - return; - } - - // Attempt icon class: .icon--{prefix}--{name} - // with or without dot - const classParts = icon.split('--'); - if (classParts[0].match(/^\.?icon$/)) { - if (classParts.length === 3) { - add(classParts[1], classParts[2]); - return; - } - if (classParts.length === 2) { - // Partial match - return; - } - } - - // Throw error - throw new Error(`Cannot resolve icon: "${icon}"`); - }); - } else { - return; - } - - return prefixes; -} diff --git a/plugins/tailwind/src/helpers/options.ts b/plugins/tailwind/src/helpers/options.ts index 7933283..006ecdb 100644 --- a/plugins/tailwind/src/helpers/options.ts +++ b/plugins/tailwind/src/helpers/options.ts @@ -1,4 +1,3 @@ -import type { IconCSSIconSetOptions } from '@iconify/utils/lib/css/types'; import type { IconifyJSON } from '@iconify/types'; // Source for icon set: icon set, filename, or synchronous callback that loads icon set @@ -16,15 +15,6 @@ export interface CommonIconifyPluginOptions { customise?: (content: string, name: string, prefix: string) => string; } -/** - * Options for clean class names - */ -export interface CleanIconifyPluginOptions - extends CommonIconifyPluginOptions, - Omit { - // -} - /** * Options for dynamic class names */ @@ -39,72 +29,3 @@ export interface DynamicIconifyPluginOptions // Sets the default height/width value (ex. scale: 2 = 2em) scale?: number; } - -/** - * Options for main plugin - */ - -// Icons to include: array of names or callback -export type IconsListOption = string[] | ((name: string) => boolean); - -// Source filename or icon set -type IconSetSource = string | IconifyJSON; - -// Full icon set options -interface IconSetOptions { - // Prefix, required if `source` is not set - // If both `source` and `prefix` are set, `prefix` will be used - prefix?: string; - - // Source - source?: IconSetSource; - - // Icons to load - icons?: IconsListOption; - - // Customise callback. If set, it will be used instead of global customise callback - customise?: (content: string, name: string) => string; -} - -// Array of icon sets to load -type IconifyPluginListOptions = (string | IconSetOptions)[]; - -// Full object -export interface IconifyPluginOptionsObject { - // Selector for mask, defaults to ".iconify" - // If empty string, mask selector will not be generated - maskSelector?: string; - - // Extra rules to add to mask selector - extraMaskRules?: Record; - - // Selector for background, defaults to ".iconify-color" - // If empty string, background selector will not be generated - backgroundSelector?: string; - - // Extra rules to add to background selector - extraBackgroundRules?: Record; - - // Selector for icons, default is `.{prefix}--{name}` - iconSelector?: string; - - // Variable name that contains icon, defaults to "svg" - varName?: string; - - // Scale for icons, defaults to 1 - scale?: number; - - // Make icons square, defaults to true - square?: boolean; - - // Prefixes to load - prefixes?: IconifyPluginListOptions; - - // Customise callback - customise?: (content: string, name: string, prefix: string) => string; -} - -// Full options -export type IconifyPluginOptions = - | IconifyPluginOptionsObject - | IconifyPluginListOptions; diff --git a/plugins/tailwind/src/plugin.ts b/plugins/tailwind/src/plugin.ts index 04fc77b..0eca6f9 100644 --- a/plugins/tailwind/src/plugin.ts +++ b/plugins/tailwind/src/plugin.ts @@ -1,80 +1,29 @@ +/* eslint-disable @typescript-eslint/unbound-method */ import plugin from 'tailwindcss/plugin'; -import { getCSSRulesForIcons } from './clean'; -import { getDynamicCSSRules } from './dynamic'; -import type { - CleanIconifyPluginOptions, - DynamicIconifyPluginOptions, - IconifyPluginOptions, -} from './helpers/options'; -import { - cleanupIconifyPluginOptions, - getCSSComponentsForPlugin, - getCSSRulesForPlugin, -} from './preparsed'; +import { getDynamicCSSRules } from './dynamic.js'; /** * Generate styles for dynamic selector * * Usage in HTML: */ -export function addDynamicIconSelectors(options?: DynamicIconifyPluginOptions) { - const prefix = options?.prefix || 'icon'; +function addDynamicIconSelectors(): ReturnType { + const prefix = 'icon'; return plugin(({ matchComponents }) => { matchComponents({ [prefix]: (icon: string) => { try { - return getDynamicCSSRules(icon, options); + return getDynamicCSSRules(icon); } catch (err) { // Log error, but do not throw it console.error((err as Error).message); + return {}; } }, }); }); } -/** - * Generate rules for mask, background and selected icon sets - * - * Icons should combine either mask or background selector and icon selector - * - * This plugin generates only square icons. Icons that are not square will be resized to fit square. - * - * Usage in HTML: - */ -export function addIconSelectors(options: IconifyPluginOptions) { - const fullOptions = cleanupIconifyPluginOptions(options); - - return plugin(({ addComponents, addUtilities }) => { - addComponents(getCSSComponentsForPlugin(fullOptions)); - addUtilities(getCSSRulesForPlugin(fullOptions)); - }); -} - -/** - * Generate styles for preset list of icons - * - * Requires knowing full list of icons - * - * Usage in HTML: - * - * @deprecated Use addIconSelectors instead - */ -export function addCleanIconSelectors( - icons: string[] | string, - options?: CleanIconifyPluginOptions -) { - const rules = getCSSRulesForIcons(icons, options); - return plugin(({ addUtilities }) => { - addUtilities(rules); - }); -} - -/** - * Export types - */ -export type { - CleanIconifyPluginOptions, - DynamicIconifyPluginOptions, - IconifyPluginOptions, -}; +// Export generated plugin. No TypeScript support yet, so export as unknown +const exportedPlugin = addDynamicIconSelectors() as unknown; +export default exportedPlugin; diff --git a/plugins/tailwind/src/preparsed.ts b/plugins/tailwind/src/preparsed.ts deleted file mode 100644 index e4c9e01..0000000 --- a/plugins/tailwind/src/preparsed.ts +++ /dev/null @@ -1,193 +0,0 @@ -import type { IconifyJSON } from '@iconify/types'; -import { - generateItemCSSRules, - getCommonCSSRules, -} from '@iconify/utils/lib/css/common'; -import { defaultIconProps } from '@iconify/utils/lib/icon/defaults'; -import { parseIconSet } from '@iconify/utils/lib/icon-set/parse'; -import { calculateSize } from '@iconify/utils/lib/svg/size'; -import type { - IconifyPluginOptions, - IconifyPluginOptionsObject, - IconsListOption, -} from './helpers/options'; -import { loadIconSet } from './helpers/loader'; - -/** - * Convert plugin options to object - */ -export function cleanupIconifyPluginOptions( - options: IconifyPluginOptions -): IconifyPluginOptionsObject { - return Array.isArray(options) - ? { - prefixes: options, - } - : options; -} - -/** - * Get CSS rules for main plugin (components) - */ -export function getCSSComponentsForPlugin(options: IconifyPluginOptionsObject) { - const rules = Object.create(null) as Record>; - - // Variable name, default to 'svg' (cannot be empty string) - const varName = options.varName || 'svg'; - - // Scale icons - const scale = options.scale ?? 1; - const adjustScale = (obj: Record) => { - if (!scale) { - // Delete width and height - delete obj['width']; - delete obj['height']; - } else if (scale !== 1) { - // Set custom width and height - obj['width'] = scale + 'em'; - obj['height'] = scale + 'em'; - } - return obj; - }; - - // Add common rules - const maskSelector = options.maskSelector ?? '.iconify'; - const backgroundSelector = options.backgroundSelector ?? '.iconify-color'; - if (maskSelector) { - rules[maskSelector] = Object.assign( - adjustScale( - getCommonCSSRules({ - mode: 'mask', - varName, - }) - ), - options.extraMaskRules || {} - ); - } - if (backgroundSelector) { - rules[backgroundSelector] = Object.assign( - adjustScale( - getCommonCSSRules({ - mode: 'background', - varName, - }) - ), - options.extraBackgroundRules || {} - ); - } - - return rules; -} - -/** - * Get CSS rules for main plugin (utilities) - */ -export function getCSSRulesForPlugin(options: IconifyPluginOptionsObject) { - const rules = Object.create(null) as Record>; - - // Variable name, default to 'svg' (cannot be empty string) - const varName = options.varName || 'svg'; - - // Add icon sets - const iconSelector = options.iconSelector || '.{prefix}--{name}'; - - // Make icons square - const square = options.square !== false; - - // Scale - const scale = options.scale ?? 1; - - options.prefixes?.forEach((item) => { - let prefix: string; - let iconSet: IconifyJSON | undefined; - let iconsList: IconsListOption | undefined; - let customise: ((content: string, name: string) => string) | undefined; - - // Load icon set - if (typeof item === 'string') { - // Prefix - prefix = item; - iconSet = loadIconSet(prefix); - } else if (item.source) { - // Source, possibly with prefix - iconSet = loadIconSet(item.source); - prefix = item.prefix || iconSet?.prefix; - iconsList = item.icons; - customise = item.customise; - if (!prefix) { - throw new Error( - 'Custom icon set does not have a prefix. Please set "prefix" property' - ); - } - } else { - // Prefix - prefix = item.prefix || iconSet?.prefix; - iconSet = prefix ? loadIconSet(prefix) : undefined; - iconsList = item.icons; - customise = item.customise; - } - - // Validate it - if (!iconSet) { - throw new Error( - `Cannot load icon set for "${prefix}". Install "@iconify-json/${prefix}" as dev dependency?` - ); - } - if (!prefix) { - throw new Error( - 'Bad icon set entry, must have either "prefix" or "source" set' - ); - } - - // Load icons - parseIconSet(iconSet, (name, data) => { - // Check if icon should be rendered - if (iconsList) { - if (Array.isArray(iconsList)) { - if (!iconsList.includes(name)) { - return; - } - } else if (!iconsList(name)) { - return; - } - } - - // Customise icon - const body = customise - ? customise(data.body, name) - : options.customise - ? options.customise(data.body, name, prefix) - : data.body; - - // Generate CSS - const iconRules = generateItemCSSRules( - { - ...defaultIconProps, - ...data, - body, - }, - { - mode: 'mask', // not used because varName is set, but required - varName, - forceSquare: square, - } - ); - - // Generate selector - const selector = iconSelector - .replace('{prefix}', prefix) - .replace('{name}', name); - - // Scale non-square icons - if (!square && scale > 0 && scale !== 1 && iconRules.width) { - iconRules.width = calculateSize(iconRules.width, scale); - } - - // Add to rules - rules[selector] = iconRules; - }); - }); - - // Return - return rules; -} diff --git a/plugins/tailwind/tests/clean-css-test.ts b/plugins/tailwind/tests/clean-css-test.ts deleted file mode 100644 index bc715cd..0000000 --- a/plugins/tailwind/tests/clean-css-test.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { getCSSRulesForIcons } from '../src/clean'; - -describe('Testing clean CSS rules', () => { - it('One icon', () => { - const data = getCSSRulesForIcons('mdi-light:home'); - expect(Object.keys(data)).toEqual([ - '.icon--mdi-light', - '.icon--mdi-light--home', - ]); - expect(Object.keys(data['.icon--mdi-light--home'])).toEqual(['--svg']); - }); - - it('Multiple icons from same icon set', () => { - const data = getCSSRulesForIcons([ - // By name - 'mdi-light:home', - // By selector - '.icon--mdi-light--arrow-left', - '.icon--mdi-light.icon--mdi-light--arrow-down', - // By class name - 'icon--mdi-light--file', - 'icon--mdi-light icon--mdi-light--format-clear', - ]); - expect(Object.keys(data)).toEqual([ - '.icon--mdi-light', - '.icon--mdi-light--home', - '.icon--mdi-light--arrow-left', - '.icon--mdi-light--arrow-down', - '.icon--mdi-light--file', - '.icon--mdi-light--format-clear', - ]); - }); - - it('Multiple icon sets', () => { - const data = getCSSRulesForIcons([ - // MDI Light - 'mdi-light:home', - // Line MD - 'line-md:home', - ]); - expect(Object.keys(data)).toEqual([ - '.icon--mdi-light', - '.icon--mdi-light--home', - '.icon--line-md', - '.icon--line-md--home', - ]); - }); - - it('Bad class name', () => { - let threw = false; - try { - getCSSRulesForIcons(['icon--mdi-light--home test']); - } catch { - threw = true; - } - expect(threw).toBe(true); - }); - - it('Bad icon set', () => { - let threw = false; - try { - getCSSRulesForIcons('test123:home'); - } catch { - threw = true; - } - expect(threw).toBe(true); - }); -}); diff --git a/plugins/tailwind/tests/dynamic-css-test.ts b/plugins/tailwind/tests/dynamic-css-test.ts index d8d8d17..8bd3c3a 100644 --- a/plugins/tailwind/tests/dynamic-css-test.ts +++ b/plugins/tailwind/tests/dynamic-css-test.ts @@ -1,4 +1,4 @@ -import { getDynamicCSSRules } from '../src/dynamic'; +import { getDynamicCSSRules } from '../lib/dynamic.js'; describe('Testing dynamic CSS rules', () => { it('One icon', () => { diff --git a/plugins/tailwind/tests/tsconfig.json b/plugins/tailwind/tests/tsconfig.json index 4689462..04e88bc 100644 --- a/plugins/tailwind/tests/tsconfig.json +++ b/plugins/tailwind/tests/tsconfig.json @@ -3,6 +3,8 @@ "compilerOptions": { "types": ["node", "jest"], "rootDir": ".", - "outDir": "../tests-compiled" + "outDir": "../tests-compiled", + "module": "ESNext", + "moduleResolution": "bundler" } } diff --git a/plugins/tailwind/tsconfig-base.json b/plugins/tailwind/tsconfig-base.json index 9cd451b..80574ca 100644 --- a/plugins/tailwind/tsconfig-base.json +++ b/plugins/tailwind/tsconfig-base.json @@ -7,7 +7,6 @@ "sourceMap": false, "composite": true, "strict": false, - "moduleResolution": "node", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true diff --git a/plugins/tailwind/tsconfig.json b/plugins/tailwind/tsconfig.json index dde8149..ea21e56 100644 --- a/plugins/tailwind/tsconfig.json +++ b/plugins/tailwind/tsconfig.json @@ -4,6 +4,8 @@ "compilerOptions": { "rootDir": "./src", "outDir": "./lib", + "module": "NodeNext", + "moduleResolution": "nodenext", "lib": ["ESNext", "DOM"] } } diff --git a/plugins/tailwind/vitest.config.js b/plugins/tailwind/vitest.config.js new file mode 100644 index 0000000..6bd8e7f --- /dev/null +++ b/plugins/tailwind/vitest.config.js @@ -0,0 +1,9 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + watch: false, + include: ['**/tests/*-test.ts'], + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96a04fc..46e1aa6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,13 +252,13 @@ importers: version: 12.1.1(rollup@4.28.1)(tslib@2.8.1)(typescript@5.7.2) '@sveltejs/vite-plugin-svelte': specifier: ^4.0.2 - version: 4.0.2(svelte@5.8.1)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)) + version: 4.0.2(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.6.3 '@testing-library/svelte': specifier: ^5.2.6 - version: 5.2.6(svelte@5.8.1)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7))(vitest@2.1.8(@types/node@22.10.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7)) + version: 5.2.6(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vitest@2.1.8(@types/node@22.10.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.4 @@ -313,7 +313,7 @@ importers: version: 29.5.14 '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7))(vue@3.5.13(typescript@5.7.2)) + version: 5.2.1(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.7.2)) '@vue/test-utils': specifier: ^2.4.6 version: 2.4.6 @@ -605,7 +605,7 @@ importers: version: 18.3.1 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)) + version: 4.3.4(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.10.1) @@ -812,7 +812,11 @@ importers: specifier: ^2.1.8 version: 2.1.8(@types/node@18.19.67)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7) - plugins-demo/tailwind-demo: + plugins-demo/tailwind4-demo: + dependencies: + vue: + specifier: ^3.5.13 + version: 3.5.13(typescript@5.6.3) devDependencies: '@iconify-json/fa6-regular': specifier: ^1.2.2 @@ -821,17 +825,44 @@ importers: specifier: ^1.2.1 version: 1.2.1 '@iconify-json/vscode-icons': - specifier: ^1.2.3 - version: 1.2.3 - '@iconify/tailwind': + specifier: ^1.2.6 + version: 1.2.6 + '@iconify/tailwind4': specifier: workspace:* version: link:../../plugins/tailwind - '@iconify/tools': - specifier: 3.0.0-beta.3 - version: 3.0.0-beta.3 + '@tailwindcss/vite': + specifier: 4.0.0-beta.8 + version: 4.0.0-beta.8(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + '@tsconfig/node22': + specifier: ^22.0.0 + version: 22.0.0 + '@types/node': + specifier: ^22.9.3 + version: 22.10.1 + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.1(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.6.3)) + '@vue/tsconfig': + specifier: ^0.7.0 + version: 0.7.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3)) + npm-run-all2: + specifier: ^7.0.1 + version: 7.0.2 tailwindcss: - specifier: ^3.4.16 - version: 3.4.16 + specifier: 4.0.0-beta.8 + version: 4.0.0-beta.8 + typescript: + specifier: ~5.6.3 + version: 5.6.3 + vite: + specifier: ^6.0.1 + version: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vite-plugin-vue-devtools: + specifier: ^7.6.5 + version: 7.6.8(rollup@4.28.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.6.3)) + vue-tsc: + specifier: ^2.1.10 + version: 2.1.10(typescript@5.6.3) plugins/tailwind: dependencies: @@ -881,9 +912,6 @@ importers: globals: specifier: ^15.13.0 version: 15.13.0 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.10.1) rimraf: specifier: ^6.0.1 version: 6.0.1 @@ -891,14 +919,14 @@ importers: specifier: ^4.28.1 version: 4.28.1 tailwindcss: - specifier: ^3.4.16 - version: 3.4.16 - ts-jest: - specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.10.1))(typescript@5.7.2) + specifier: 4.0.0-beta.8 + version: 4.0.0-beta.8 typescript: specifier: ^5.7.2 version: 5.7.2 + vitest: + specifier: ^2.1.8 + version: 2.1.8(@types/node@22.10.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7) packages: @@ -909,17 +937,10 @@ packages: '@adobe/css-tools@4.4.0': resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/install-pkg@0.1.1': - resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} - '@antfu/install-pkg@0.4.1': resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} @@ -2044,18 +2065,12 @@ packages: '@iconify-json/mdi-light@1.2.1': resolution: {integrity: sha512-kTs9efbpF5GDcevR9PWCDJQrV1Vfr6RS8KJyGIPM6zxd8AGGAtNCxyACrJ+zeq6K99ZmcTIPr8tlymmPFAxwnw==} - '@iconify-json/vscode-icons@1.2.3': - resolution: {integrity: sha512-0mhgdamMkdO2up0DbiJSjTXkfnyPJTYYzvh4POSVvcYNl1A48PIUWkhYmxKGSCk/xn3czAOJaGjjMeXrM/HjEQ==} - - '@iconify/tools@3.0.0-beta.3': - resolution: {integrity: sha512-DTPZ4/qgWlScbUzU3WtVSBv5e87abRiuAlu8GnrsmawR34/Bk12bgC1yZFittJvLeRGgmJLuw7yiyPLsdyX4lw==} + '@iconify-json/vscode-icons@1.2.6': + resolution: {integrity: sha512-uYlPqhIs2IyPL9J7KnX8tvWp9eU1jiv8DLzoLICzuG3UKYj921VmvnA1bicAAD24QYIjS/YSgavMwFFLrF2mKg==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.1.22': - resolution: {integrity: sha512-6UHVzTVXmvO8uS6xFF+L/QTSpTzA/JZxtgU+KYGFyDYMEObZ1bu/b5l+zNJjHy+0leWjHI+C0pXlzGvv3oXZMA==} - '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2727,6 +2742,9 @@ packages: '@rushstack/ts-command-line@4.23.1': resolution: {integrity: sha512-40jTmYoiu/xlIpkkRsVfENtBq4CW3R4azbL0Vmda+fMwHWqss6wwf/Cy/UJmMqIzpfYc2OTnjYP1ZLD3CmyeCA==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -2734,6 +2752,10 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@sinonjs/commons@2.0.0': resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} @@ -2775,6 +2797,84 @@ packages: '@swc/helpers@0.5.13': resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + '@tailwindcss/node@4.0.0-beta.8': + resolution: {integrity: sha512-ZbicJgFxo83IIH5eBm7CU3K1olsfud7/zg3+yG7P6+fZiufhh8FllM5QOJVxUEJ5zeB1V94Y+hTq5UOfu8ZloA==} + + '@tailwindcss/oxide-android-arm64@4.0.0-beta.8': + resolution: {integrity: sha512-YY4g6INIl8VfDMig12pleAVRf1JPvYCNgIXfcvm9g9lxIGq2zkGPsp81BpMSTS+pGJmTGhOZq8ab/TOprtNkAQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.0.0-beta.8': + resolution: {integrity: sha512-XUCjDaecPOt+mL7EngO6Yhj/ybNgxg9wi2oFuBECz3fj/VV9WQ8MwMDIdjEwrIm43BtwTvEugLIRO9I4KBbuuA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.0.0-beta.8': + resolution: {integrity: sha512-iMBDpcRBJPt30iohlqJ+slpV+YoR7vL609Zsvzl432lEt6UWEwtKpvPXNuMUEVi7jjLLyyQ/tgM62alVzG1Hug==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.0.0-beta.8': + resolution: {integrity: sha512-iZY+svFyJHllFSaBOfASzOaSU6TLEx8sX+pZwpDExsDHG61o1xh69QJRAL4TJVW288y9kfNsrvcv4yRyn5fwfw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-beta.8': + resolution: {integrity: sha512-IqEJggh5x+WgJYz2pG5r5+sOTU1D7Tb/92bQdQGYU618b9hgLhigLIBlbLEuZIC89aTK+aDYvgeqTbKX8X2iuA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-beta.8': + resolution: {integrity: sha512-WieWtmho/wdI3gowTyJWtvqn921BtVDwzaKKFjPACZmX4a7UM0T4t4xDINc8M84lSzCzFBpk2wVykSIyqCXJZA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.0.0-beta.8': + resolution: {integrity: sha512-P+apWSDGGgCGbTHfyNxUe4+n3lIH6kV+7Y4QGCkBUx5o3L2RzZ2I2/kQNA5z60Moac0tUqX9mKF8AyCmGpBFCg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.0-beta.8': + resolution: {integrity: sha512-6Xj+lHcW0WrsrtRtiHbBFFoJYfHDhscNKumYFyv6THFP9AMwrB/9jp3xPfx9q7Pp3OJf3l0VP8KhdI5MPEMBpw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.0-beta.8': + resolution: {integrity: sha512-RWeMlHrcS0Rj3tFhbwxkhnsLmsw8E6g0nHjDawNY0lTYi6PP5RZF7ghgzUbzMkjw6QcBJthycpXYXUCKPIZlpA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.0-beta.8': + resolution: {integrity: sha512-+FQFS2XjsHGlh+U/paIcUULLfkSmcBp9QzXkTu8UsEH6Ygp7L8RmMZshAr5dQDjXFKBvKHKJX4oIg/SP+VThgA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.0-beta.8': + resolution: {integrity: sha512-5cuAwlDMlnUgzGdZjr+U3ILGbRh9JGmlALgSKo/92qm02NAjNjSSQ4vvh/hMv+mRk5RQDE5lXwDK5/+fGejOBg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.0.0-beta.8': + resolution: {integrity: sha512-fpZkAwKDFuRNbxQZrXViij2D38R6qqgAnctBR9NPyHxZqYDjn3uyk75alrDnSGj4wUCTAhOCEX4HCI9xCgKGdA==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.0.0-beta.8': + resolution: {integrity: sha512-ZNlj0fdeH4/uWXafrXklZY+TgmN7wOHWHHBL4i3xzD4BflcCDZJkgJER/8baJCpagMzwWDnA6CyXDX+2q7lMRQ==} + peerDependencies: + vite: ^5.2.0 || ^6 + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -2815,6 +2915,9 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@tsconfig/node22@22.0.0': + resolution: {integrity: sha512-twLQ77zevtxobBOD4ToAtVmuYrpeYUh3qh+TEp+08IWhpsrIflVHqQ1F1CiPxQGL7doCdBIOOCF+1Tm833faNg==} + '@tsconfig/svelte@5.0.4': resolution: {integrity: sha512-BV9NplVgLmSi4mwKzD8BD/NQ8erOY/nUE/GpgWe2ckx+wIQF5RyRirn/QsSSCPeulVpc3RA/iJt6DpfTIZps0Q==} @@ -2836,9 +2939,6 @@ packages: '@types/babel__traverse@7.18.1': resolution: {integrity: sha512-FSdLaZh2UxaMuLp9lixWaHq/golWTRWOnRsAXzDTDSDOQLuZb1nsdCt6pJSPWSEQt2eFZ2YVk3oYhn+1kLMeMA==} - '@types/cheerio@0.22.31': - resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} - '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -2903,9 +3003,6 @@ packages: '@types/stack-utils@2.0.1': resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - '@types/tar@6.1.4': - resolution: {integrity: sha512-Cp4oxpfIzWt7mr2pbhHT2OTXGMAL0szYCzuf8lRWyIMCgsx6/Hfc3ubztuhvzXHXgraTQxyOCmmg7TDGIMIJJQ==} - '@types/tough-cookie@4.0.2': resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} @@ -2915,9 +3012,6 @@ packages: '@types/yargs@17.0.12': resolution: {integrity: sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==} - '@types/yauzl@2.10.0': - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} - '@typescript-eslint/eslint-plugin@8.17.0': resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3108,12 +3202,23 @@ packages: peerDependencies: vue: ^3.0.0 + '@vue/devtools-core@7.6.8': + resolution: {integrity: sha512-8X4roysTwzQ94o7IobjVcOd1aZF5iunikrMrHPI2uUdigZCi2kFTQc7ffYiFiTNaLElCpjOhCnM7bo7aK1yU7A==} + peerDependencies: + vue: ^3.0.0 + '@vue/devtools-kit@7.4.4': resolution: {integrity: sha512-awK/4NfsUG0nQ7qnTM37m7ZkEUMREyPh8taFCX+uQYps/MTFEum0AD05VeGDRMXwWvMmGIcWX9xp8ZiBddY0jw==} + '@vue/devtools-kit@7.6.8': + resolution: {integrity: sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==} + '@vue/devtools-shared@7.6.2': resolution: {integrity: sha512-lcjyJ7hCC0W0kNwnCGMLVTMvDLoZgjcq9BvboPgS+6jQyDul7fpzRSKTGtGhCHoxrDox7qBAKGbAl2Rcf7GE1A==} + '@vue/devtools-shared@7.6.8': + resolution: {integrity: sha512-9MBPO5Z3X1nYGFqTJyohl6Gmf/J7UNN1oicHdyzBVZP4jnhZ4c20MgtaHDIzWmHDHCMYVS5bwKxT3jxh7gOOKA==} + '@vue/language-core@2.1.10': resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} peerDependencies: @@ -3142,6 +3247,17 @@ packages: '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} + '@vue/tsconfig@0.7.0': + resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true + abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -3237,6 +3353,10 @@ packages: resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} engines: {node: '>=12'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -3260,9 +3380,6 @@ packages: engines: {node: '>=10'} deprecated: This package is no longer supported. - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -3377,6 +3494,9 @@ packages: birpc@0.2.17: resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -3402,9 +3522,6 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -3445,10 +3562,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -3490,13 +3603,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -3866,9 +3972,6 @@ packages: devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3881,9 +3984,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dom-accessibility-api@0.5.14: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} @@ -3954,13 +4054,14 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -4114,6 +4215,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + execa@9.5.2: + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} + engines: {node: ^18.19.0 || >=20.5.0} + exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -4129,11 +4234,6 @@ packages: externality@1.0.2: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4162,9 +4262,6 @@ packages: fb-watchman@2.0.1: resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.2: resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} peerDependencies: @@ -4173,6 +4270,10 @@ packages: picomatch: optional: true + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -4260,10 +4361,6 @@ packages: get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -4272,6 +4369,10 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true @@ -4391,9 +4492,6 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -4429,6 +4527,10 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -4559,6 +4661,10 @@ packages: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -4579,6 +4685,14 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-what@4.1.8: resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} engines: {node: '>=12.13'} @@ -4601,6 +4715,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} @@ -4829,6 +4947,10 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4964,10 +5086,6 @@ packages: resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - local-pkg@0.5.1: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} @@ -5061,6 +5179,10 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + merge-anything@5.1.7: resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} engines: {node: '>=12.13'} @@ -5137,10 +5259,6 @@ packages: resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} engines: {node: '>=8'} - minipass@4.2.5: - resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} - engines: {node: '>=8'} - minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -5209,6 +5327,11 @@ packages: engines: {node: ^18 || >=20} hasBin: true + nanoid@5.0.9: + resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} + engines: {node: ^18 || >=20} + hasBin: true + nanotar@0.1.1: resolution: {integrity: sha512-AiJsGsSF3O0havL1BydvI4+wR76sKT+okKRwWIaK96cZUnXqH0uNBOsHlbwZq3+m2BR1VKqHDVudl3gO4mYjpQ==} @@ -5294,6 +5417,15 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-run-all2@7.0.2: + resolution: {integrity: sha512-7tXR+r9hzRNOPNTvXegM+QzCuMjzUIIq66VDunL6j60O4RrExx32XUhlrS7UK4VcdGw5/Wxzb3kfNcFix9JKDA==} + engines: {node: ^18.17.0 || >=20.5.0, npm: '>= 9'} + hasBin: true + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -5302,6 +5434,10 @@ packages: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -5339,10 +5475,6 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -5424,15 +5556,16 @@ packages: resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} engines: {node: '>=18'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -5485,9 +5618,6 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -5502,9 +5632,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} @@ -5563,30 +5694,6 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -5771,6 +5878,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -5788,9 +5899,6 @@ packages: protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -5846,8 +5954,9 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + read-package-json-fast@4.0.0: + resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} + engines: {node: ^18.17.0 || >=20.5.0} readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} @@ -6226,6 +6335,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -6349,10 +6462,8 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} - tailwindcss@3.4.16: - resolution: {integrity: sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@4.0.0-beta.8: + resolution: {integrity: sha512-21HmdRq9tHDLJZavb2cRBGJxBvRODpwb0/t3tRbMOl65hJE6zG6K6lD6lLS3IOC35u4SOjKjdZiJJi9AuWCf+Q==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -6525,6 +6636,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} @@ -6583,6 +6699,10 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unimport@3.14.4: resolution: {integrity: sha512-90jQsiS2D0vIrWg4U58do7B5Hr4q0qt9o/rS0TrDMzrvNuAQ7XF1sQ47Pe2zjVlvFWNkoPBb/2l2GJFy5XjqDg==} @@ -6694,6 +6814,11 @@ packages: peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 + vite-hot-client@0.2.4: + resolution: {integrity: sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + vite-node@2.1.8: resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6743,6 +6868,16 @@ packages: '@nuxt/kit': optional: true + vite-plugin-inspect@0.8.9: + resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + vite-plugin-solid@2.11.0: resolution: {integrity: sha512-G+NiwDj4EAeUE0wt3Ur9f+Lt9oMUuLd0FIxYuqwJSqRacKQRteCwUFzNy8zMEt88xWokngQhiFjfJMhjc1fDXw==} peerDependencies: @@ -6753,11 +6888,22 @@ packages: '@testing-library/jest-dom': optional: true + vite-plugin-vue-devtools@7.6.8: + resolution: {integrity: sha512-32aIps8C1Y7UEoqyWf+ES3J1OozsCYMIqTqd+I5qass+R0Tcf8SaA2bX1/rskAzkcKCteVoBjEENmqwTcMebbw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 + vite-plugin-vue-inspector@5.1.3: resolution: {integrity: sha512-pMrseXIDP1Gb38mOevY+BvtNGNqiqmqa2pKB99lnLsADQww9w9xMbAfT4GB6RUoaOkSPrtlXqpq2Fq+Dj2AgFg==} peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + vite-plugin-vue-inspector@5.3.1: + resolution: {integrity: sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 + vite@5.4.11: resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6789,6 +6935,46 @@ packages: terser: optional: true + vite@6.0.4: + resolution: {integrity: sha512-zwlH6ar+6o6b4Wp+ydhtIKLrGM/LoqZzcdVmkGAFun0KHTzIzjh+h0kungEx7KJg/PYnC80I4TII9WkjciSR6Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitefu@1.0.4: resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==} peerDependencies: @@ -6922,6 +7108,11 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -6990,13 +7181,14 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} @@ -7013,18 +7205,11 @@ snapshots: '@adobe/css-tools@4.4.0': {} - '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/install-pkg@0.1.1': - dependencies: - execa: 5.1.1 - find-up: 5.0.0 - '@antfu/install-pkg@0.4.1': dependencies: package-manager-detector: 0.2.2 @@ -8113,39 +8298,12 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.3': + '@iconify-json/vscode-icons@1.2.6': dependencies: '@iconify/types': 2.0.0 - '@iconify/tools@3.0.0-beta.3': - dependencies: - '@iconify/types': 2.0.0 - '@iconify/utils': 2.1.22 - '@types/cheerio': 0.22.31 - '@types/tar': 6.1.4 - cheerio: 1.0.0-rc.12 - extract-zip: 2.0.1 - local-pkg: 0.4.3 - pathe: 1.1.2 - svgo: 3.3.2 - tar: 6.2.0 - transitivePeerDependencies: - - supports-color - '@iconify/types@2.0.0': {} - '@iconify/utils@2.1.22': - dependencies: - '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.10 - '@iconify/types': 2.0.0 - debug: 4.4.0(supports-color@9.4.0) - kolorist: 1.8.0 - local-pkg: 0.5.1 - mlly: 1.7.3 - transitivePeerDependencies: - - supports-color - '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 @@ -9047,10 +9205,14 @@ snapshots: transitivePeerDependencies: - '@types/node' + '@sec-ant/readable-stream@0.4.1': {} + '@sinclair/typebox@0.27.8': {} '@sindresorhus/merge-streams@2.3.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@sinonjs/commons@2.0.0': dependencies: type-detect: 4.0.8 @@ -9091,6 +9253,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.2(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)))(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))': + dependencies: + '@sveltejs/vite-plugin-svelte': 4.0.2(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + debug: 4.4.0(supports-color@9.4.0) + svelte: 5.8.1 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + transitivePeerDependencies: + - supports-color + '@sveltejs/vite-plugin-svelte@4.0.2(svelte@5.8.1)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.2(svelte@5.8.1)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)))(svelte@5.8.1)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)) @@ -9104,12 +9275,86 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte@4.0.2(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.2(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)))(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + debug: 4.4.0(supports-color@9.4.0) + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.14 + svelte: 5.8.1 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vitefu: 1.0.4(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + transitivePeerDependencies: + - supports-color + '@swc/counter@0.1.3': {} '@swc/helpers@0.5.13': dependencies: tslib: 2.8.1 + '@tailwindcss/node@4.0.0-beta.8': + dependencies: + enhanced-resolve: 5.17.1 + jiti: 2.4.0 + tailwindcss: 4.0.0-beta.8 + + '@tailwindcss/oxide-android-arm64@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.0.0-beta.8': + optional: true + + '@tailwindcss/oxide@4.0.0-beta.8': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.0-beta.8 + '@tailwindcss/oxide-darwin-arm64': 4.0.0-beta.8 + '@tailwindcss/oxide-darwin-x64': 4.0.0-beta.8 + '@tailwindcss/oxide-freebsd-x64': 4.0.0-beta.8 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.0-beta.8 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.0-beta.8 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.0-beta.8 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.0-beta.8 + '@tailwindcss/oxide-linux-x64-musl': 4.0.0-beta.8 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.0-beta.8 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.0-beta.8 + + '@tailwindcss/vite@4.0.0-beta.8(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))': + dependencies: + '@tailwindcss/node': 4.0.0-beta.8 + '@tailwindcss/oxide': 4.0.0-beta.8 + lightningcss: 1.27.0 + tailwindcss: 4.0.0-beta.8 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 @@ -9141,16 +9386,18 @@ snapshots: '@types/react': 18.3.14 '@types/react-dom': 18.3.2 - '@testing-library/svelte@5.2.6(svelte@5.8.1)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7))(vitest@2.1.8(@types/node@22.10.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7))': + '@testing-library/svelte@5.2.6(svelte@5.8.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vitest@2.1.8(@types/node@22.10.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7))': dependencies: '@testing-library/dom': 10.4.0 svelte: 5.8.1 optionalDependencies: - vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7) + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) vitest: 2.1.8(@types/node@22.10.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7) '@trysound/sax@0.2.0': {} + '@tsconfig/node22@22.0.0': {} + '@tsconfig/svelte@5.0.4': {} '@types/argparse@1.0.38': {} @@ -9178,10 +9425,6 @@ snapshots: dependencies: '@babel/types': 7.26.0 - '@types/cheerio@0.22.31': - dependencies: - '@types/node': 22.10.1 - '@types/cookie@0.6.0': {} '@types/cookie@1.0.0': @@ -9254,11 +9497,6 @@ snapshots: '@types/stack-utils@2.0.1': {} - '@types/tar@6.1.4': - dependencies: - '@types/node': 22.10.1 - minipass: 4.2.5 - '@types/tough-cookie@4.0.2': {} '@types/yargs-parser@21.0.0': {} @@ -9267,11 +9505,6 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.0 - '@types/yauzl@2.10.0': - dependencies: - '@types/node': 22.10.1 - optional: true - '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.7.2))(eslint@9.16.0(jiti@2.4.0))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -9412,6 +9645,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@4.3.4(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-vue-jsx@4.1.1(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7))(vue@3.5.13(typescript@5.7.2))': dependencies: '@babel/core': 7.26.0 @@ -9427,6 +9671,16 @@ snapshots: vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7) vue: 3.5.13(typescript@5.7.2) + '@vitejs/plugin-vue@5.2.1(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.6.3))': + dependencies: + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vue: 3.5.13(typescript@5.6.3) + + '@vitejs/plugin-vue@5.2.1(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.7.2))': + dependencies: + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vue: 3.5.13(typescript@5.7.2) + '@vitest/expect@2.1.8': dependencies: '@vitest/spy': 2.1.8 @@ -9478,17 +9732,14 @@ snapshots: '@volar/language-core@2.4.8': dependencies: '@volar/source-map': 2.4.8 - optional: true - '@volar/source-map@2.4.8': - optional: true + '@volar/source-map@2.4.8': {} '@volar/typescript@2.4.8': dependencies: '@volar/language-core': 2.4.8 path-browserify: 1.0.1 vscode-uri: 3.0.8 - optional: true '@vue-macros/common@1.15.0(rollup@4.28.1)(vue@3.5.13(typescript@5.7.2))': dependencies: @@ -9567,7 +9818,6 @@ snapshots: dependencies: de-indent: 1.0.2 he: 1.2.0 - optional: true '@vue/devtools-api@6.6.4': {} @@ -9583,6 +9833,18 @@ snapshots: transitivePeerDependencies: - vite + '@vue/devtools-core@7.6.8(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.6.3))': + dependencies: + '@vue/devtools-kit': 7.6.8 + '@vue/devtools-shared': 7.6.8 + mitt: 3.0.1 + nanoid: 5.0.9 + pathe: 1.1.2 + vite-hot-client: 0.2.4(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + vue: 3.5.13(typescript@5.6.3) + transitivePeerDependencies: + - vite + '@vue/devtools-kit@7.4.4': dependencies: '@vue/devtools-shared': 7.6.2 @@ -9593,10 +9855,37 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.1 + '@vue/devtools-kit@7.6.8': + dependencies: + '@vue/devtools-shared': 7.6.8 + birpc: 0.2.19 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.1 + '@vue/devtools-shared@7.6.2': dependencies: rfdc: 1.4.1 + '@vue/devtools-shared@7.6.8': + dependencies: + rfdc: 1.4.1 + + '@vue/language-core@2.1.10(typescript@5.6.3)': + dependencies: + '@volar/language-core': 2.4.8 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.13 + alien-signals: 0.2.0 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.6.3 + '@vue/language-core@2.1.10(typescript@5.7.2)': dependencies: '@volar/language-core': 2.4.8 @@ -9627,6 +9916,12 @@ snapshots: '@vue/shared': 3.5.13 csstype: 3.1.3 + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.6.3))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.6.3) + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.2))': dependencies: '@vue/compiler-ssr': 3.5.13 @@ -9640,6 +9935,11 @@ snapshots: js-beautify: 1.15.1 vue-component-type-helpers: 2.0.13 + '@vue/tsconfig@0.7.0(typescript@5.6.3)(vue@3.5.13(typescript@5.6.3))': + optionalDependencies: + typescript: 5.6.3 + vue: 3.5.13(typescript@5.6.3) + abbrev@1.1.1: {} abbrev@2.0.0: {} @@ -9703,8 +10003,7 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - alien-signals@0.2.0: - optional: true + alien-signals@0.2.0: {} ansi-colors@4.1.3: {} @@ -9724,6 +10023,8 @@ snapshots: ansi-styles@6.1.0: {} + ansi-styles@6.2.1: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -9758,8 +10059,6 @@ snapshots: delegates: 1.0.0 readable-stream: 3.6.0 - arg@5.0.2: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -9906,6 +10205,8 @@ snapshots: birpc@0.2.17: {} + birpc@0.2.19: {} + boolbase@1.0.0: {} brace-expansion@1.1.11: @@ -9936,8 +10237,6 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-crc32@0.2.13: {} - buffer-crc32@1.0.0: {} buffer-from@1.1.2: {} @@ -9981,8 +10280,6 @@ snapshots: callsites@3.1.0: {} - camelcase-css@2.0.1: {} - camelcase@5.3.1: {} camelcase@6.3.0: {} @@ -10022,25 +10319,6 @@ snapshots: check-error@2.1.1: {} - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.0.1 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.0.1 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -10305,8 +10583,7 @@ snapshots: db0@0.2.1: {} - de-indent@1.0.2: - optional: true + de-indent@1.0.2: {} debug@2.6.9: dependencies: @@ -10363,8 +10640,6 @@ snapshots: devalue@5.1.1: {} - didyoumean@1.2.2: {} - diff-sequences@29.6.3: {} diff@7.0.0: {} @@ -10373,8 +10648,6 @@ snapshots: dependencies: path-type: 4.0.0 - dlv@1.1.3: {} - dom-accessibility-api@0.5.14: {} dom-accessibility-api@0.6.3: {} @@ -10437,15 +10710,16 @@ snapshots: iconv-lite: 0.6.3 optional: true - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - enhanced-resolve@5.15.0: dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + entities@4.5.0: {} error-ex@1.3.2: @@ -10685,6 +10959,21 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + execa@9.5.2: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + exit@0.1.2: {} expect-type@1.1.0: {} @@ -10704,16 +10993,6 @@ snapshots: pathe: 1.1.2 ufo: 1.5.4 - extract-zip@2.0.1: - dependencies: - debug: 4.4.0(supports-color@9.4.0) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.0 - transitivePeerDependencies: - - supports-color - fast-deep-equal@3.1.3: {} fast-diff@1.2.0: {} @@ -10742,14 +11021,14 @@ snapshots: dependencies: bser: 2.1.1 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.4.2(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -10839,14 +11118,15 @@ snapshots: get-port-please@3.1.2: {} - get-stream@5.2.0: - dependencies: - pump: 3.0.0 - get-stream@6.0.1: {} get-stream@8.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + giget@1.2.3: dependencies: citty: 0.1.6 @@ -10973,8 +11253,7 @@ snapshots: dependencies: function-bind: 1.1.2 - he@1.2.0: - optional: true + he@1.2.0: {} hookable@5.5.3: {} @@ -10988,13 +11267,6 @@ snapshots: html-tags@3.3.1: {} - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.0.1 - entities: 4.5.0 - http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -11034,6 +11306,8 @@ snapshots: human-signals@5.0.0: {} + human-signals@8.0.0: {} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -11145,6 +11419,8 @@ snapshots: is-path-inside@4.0.0: {} + is-plain-obj@4.1.0: {} + is-potential-custom-element-name@1.0.1: {} is-reference@1.2.1: @@ -11163,6 +11439,10 @@ snapshots: is-stream@3.0.0: {} + is-stream@4.0.1: {} + + is-unicode-supported@2.1.0: {} + is-what@4.1.8: {} is-wsl@2.2.0: @@ -11181,6 +11461,8 @@ snapshots: isexe@2.0.0: {} + isexe@3.1.1: {} + istanbul-lib-coverage@3.2.0: {} istanbul-lib-instrument@5.2.0: @@ -11616,6 +11898,8 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-parse-even-better-errors@4.0.0: {} + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -11708,7 +11992,6 @@ snapshots: lightningcss-linux-x64-musl: 1.27.0 lightningcss-win32-arm64-msvc: 1.27.0 lightningcss-win32-x64-msvc: 1.27.0 - optional: true lilconfig@3.1.3: {} @@ -11737,8 +12020,6 @@ snapshots: load-tsconfig@0.2.3: {} - local-pkg@0.4.3: {} - local-pkg@0.5.1: dependencies: mlly: 1.7.3 @@ -11820,6 +12101,8 @@ snapshots: mdn-data@2.0.30: {} + memorystream@0.3.1: {} + merge-anything@5.1.7: dependencies: is-what: 4.1.8 @@ -11879,8 +12162,6 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@4.2.5: {} - minipass@5.0.0: {} minipass@7.1.2: {} @@ -11928,8 +12209,7 @@ snapshots: ms@2.1.3: {} - muggle-string@0.4.1: - optional: true + muggle-string@0.4.1: {} mz@2.7.0: dependencies: @@ -11941,6 +12221,8 @@ snapshots: nanoid@5.0.7: {} + nanoid@5.0.9: {} + nanotar@0.1.1: {} natural-compare@1.4.0: {} @@ -12092,6 +12374,19 @@ snapshots: normalize-range@0.1.2: {} + npm-normalize-package-bin@4.0.0: {} + + npm-run-all2@7.0.2: + dependencies: + ansi-styles: 6.2.1 + cross-spawn: 7.0.6 + memorystream: 0.3.1 + minimatch: 9.0.5 + pidtree: 0.6.0 + read-package-json-fast: 4.0.0 + shell-quote: 1.8.1 + which: 5.0.0 + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -12100,6 +12395,11 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -12239,8 +12539,6 @@ snapshots: object-assign@4.1.1: {} - object-hash@3.0.0: {} - ofetch@1.4.1: dependencies: destr: 2.0.3 @@ -12343,6 +12641,8 @@ snapshots: index-to-position: 0.1.2 type-fest: 4.30.0 + parse-ms@4.0.0: {} + parse-path@7.0.0: dependencies: protocols: 2.0.1 @@ -12351,19 +12651,13 @@ snapshots: dependencies: parse-path: 7.0.0 - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 - parse5@7.1.2: dependencies: entities: 4.5.0 parseurl@1.3.3: {} - path-browserify@1.0.1: - optional: true + path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -12393,8 +12687,6 @@ snapshots: pathval@2.0.0: {} - pend@1.2.0: {} - perfect-debounce@1.0.0: {} picocolors@1.1.1: {} @@ -12403,7 +12695,7 @@ snapshots: picomatch@4.0.2: {} - pify@2.3.0: {} + pidtree@0.6.0: {} pirates@4.0.5: {} @@ -12456,25 +12748,6 @@ snapshots: dependencies: postcss: 8.4.49 - postcss-import@15.1.0(postcss@8.4.49): - dependencies: - postcss: 8.4.49 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.49): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.49 - - postcss-load-config@4.0.2(postcss@8.4.49): - dependencies: - lilconfig: 3.1.3 - yaml: 2.6.0 - optionalDependencies: - postcss: 8.4.49 - postcss-load-config@6.0.1(jiti@2.4.0)(postcss@8.4.49)(yaml@2.6.0): dependencies: lilconfig: 3.1.3 @@ -12641,6 +12914,10 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + process-nextick-args@2.0.1: {} process@0.11.10: {} @@ -12654,11 +12931,6 @@ snapshots: protocols@2.0.1: {} - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - punycode@2.3.1: {} pure-rand@6.0.1: {} @@ -12709,9 +12981,10 @@ snapshots: dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: + read-package-json-fast@4.0.0: dependencies: - pify: 2.3.0 + json-parse-even-better-errors: 4.0.0 + npm-normalize-package-bin: 4.0.0 readable-stream@2.3.7: dependencies: @@ -13129,6 +13402,8 @@ snapshots: strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -13234,32 +13509,7 @@ snapshots: system-architecture@0.1.0: {} - tailwindcss@3.4.16: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) - postcss-selector-parser: 6.1.2 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node + tailwindcss@4.0.0-beta.8: {} tapable@2.2.1: {} @@ -13420,6 +13670,8 @@ snapshots: typescript@5.4.2: {} + typescript@5.6.3: {} + typescript@5.7.2: {} ufo@1.5.4: {} @@ -13500,6 +13752,8 @@ snapshots: unicorn-magic@0.1.0: {} + unicorn-magic@0.3.0: {} + unimport@3.14.4(rollup@4.28.1): dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.28.1) @@ -13622,6 +13876,10 @@ snapshots: dependencies: vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7) + vite-hot-client@0.2.4(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)): + dependencies: + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vite-node@2.1.8(@types/node@18.19.67)(lightningcss@1.27.0)(terser@5.17.7): dependencies: cac: 6.7.14 @@ -13699,6 +13957,22 @@ snapshots: - rollup - supports-color + vite-plugin-inspect@0.8.9(rollup@4.28.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + debug: 4.4.0(supports-color@9.4.0) + error-stack-parser-es: 0.1.5 + fs-extra: 11.2.0 + open: 10.1.0 + perfect-debounce: 1.0.0 + picocolors: 1.1.1 + sirv: 3.0.0 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + transitivePeerDependencies: + - rollup + - supports-color + vite-plugin-solid@2.11.0(@testing-library/jest-dom@6.6.3)(solid-js@1.9.3)(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)): dependencies: '@babel/core': 7.26.0 @@ -13714,6 +13988,22 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-vue-devtools@7.6.8(rollup@4.28.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.6.3)): + dependencies: + '@vue/devtools-core': 7.6.8(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0))(vue@3.5.13(typescript@5.6.3)) + '@vue/devtools-kit': 7.6.8 + '@vue/devtools-shared': 7.6.8 + execa: 9.5.2 + sirv: 3.0.0 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vite-plugin-inspect: 0.8.9(rollup@4.28.1)(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + vite-plugin-vue-inspector: 5.3.1(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)) + transitivePeerDependencies: + - '@nuxt/kit' + - rollup + - supports-color + - vue + vite-plugin-vue-inspector@5.1.3(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)): dependencies: '@babel/core': 7.26.0 @@ -13729,6 +14019,21 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-vue-inspector@5.3.1(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + '@vue/compiler-dom': 3.5.13 + kolorist: 1.8.0 + magic-string: 0.30.14 + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + transitivePeerDependencies: + - supports-color + vite@5.4.11(@types/node@18.19.67)(lightningcss@1.27.0)(terser@5.17.7): dependencies: esbuild: 0.21.5 @@ -13751,10 +14056,27 @@ snapshots: lightningcss: 1.27.0 terser: 5.17.7 + vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0): + dependencies: + esbuild: 0.24.0 + postcss: 8.4.49 + rollup: 4.28.1 + optionalDependencies: + '@types/node': 22.10.1 + fsevents: 2.3.3 + jiti: 2.4.0 + lightningcss: 1.27.0 + terser: 5.17.7 + yaml: 2.6.0 + vitefu@1.0.4(vite@5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7)): optionalDependencies: vite: 5.4.11(@types/node@22.10.1)(lightningcss@1.27.0)(terser@5.17.7) + vitefu@1.0.4(vite@6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0)): + optionalDependencies: + vite: 6.0.4(@types/node@22.10.1)(jiti@2.4.0)(lightningcss@1.27.0)(terser@5.17.7)(yaml@2.6.0) + vitest@2.1.8(@types/node@18.19.67)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.17.7): dependencies: '@vitest/expect': 2.1.8 @@ -13863,6 +14185,13 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.13(typescript@5.7.2) + vue-tsc@2.1.10(typescript@5.6.3): + dependencies: + '@volar/typescript': 2.4.8 + '@vue/language-core': 2.1.10(typescript@5.6.3) + semver: 7.6.3 + typescript: 5.6.3 + vue-tsc@2.1.10(typescript@5.7.2): dependencies: '@volar/typescript': 2.4.8 @@ -13871,6 +14200,16 @@ snapshots: typescript: 5.7.2 optional: true + vue@3.5.13(typescript@5.6.3): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.6.3)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 5.6.3 + vue@3.5.13(typescript@5.7.2): dependencies: '@vue/compiler-dom': 3.5.13 @@ -13927,6 +14266,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@5.0.0: + dependencies: + isexe: 3.1.1 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -13983,13 +14326,10 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - yocto-queue@0.1.0: {} + yoctocolors@2.1.1: {} + zhead@2.2.4: {} zimmerframe@1.1.2: {}