From 0e84af73de9eccee1b501ee4785c8f527b46661b Mon Sep 17 00:00:00 2001 From: Sadegh Barati Date: Wed, 6 Mar 2024 05:38:19 +0330 Subject: [PATCH] feat: use unjs modules and improve cli from main shadcn-ui source, custom ui dir (#324) * feat: add devDeps, add nypm for installing deps * feat: custom ui dir * refactor: use consola instead of chalk * test: ui alias * refactor: import { z } from 'zod' instead of *, replace node:path with pathe * chore: add components name to `configFile` option * chore: update `c12` which fix json5 parse issue and it also supports .config directory * chore: update `https-proxy-agent` * fix: await until dependencies are installed then run detypes process * feat: add tailwind prefix * test: tw-prefix snapshot * chore: add prefix option to init * test: apply prefix * fix: tw-prefix parse wrongly * chore: hide prefix temporarily --------- Co-authored-by: zernonia --- .../src/content/docs/components/data-table.md | 5 - apps/www/src/public/schema.json | 3 + eslint.config.js | 1 + packages/cli/package.json | 56 +- packages/cli/scripts/rimraf.js | 10 + packages/cli/src/commands/add.ts | 61 +- packages/cli/src/commands/diff.ts | 43 +- packages/cli/src/commands/init.ts | 70 +- packages/cli/src/utils/get-config.ts | 26 +- packages/cli/src/utils/get-package-info.ts | 2 +- packages/cli/src/utils/get-package-manager.ts | 16 - packages/cli/src/utils/get-project-info.ts | 2 +- packages/cli/src/utils/handle-error.ts | 8 +- packages/cli/src/utils/logger.ts | 19 - packages/cli/src/utils/registry/index.ts | 19 +- packages/cli/src/utils/registry/schema.ts | 3 +- packages/cli/src/utils/templates.ts | 2 + packages/cli/src/utils/transformers/index.ts | 4 +- .../utils/transformers/transform-css-vars.ts | 21 +- .../utils/transformers/transform-import.ts | 19 +- .../utils/transformers/transform-tw-prefix.ts | 80 ++ packages/cli/test/commands/init.test.ts | 19 +- .../test/fixtures/config-full/components.json | 6 +- .../transform-cjs-to-esm.test.ts.snap | 2 + .../transform-tw-prefix.test.ts.snap | 127 ++ .../test/utils/apply-color-mapping.test.ts | 8 +- packages/cli/test/utils/apply-prefix.test.ts | 42 + packages/cli/test/utils/get-config.test.ts | 25 +- .../test/utils/get-package-manager.test.ts | 26 - .../cli/test/utils/resolve-import.test.ts | 2 +- .../cli/test/utils/transform-css-vars.test.ts | 4 +- packages/cli/test/utils/transform-sfc.test.ts | 2 +- .../test/utils/transform-tw-prefix.test.ts | 115 ++ pnpm-lock.yaml | 1133 +++++++---------- 34 files changed, 1036 insertions(+), 945 deletions(-) create mode 100644 packages/cli/scripts/rimraf.js delete mode 100644 packages/cli/src/utils/get-package-manager.ts delete mode 100644 packages/cli/src/utils/logger.ts create mode 100644 packages/cli/src/utils/transformers/transform-tw-prefix.ts create mode 100644 packages/cli/test/utils/__snapshots__/transform-tw-prefix.test.ts.snap create mode 100644 packages/cli/test/utils/apply-prefix.test.ts delete mode 100644 packages/cli/test/utils/get-package-manager.test.ts create mode 100644 packages/cli/test/utils/transform-tw-prefix.test.ts diff --git a/apps/www/src/content/docs/components/data-table.md b/apps/www/src/content/docs/components/data-table.md index b9201093..a001d652 100644 --- a/apps/www/src/content/docs/components/data-table.md +++ b/apps/www/src/content/docs/components/data-table.md @@ -4,7 +4,6 @@ description: Powerful table and datagrids built using TanStack Table. primitive: https://tanstack.com/table/v8/docs/guide/introduction --- - ## Introduction @@ -56,7 +55,6 @@ npm install @tanstack/vue-table - ## Prerequisites We are going to build a table to show recent payments. Here's what our data looks like: @@ -219,7 +217,6 @@ const table = useVueTable({ - ### Render the table Finally, we'll render our table in our index component. @@ -270,7 +267,6 @@ Let's format the amount cell to display the dollar amount. We'll also align the Update the `header` and `cell` definitions for amount as follows: - ```ts:line-numbers title="components/payments/columns.ts" {5-17} import { h } from 'vue' @@ -345,7 +341,6 @@ function copy(id: string) { Update our columns definition to add a new `actions` column. The `actions` cell returns a `` component. - ```ts:line-numbers showLineNumber{2,6-16} import { ColumnDef } from "@tanstack/vue-table" import DropdownAction from '@/components/DataTableDropDown.vue' diff --git a/apps/www/src/public/schema.json b/apps/www/src/public/schema.json index cb463b16..94567c95 100644 --- a/apps/www/src/public/schema.json +++ b/apps/www/src/public/schema.json @@ -42,6 +42,9 @@ }, "components": { "type": "string" + }, + "ui": { + "type": "string" } }, "required": ["utils", "components"] diff --git a/eslint.config.js b/eslint.config.js index fb24507c..ee2561fd 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -24,6 +24,7 @@ export default antfu( 'no-tabs': 0, 'import/first': 0, 'node/prefer-global/process': 0, + 'style/no-tabs': 0, }, }, ) diff --git a/packages/cli/package.json b/packages/cli/package.json index bb9ee887..0f88155a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -32,7 +32,7 @@ "dev": "tsup --watch", "build": "tsup", "typecheck": "tsc --noEmit", - "clean": "rimraf dist && rimraf components", + "clean": "node ./scripts/rimraf.js", "lint": "eslint .", "lint:fix": "eslint --fix .", "start:dev": "COMPONENTS_REGISTRY_URL=http://localhost:3001 node dist/index.js", @@ -45,41 +45,39 @@ "test:ui": "vitest --ui" }, "dependencies": { - "@antfu/ni": "^0.21.8", - "@babel/core": "^7.22.17", - "@babel/parser": "^7.22.16", - "@babel/plugin-transform-typescript": "^7.22.15", + "@babel/core": "^7.24.0", + "@babel/parser": "^7.24.0", "@vue/compiler-sfc": "^3.4", - "chalk": "5.3.0", - "commander": "^11.0.0", - "cosmiconfig": "^8.3.6", + "c12": "^1.9.0", + "commander": "^12.0.0", + "consola": "^3.2.3", "detype": "npm:detypes@^0.7.9", - "diff": "^5.1.0", - "execa": "^8.0.1", - "fs-extra": "^11.1.1", - "https-proxy-agent": "^7.0.2", + "diff": "^5.2.0", + "fs-extra": "^11.2.0", + "https-proxy-agent": "^7.0.4", "lodash.template": "^4.5.0", - "magic-string": "^0.30.3", - "node-fetch": "^3.3.2", - "ora": "^7.0.1", + "magic-string": "^0.30.8", + "nypm": "^0.3.8", + "ofetch": "^1.3.3", + "ora": "^8.0.1", + "pathe": "^1.1.2", "prompts": "^2.4.2", - "radix-vue": "^1.4.8", - "recast": "^0.23.4", - "rimraf": "^5.0.1", - "ts-morph": "^19.0.0", + "radix-vue": "^1.4.9", + "ts-morph": "^21.0.1", "tsconfig-paths": "^4.2.0", - "vite-tsconfig-paths": "^4.2.1", - "zod": "^3.22.2" + "zod": "^3.22.4" }, "devDependencies": { - "@types/babel__core": "^7.20.1", - "@types/diff": "^5.0.3", - "@types/fs-extra": "^11.0.1", - "@types/lodash.template": "^4.5.1", - "@types/prompts": "^2.4.4", + "@types/babel__core": "^7.20.5", + "@types/diff": "^5.0.9", + "@types/fs-extra": "^11.0.4", + "@types/lodash.template": "^4.5.3", + "@types/node": "^20.11.24", + "@types/prompts": "^2.4.9", "@vitest/ui": "^0.34.4", - "tsup": "^7.2.0", - "type-fest": "^4.3.1", - "typescript": "^5.2.2" + "tsup": "^8.0.2", + "type-fest": "^4.10.3", + "typescript": "^5.3.3", + "vite-tsconfig-paths": "^4.3.1" } } diff --git a/packages/cli/scripts/rimraf.js b/packages/cli/scripts/rimraf.js new file mode 100644 index 00000000..70a00e9a --- /dev/null +++ b/packages/cli/scripts/rimraf.js @@ -0,0 +1,10 @@ +import fsp from 'node:fs/promises' + +function rmdir(dirs) { + dirs.forEach(async (dir) => { + await fsp.unlink(dir).catch(() => {}) + await fsp.rm(dir, { recursive: true, force: true }).catch(() => {}) + }) +} + +rmdir(['dist', 'components']) diff --git a/packages/cli/src/commands/add.ts b/packages/cli/src/commands/add.ts index 279ae085..6b331006 100644 --- a/packages/cli/src/commands/add.ts +++ b/packages/cli/src/commands/add.ts @@ -1,17 +1,16 @@ import { existsSync, promises as fs, rmSync } from 'node:fs' -import path from 'node:path' import process from 'node:process' -import chalk from 'chalk' +import path from 'pathe' +import { consola } from 'consola' +import { colors } from 'consola/utils' import { Command } from 'commander' -import { execa } from 'execa' import ora from 'ora' import prompts from 'prompts' -import * as z from 'zod' +import { z } from 'zod' +import { addDependency, addDevDependency } from 'nypm' import { transform } from '@/src/utils/transformers' import { getConfig } from '@/src/utils/get-config' -import { getPackageManager } from '@/src/utils/get-package-manager' import { handleError } from '@/src/utils/handle-error' -import { logger } from '@/src/utils/logger' import { fetchTree, getItemTargetPath, @@ -52,15 +51,15 @@ export const add = new Command() const cwd = path.resolve(options.cwd) if (!existsSync(cwd)) { - logger.error(`The path ${cwd} does not exist. Please try again.`) + consola.error(`The path ${cwd} does not exist. Please try again.`) process.exit(1) } const config = await getConfig(cwd) + if (!config) { - logger.warn( - `Configuration is missing. Please run ${chalk.green('init')} to create a components.json file.`, - ) + consola.warn(`Configuration is missing. Please run ${colors.green('init')} to create a components.json file.`) + process.exit(1) } @@ -88,7 +87,7 @@ export const add = new Command() } if (!selectedComponents?.length) { - logger.warn('No components selected. Exiting.') + consola.warn('No components selected. Exiting.') process.exit(0) } @@ -97,7 +96,7 @@ export const add = new Command() const baseColor = await getRegistryBaseColor(config.tailwind.baseColor) if (!payload.length) { - logger.warn('Selected components not found. Exiting.') + consola.warn('Selected components not found. Exiting.') process.exit(0) } @@ -114,7 +113,6 @@ export const add = new Command() } const spinner = ora('Installing components...').start() - const skippedDeps = new Set() for (const item of payload) { spinner.text = `Installing ${item.name}...` const targetDir = getItemTargetPath( @@ -144,8 +142,8 @@ export const add = new Command() }) if (!overwrite) { - logger.info( - `Skipped ${item.name}. To overwrite, run with the ${chalk.green( + consola.info( + `Skipped ${item.name}. To overwrite, run with the ${colors.green( '--overwrite', )} flag.`, ) @@ -159,6 +157,20 @@ export const add = new Command() } } + // Install dependencies. + await Promise.allSettled( + [ + item.dependencies?.length && await addDependency(item.dependencies, { + cwd, + silent: true, + }), + item.devDependencies?.length && await addDevDependency(item.devDependencies, { + cwd, + silent: true, + }), + ], + ) + const componentDir = path.resolve(targetDir, item.name) if (!existsSync(componentDir)) await fs.mkdir(componentDir, { recursive: true }) @@ -201,25 +213,6 @@ export const add = new Command() await fs.writeFile(filePath, content) } - - // Install dependencies. - if (item.dependencies?.length) { - item.dependencies.forEach(dep => - skippedDeps.add(dep), - ) - - const packageManager = await getPackageManager(cwd) - await execa( - packageManager, - [ - packageManager === 'npm' ? 'install' : 'add', - ...item.dependencies, - ], - { - cwd, - }, - ) - } } spinner.succeed('Done.') } diff --git a/packages/cli/src/commands/diff.ts b/packages/cli/src/commands/diff.ts index a4fb5f4c..8bf17aa9 100644 --- a/packages/cli/src/commands/diff.ts +++ b/packages/cli/src/commands/diff.ts @@ -1,14 +1,14 @@ import { existsSync, promises as fs } from 'node:fs' -import path from 'node:path' import process from 'node:process' -import chalk from 'chalk' +import path from 'pathe' +import { consola } from 'consola' +import { colors } from 'consola/utils' import { Command } from 'commander' import { type Change, diffLines } from 'diff' -import * as z from 'zod' +import { z } from 'zod' import type { Config } from '@/src/utils/get-config' import { getConfig } from '@/src/utils/get-config' import { handleError } from '@/src/utils/handle-error' -import { logger } from '@/src/utils/logger' import { fetchTree, getItemTargetPath, @@ -45,14 +45,14 @@ export const diff = new Command() const cwd = path.resolve(options.cwd) if (!existsSync(cwd)) { - logger.error(`The path ${cwd} does not exist. Please try again.`) + consola.error(`The path ${cwd} does not exist. Please try again.`) process.exit(1) } const config = await getConfig(cwd) if (!config) { - logger.warn( - `Configuration is missing. Please run ${chalk.green( + consola.warn( + `Configuration is missing. Please run ${colors.green( 'init', )} to create a components.json file.`, ) @@ -88,19 +88,20 @@ export const diff = new Command() } if (!componentsWithUpdates.length) { - logger.info('No updates found.') + consola.info('No updates found.') process.exit(0) } - logger.info('The following components have updates available:') + consola.info('The following components have updates available:') for (const component of componentsWithUpdates) { - logger.info(`- ${component.name}`) + consola.info(`- ${component.name}`) for (const change of component.changes) - logger.info(` - ${change.filePath}`) + consola.info(` - ${change.filePath}`) } - logger.break() - logger.info( - `Run ${chalk.green('diff ')} to see the changes.`, + + consola.log('') + consola.info( + `Run ${colors.green('diff ')} to see the changes.`, ) process.exit(0) } @@ -111,8 +112,8 @@ export const diff = new Command() ) if (!component) { - logger.error( - `The component ${chalk.green(options.component)} does not exist.`, + consola.error( + `The component ${colors.green(options.component)} does not exist.`, ) process.exit(1) } @@ -120,14 +121,14 @@ export const diff = new Command() const changes = await diffComponent(component, config) if (!changes.length) { - logger.info(`No updates found for ${options.component}.`) + consola.info(`No updates found for ${options.component}.`) process.exit(0) } for (const change of changes) { - logger.info(`- ${change.filePath}`) + consola.info(`- ${change.filePath}`) printDiff(change.patch) - logger.info('') + consola.log('') } } catch (error) { @@ -184,10 +185,10 @@ function printDiff(diff: Change[]) { diff.forEach((part) => { if (part) { if (part.added) - return process.stdout.write(chalk.green(part.value)) + return process.stdout.write(colors.green(part.value)) if (part.removed) - return process.stdout.write(chalk.red(part.value)) + return process.stdout.write(colors.red(part.value)) return process.stdout.write(part.value) } diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index c20ddffb..0e96d1f7 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -1,22 +1,21 @@ import { existsSync, promises as fs } from 'node:fs' -import path from 'node:path' import process from 'node:process' -import chalk from 'chalk' +import path from 'pathe' import { Command } from 'commander' -import { execa } from 'execa' import template from 'lodash.template' import ora from 'ora' import prompts from 'prompts' -import * as z from 'zod' +import { z } from 'zod' +import { addDependency, addDevDependency } from 'nypm' +import { consola } from 'consola' +import { colors } from 'consola/utils' import * as templates from '../utils/templates' import { getRegistryBaseColor, getRegistryBaseColors, getRegistryStyles, } from '../utils/registry' -import { logger } from '../utils/logger' import { handleError } from '../utils/handle-error' -import { getPackageManager } from '../utils/get-package-manager' import { transformByDetype } from '../utils/transformers/transform-sfc' import { type Config, @@ -29,6 +28,7 @@ import { resolveConfigPaths, } from '../utils/get-config' import { transformCJSToESM } from '../utils/transformers/transform-cjs-to-esm' +import { applyPrefixesCss } from '../utils/transformers/transform-tw-prefix' const PROJECT_DEPENDENCIES = { base: [ @@ -64,7 +64,7 @@ export const init = new Command() // Ensure target directory exists. if (!existsSync(cwd)) { - logger.error(`The path ${cwd} does not exist. Please try again.`) + consola.error(`The path ${cwd} does not exist. Please try again.`) process.exit(1) } @@ -74,11 +74,11 @@ export const init = new Command() await runInit(cwd, config) - logger.info('') - logger.info( - `${chalk.green('Success!')} Project initialization completed.`, + consola.log('') + consola.info( + `${colors.green('Success!')} Project initialization completed.`, ) - logger.info('') + consola.log('') } catch (error) { handleError(error) @@ -90,7 +90,7 @@ export async function promptForConfig( defaultConfig: Config | null = null, skip = false, ) { - const highlight = (text: string) => chalk.cyan(text) + const highlight = (text: string) => colors.cyan(text) const styles = await getRegistryStyles() const baseColors = await getRegistryBaseColors() @@ -151,6 +151,14 @@ export async function promptForConfig( active: 'yes', inactive: 'no', }, + // { + // type: 'text', + // name: 'tailwindPrefix', + // message: `Are you using a custom ${highlight( + // 'tailwind prefix eg. tw-', + // )}? (Leave blank if not)`, + // initial: '', + // }, { type: 'text', name: 'tailwindConfig', @@ -187,6 +195,7 @@ export async function promptForConfig( css: options.tailwindCss, baseColor: options.tailwindBaseColor, cssVariables: options.tailwindCssVariables, + // prefix: options.tailwindPrefix, }, aliases: { utils: options.utils, @@ -207,7 +216,7 @@ export async function promptForConfig( } // Write to file. - logger.info('') + consola.log('') const spinner = ora('Writing components.json...').start() const targetPath = path.resolve(cwd, 'components.json') await fs.writeFile(targetPath, JSON.stringify(config, null, 2), 'utf8') @@ -247,8 +256,8 @@ export async function runInit(cwd: string, config: Config) { transformCJSToESM( config.resolvedPaths.tailwindConfig, config.tailwind.cssVariables - ? template(templates.TAILWIND_CONFIG_WITH_VARIABLES)({ extension, framework: config.framework }) - : template(templates.TAILWIND_CONFIG)({ extension, framework: config.framework }), + ? template(templates.TAILWIND_CONFIG_WITH_VARIABLES)({ extension, framework: config.framework, prefix: config.tailwind.prefix }) + : template(templates.TAILWIND_CONFIG)({ extension, framework: config.framework, prefix: config.tailwind.prefix }), ), 'utf8', ) @@ -259,7 +268,9 @@ export async function runInit(cwd: string, config: Config) { await fs.writeFile( config.resolvedPaths.tailwindCss, config.tailwind.cssVariables - ? baseColor.cssVarsTemplate + ? config.tailwind.prefix + ? applyPrefixesCss(baseColor.cssVarsTemplate, config.tailwind.prefix) + : baseColor.cssVarsTemplate : baseColor.inlineColorsTemplate, 'utf8', ) @@ -276,20 +287,29 @@ export async function runInit(cwd: string, config: Config) { // Install dependencies. const dependenciesSpinner = ora('Installing dependencies...')?.start() - const packageManager = await getPackageManager(cwd) const deps = PROJECT_DEPENDENCIES.base.concat( - config.framework === 'nuxt' ? PROJECT_DEPENDENCIES.nuxt : [], - ).concat( config.style === 'new-york' ? ['@radix-icons/vue'] : ['lucide-vue-next'], ).filter(Boolean) - await execa( - packageManager, - [packageManager === 'npm' ? 'install' : 'add', ...deps], - { - cwd, - }, + async function addNuxtDevDeps() { + if (config.framework === 'nuxt') { + await addDevDependency(PROJECT_DEPENDENCIES.nuxt, { + cwd, + silent: true, + }) + } + } + + await Promise.allSettled( + [ + addNuxtDevDeps(), + addDependency(deps, { + cwd, + silent: true, + }), + ], ) + dependenciesSpinner?.succeed() } diff --git a/packages/cli/src/utils/get-config.ts b/packages/cli/src/utils/get-config.ts index 68f7ebeb..2effd274 100644 --- a/packages/cli/src/utils/get-config.ts +++ b/packages/cli/src/utils/get-config.ts @@ -1,9 +1,9 @@ -import path from 'node:path' import { existsSync } from 'node:fs' -import { cosmiconfig } from 'cosmiconfig' +import path from 'pathe' +import { loadConfig as c12LoadConfig } from 'c12' import type { ConfigLoaderResult } from 'tsconfig-paths' import { loadConfig } from 'tsconfig-paths' -import * as z from 'zod' +import { z } from 'zod' import { resolveImport } from '@/src/utils/resolve-import' export const DEFAULT_STYLE = 'default' @@ -19,12 +19,6 @@ export const TAILWIND_CSS_PATH = { astro: 'src/styles/globals.css', } -// TODO: Figure out if we want to support all cosmiconfig formats. -// A simple components.json file would be nice. -const explorer = cosmiconfig('components', { - searchPlaces: ['components.json'], -}) - export const rawConfigSchema = z .object({ $schema: z.string().optional(), @@ -35,11 +29,13 @@ export const rawConfigSchema = z css: z.string(), baseColor: z.string(), cssVariables: z.boolean().default(true), + prefix: z.string().optional(), }), framework: z.string().default('Vite'), aliases: z.object({ components: z.string(), utils: z.string(), + ui: z.string().default('').optional(), }), }) .strict() @@ -53,6 +49,7 @@ export const configSchema = rawConfigSchema tailwindCss: z.string(), utils: z.string(), components: z.string(), + ui: z.string(), }), }) @@ -103,15 +100,22 @@ export async function resolveConfigPaths(cwd: string, config: RawConfig) { tailwindCss: path.resolve(cwd, config.tailwind.css), utils: resolveImport(config.aliases.utils, tsConfig), components: resolveImport(config.aliases.components, tsConfig), + ui: config.aliases.ui + ? resolveImport(config.aliases.ui, tsConfig) + : resolveImport(config.aliases.components, tsConfig), }, }) } export async function getRawConfig(cwd: string): Promise { try { - const configResult = await explorer.search(cwd) + const configResult = await c12LoadConfig({ + name: 'components', + configFile: 'components', + cwd, + }) - if (!configResult) + if (!configResult.config || Object.keys(configResult.config).length === 0) return null return rawConfigSchema.parse(configResult.config) diff --git a/packages/cli/src/utils/get-package-info.ts b/packages/cli/src/utils/get-package-info.ts index dde5c450..0add4075 100644 --- a/packages/cli/src/utils/get-package-info.ts +++ b/packages/cli/src/utils/get-package-info.ts @@ -1,5 +1,5 @@ -import path from 'node:path' import { fileURLToPath } from 'node:url' +import path from 'pathe' import fs from 'fs-extra' import { type PackageJson } from 'type-fest' diff --git a/packages/cli/src/utils/get-package-manager.ts b/packages/cli/src/utils/get-package-manager.ts deleted file mode 100644 index 1361bb5b..00000000 --- a/packages/cli/src/utils/get-package-manager.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { detect } from '@antfu/ni' - -export async function getPackageManager( - targetDir: string, -): Promise<'yarn' | 'pnpm' | 'bun' | 'npm'> { - const packageManager = await detect({ programmatic: true, cwd: targetDir }) - - if (packageManager === 'yarn@berry') - return 'yarn' - if (packageManager === 'pnpm@6') - return 'pnpm' - if (packageManager === 'bun') - return 'bun' - - return packageManager ?? 'npm' -} diff --git a/packages/cli/src/utils/get-project-info.ts b/packages/cli/src/utils/get-project-info.ts index 3b08691e..a2219f6d 100644 --- a/packages/cli/src/utils/get-project-info.ts +++ b/packages/cli/src/utils/get-project-info.ts @@ -1,5 +1,5 @@ import { existsSync } from 'node:fs' -import path from 'node:path' +import path from 'pathe' import fs from 'fs-extra' export async function getProjectInfo() { diff --git a/packages/cli/src/utils/handle-error.ts b/packages/cli/src/utils/handle-error.ts index 8ca00d66..2280fd43 100644 --- a/packages/cli/src/utils/handle-error.ts +++ b/packages/cli/src/utils/handle-error.ts @@ -1,16 +1,16 @@ -import { logger } from './logger' +import { consola } from 'consola' export function handleError(error: unknown) { if (typeof error === 'string') { - logger.error(error) + consola.error(error) process.exit(1) } if (error instanceof Error) { - logger.error(error.message) + consola.error(error.message) process.exit(1) } - logger.error('Something went wrong. Please try again.') + consola.error('Something went wrong. Please try again.') process.exit(1) } diff --git a/packages/cli/src/utils/logger.ts b/packages/cli/src/utils/logger.ts deleted file mode 100644 index 161973a3..00000000 --- a/packages/cli/src/utils/logger.ts +++ /dev/null @@ -1,19 +0,0 @@ -import chalk from 'chalk' - -export const logger = { - error(...args: unknown[]) { - console.log(chalk.red(...args)) - }, - warn(...args: unknown[]) { - console.log(chalk.yellow(...args)) - }, - info(...args: unknown[]) { - console.log(chalk.cyan(...args)) - }, - success(...args: unknown[]) { - console.log(chalk.green(...args)) - }, - break() { - console.log('') - }, -} diff --git a/packages/cli/src/utils/registry/index.ts b/packages/cli/src/utils/registry/index.ts index 6d8a0962..bb1f9f8b 100644 --- a/packages/cli/src/utils/registry/index.ts +++ b/packages/cli/src/utils/registry/index.ts @@ -1,8 +1,9 @@ -import path from 'node:path' import process from 'node:process' +import path from 'pathe' import { HttpsProxyAgent } from 'https-proxy-agent' -import fetch from 'node-fetch' +import { ofetch } from 'ofetch' import type * as z from 'zod' +import consola from 'consola' import { registryBaseColorSchema, registryIndexSchema, @@ -122,9 +123,12 @@ export function getItemTargetPath( override?: string, ) { // Allow overrides for all items but ui. - if (override && item.type !== 'components:ui') + if (override) return override + if (item.type === 'components:ui' && config.aliases.ui) + return config.resolvedPaths.ui + const [parent, type] = item.type.split(':') if (!(parent in config.resolvedPaths)) return null @@ -139,17 +143,18 @@ async function fetchRegistry(paths: string[]) { try { const results = await Promise.all( paths.map(async (path) => { - const response = await fetch(`${baseUrl}/registry/${path}`, { + const response = await ofetch(`${baseUrl}/registry/${path}`, { + // @ts-expect-error agent type agent, }) - return await response.json() + + return response }), ) return results } catch (error) { - // eslint-disable-next-line no-console - console.log(error) + consola.error(error) throw new Error(`Failed to fetch registry from ${baseUrl}.`) } } diff --git a/packages/cli/src/utils/registry/schema.ts b/packages/cli/src/utils/registry/schema.ts index 8b276326..14f0383c 100644 --- a/packages/cli/src/utils/registry/schema.ts +++ b/packages/cli/src/utils/registry/schema.ts @@ -1,9 +1,10 @@ -import * as z from 'zod' +import { z } from 'zod' // TODO: Extract this to a shared package. export const registryItemSchema = z.object({ name: z.string(), dependencies: z.array(z.string()).optional(), + devDependencies: z.array(z.string()).optional(), registryDependencies: z.array(z.string()).optional(), files: z.array(z.string()), type: z.enum(['components:ui', 'components:component', 'components:example']), diff --git a/packages/cli/src/utils/templates.ts b/packages/cli/src/utils/templates.ts index 0f80fe78..47ca0648 100644 --- a/packages/cli/src/utils/templates.ts +++ b/packages/cli/src/utils/templates.ts @@ -17,6 +17,7 @@ module.exports = { './app/**/*.{<%- extension %>,<%- extension %>x,vue}', './src/**/*.{<%- extension %>,<%- extension %>x,vue}', ], + prefix: "<%- prefix %>", theme: { container: { center: true, @@ -51,6 +52,7 @@ export const TAILWIND_CONFIG_WITH_VARIABLES = `const animate = require("tailwind module.exports = { darkMode: ["class"], safelist: ["dark"], + prefix: "<%- prefix %>", <% if (framework === 'vite') { %> content: [ './pages/**/*.{<%- extension %>,<%- extension %>x,vue}', diff --git a/packages/cli/src/utils/transformers/index.ts b/packages/cli/src/utils/transformers/index.ts index ab2d0f04..72d03401 100644 --- a/packages/cli/src/utils/transformers/index.ts +++ b/packages/cli/src/utils/transformers/index.ts @@ -1,12 +1,13 @@ import { promises as fs } from 'node:fs' import { tmpdir } from 'node:os' -import path from 'node:path' +import path from 'pathe' import { Project, ScriptKind, type SourceFile } from 'ts-morph' import type * as z from 'zod' import type { Config } from '@/src/utils/get-config' import type { registryBaseColorSchema } from '@/src/utils/registry/schema' import { transformCssVars } from '@/src/utils/transformers/transform-css-vars' import { transformImport } from '@/src/utils/transformers/transform-import' +import { transformTwPrefixes } from '@/src/utils/transformers/transform-tw-prefix' import { transformSFC } from '@/src/utils/transformers/transform-sfc' export interface TransformOpts { @@ -25,6 +26,7 @@ export type Transformer = ( const transformers: Transformer[] = [ transformCssVars, transformImport, + // transformTwPrefixes, ] const project = new Project({ diff --git a/packages/cli/src/utils/transformers/transform-css-vars.ts b/packages/cli/src/utils/transformers/transform-css-vars.ts index 204f7d68..c9de5402 100644 --- a/packages/cli/src/utils/transformers/transform-css-vars.ts +++ b/packages/cli/src/utils/transformers/transform-css-vars.ts @@ -88,29 +88,28 @@ export function applyColorMapping( if (input.includes(' border ')) input = input.replace(' border ', ' border border-border ') - // Build color mappings. const classNames = input.split(' ') - const lightMode: string[] = [] - const darkMode: string[] = [] + const lightMode = new Set() + const darkMode = new Set() for (const className of classNames) { const [variant, value, modifier] = splitClassName(className) const prefix = PREFIXES.find(prefix => value?.startsWith(prefix)) if (!prefix) { - if (!lightMode.includes(className)) - lightMode.push(className) + if (!lightMode.has(className)) + lightMode.add(className) continue } const needle = value?.replace(prefix, '') if (needle && needle in mapping.light) { - lightMode.push( + lightMode.add( [variant, `${prefix}${mapping.light[needle]}`] .filter(Boolean) .join(':') + (modifier ? `/${modifier}` : ''), ) - darkMode.push( + darkMode.add( ['dark', variant, `${prefix}${mapping.dark[needle]}`] .filter(Boolean) .join(':') + (modifier ? `/${modifier}` : ''), @@ -118,9 +117,9 @@ export function applyColorMapping( continue } - if (!lightMode.includes(className)) - lightMode.push(className) + if (!lightMode.has(className)) + lightMode.add(className) } - const combined = `${lightMode.join(' ').replace(/\'/g, '')} ${darkMode.join(' ').trim()}`.trim() - return `${combined}` + + return [...Array.from(lightMode), ...Array.from(darkMode)].join(' ').trim() } diff --git a/packages/cli/src/utils/transformers/transform-import.ts b/packages/cli/src/utils/transformers/transform-import.ts index d5610361..f32820de 100644 --- a/packages/cli/src/utils/transformers/transform-import.ts +++ b/packages/cli/src/utils/transformers/transform-import.ts @@ -8,12 +8,19 @@ export const transformImport: Transformer = async ({ sourceFile, config }) => { // Replace @/lib/registry/[style] with the components alias. if (moduleSpecifier.startsWith('@/lib/registry/')) { - importDeclaration.setModuleSpecifier( - moduleSpecifier.replace( - /^@\/lib\/registry\/[^/]+/, - config.aliases.components, - ), - ) + if (config.aliases.ui) { + importDeclaration.setModuleSpecifier( + moduleSpecifier.replace(/^@\/lib\/registry\/[^/]+\/ui/, config.aliases.ui), + ) + } + else { + importDeclaration.setModuleSpecifier( + moduleSpecifier.replace( + /^@\/lib\/registry\/[^/]+/, + config.aliases.components, + ), + ) + } } // Replace `import { cn } from "@/lib/utils"` diff --git a/packages/cli/src/utils/transformers/transform-tw-prefix.ts b/packages/cli/src/utils/transformers/transform-tw-prefix.ts new file mode 100644 index 00000000..6f7495fb --- /dev/null +++ b/packages/cli/src/utils/transformers/transform-tw-prefix.ts @@ -0,0 +1,80 @@ +import { SyntaxKind } from 'ts-morph' +import { MagicString, parse } from '@vue/compiler-sfc' +import type { SFCTemplateBlock } from '@vue/compiler-sfc' +import { splitClassName } from './transform-css-vars' +import type { Transformer } from '@/src/utils/transformers' + +export const transformTwPrefixes: Transformer = async ({ + sourceFile, + config, +}) => { + const isVueFile = sourceFile.getFilePath().endsWith('vue') + if (!config.tailwind?.prefix) + return sourceFile + + let template: SFCTemplateBlock | null = null + + if (isVueFile) { + const parsed = parse(sourceFile.getText()) + template = parsed.descriptor.template + + if (!template) + return sourceFile + } + + sourceFile.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach((node) => { + if (template && template.loc.start.offset >= node.getPos()) + return sourceFile + + const attrName = sourceFile.getDescendantAtPos(node.getPos() - 2)?.getText() + if (isVueFile && attrName !== 'class') + return sourceFile + + const value = node.getText() + const hasClosingDoubleQuote = value.match(/"/g)?.length === 2 + if (value.search('\'') === -1 && hasClosingDoubleQuote) { + const mapped = applyPrefix(value.replace(/"/g, ''), config.tailwind.prefix) + node.replaceWithText(`"${mapped}"`) + } + else { + const s = new MagicString(value) + s.replace(/'(.*?)'/g, (substring) => { + return `'${applyPrefix(substring.replace(/\'/g, ''), config.tailwind.prefix)}'` + }) + node.replaceWithText(s.toString()) + } + }) + + return sourceFile +} + +export function applyPrefix(input: string, prefix: string = '') { + const classNames = input.split(' ') + const prefixed: string[] = [] + for (const className of classNames) { + const [variant, value, modifier] = splitClassName(className) + if (variant) { + modifier + ? prefixed.push(`${variant}:${prefix}${value}/${modifier}`) + : prefixed.push(`${variant}:${prefix}${value}`) + } + else { + modifier + ? prefixed.push(`${prefix}${value}/${modifier}`) + : prefixed.push(`${prefix}${value}`) + } + } + return prefixed.join(' ') +} + +export function applyPrefixesCss(css: string, prefix: string) { + const lines = css.split('\n') + for (const line of lines) { + if (line.includes('@apply')) { + const originalTWCls = line.replace('@apply', '').trim() + const prefixedTwCls = applyPrefix(originalTWCls, prefix) + css = css.replace(originalTWCls, prefixedTwCls) + } + } + return css +} diff --git a/packages/cli/test/commands/init.test.ts b/packages/cli/test/commands/init.test.ts index 32cbe0bd..20c4c365 100644 --- a/packages/cli/test/commands/init.test.ts +++ b/packages/cli/test/commands/init.test.ts @@ -1,14 +1,13 @@ import fs from 'node:fs' -import path from 'node:path' -import { execa } from 'execa' +import path from 'pathe' +import { addDependency, addDevDependency } from 'nypm' import { afterEach, expect, test, vi } from 'vitest' import { runInit } from '../../src/commands/init' import { getConfig } from '../../src/utils/get-config' -import * as getPackageManger from '../../src/utils/get-package-manager' import * as registry from '../../src/utils/registry' -vi.mock('execa') +vi.mock('nypm') vi.mock('fs/promises', () => ({ writeFile: vi.fn(), mkdir: vi.fn(), @@ -16,7 +15,6 @@ vi.mock('fs/promises', () => ({ vi.mock('ora') test('init config-full', async () => { - vi.spyOn(getPackageManger, 'getPackageManager').mockResolvedValue('pnpm') vi.spyOn(registry, 'getRegistryBaseColor').mockResolvedValue({ inlineColors: {}, cssVars: {}, @@ -67,10 +65,8 @@ test('init config-full', async () => { expect.stringContaining("import { type ClassValue, clsx } from 'clsx'"), 'utf8', ) - expect(execa).toHaveBeenCalledWith( - 'pnpm', + expect(addDependency).toHaveBeenCalledWith( [ - 'add', 'tailwindcss-animate', 'class-variance-authority', 'clsx', @@ -80,6 +76,7 @@ test('init config-full', async () => { ], { cwd: targetDir, + silent: true, }, ) @@ -88,7 +85,6 @@ test('init config-full', async () => { }) test('init config-partial', async () => { - vi.spyOn(getPackageManger, 'getPackageManager').mockResolvedValue('npm') vi.spyOn(registry, 'getRegistryBaseColor').mockResolvedValue({ inlineColors: {}, cssVars: {}, @@ -139,10 +135,8 @@ test('init config-partial', async () => { expect.stringContaining("import { type ClassValue, clsx } from 'clsx'"), 'utf8', ) - expect(execa).toHaveBeenCalledWith( - 'npm', + expect(addDependency).toHaveBeenCalledWith( [ - 'install', 'tailwindcss-animate', 'class-variance-authority', 'clsx', @@ -152,6 +146,7 @@ test('init config-partial', async () => { ], { cwd: targetDir, + silent: true, }, ) diff --git a/packages/cli/test/fixtures/config-full/components.json b/packages/cli/test/fixtures/config-full/components.json index 81af8b3b..280c7de9 100644 --- a/packages/cli/test/fixtures/config-full/components.json +++ b/packages/cli/test/fixtures/config-full/components.json @@ -4,10 +4,12 @@ "config": "tailwind.config.ts", "css": "src/app/globals.css", "baseColor": "zinc", - "cssVariables": true + "cssVariables": true, + "prefix": "tw-" }, "aliases": { "utils": "~/lib/utils", - "components": "~/components" + "components": "~/components", + "ui": "~/ui" } } diff --git a/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap b/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap index 009aaf53..27bdafe0 100644 --- a/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap +++ b/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap @@ -12,6 +12,7 @@ export default { './app/**/*.{<%- extension %>,<%- extension %>x,vue}', './src/**/*.{<%- extension %>,<%- extension %>x,vue}', ], + prefix: \\"<%- prefix %>\\", theme: { container: { center: true, @@ -48,6 +49,7 @@ exports[`handle tailwind config template correctly 2`] = ` export default { darkMode: [\\"class\\"], safelist: [\\"dark\\"], + prefix: \\"<%- prefix %>\\", <% if (framework === 'vite') { %> content: [ './pages/**/*.{<%- extension %>,<%- extension %>x,vue}', diff --git a/packages/cli/test/utils/__snapshots__/transform-tw-prefix.test.ts.snap b/packages/cli/test/utils/__snapshots__/transform-tw-prefix.test.ts.snap new file mode 100644 index 00000000..c72fbfa5 --- /dev/null +++ b/packages/cli/test/utils/__snapshots__/transform-tw-prefix.test.ts.snap @@ -0,0 +1,127 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`transform tailwind prefix 1`] = ` +"const testVariants = cva( + \\"tw-bg-background hover:tw-bg-muted tw-text-primary-foreground sm:focus:tw-text-accent-foreground\\", + { + variants: { + variant: { + default: + \\"tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90\\", + }, + size: { + default: \\"tw-h-10 tw-px-4 tw-py-2\\", + }, + }, + } +); +" +`; + +exports[`transform tailwind prefix 2`] = ` +" + " +`; + +exports[`transform tailwind prefix 3`] = ` +" + " +`; + +exports[`transform tailwind prefix 4`] = ` +" + " +`; + +exports[`transform tailwind prefix 5`] = ` +"@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 224 71.4% 4.1%; + + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 224 71.4% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 224 71.4% 4.1%; + + --border: 220 13% 91%; + --input: 220 13% 91%; + + --primary: 220.9 39.3% 11%; + --primary-foreground: 210 20% 98%; + + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 20% 98%; + + --ring: 217.9 10.6% 64.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 224 71.4% 4.1%; + --foreground: 210 20% 98%; + + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + + --popover: 224 71.4% 4.1%; + --popover-foreground: 210 20% 98%; + + --card: 224 71.4% 4.1%; + --card-foreground: 210 20% 98%; + + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + + --primary: 210 20% 98%; + --primary-foreground: 220.9 39.3% 11%; + + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 85.7% 97.3%; + + --ring: 215 27.9% 16.9%; + } +} + +@layer base { + * { + @apply tw-border-border; + } + body { + @apply tw-bg-background tw-text-foreground; + } +}" +`; diff --git a/packages/cli/test/utils/apply-color-mapping.test.ts b/packages/cli/test/utils/apply-color-mapping.test.ts index 178ae573..4bbb7f53 100644 --- a/packages/cli/test/utils/apply-color-mapping.test.ts +++ b/packages/cli/test/utils/apply-color-mapping.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest' +import { describe, expect, it } from 'vitest' import { applyColorMapping, @@ -7,7 +7,7 @@ import { import baseColor from '../fixtures/colors/slate.json' describe('split class', () => { - test.each([ + it.each([ { input: 'bg-popover', output: [null, 'bg-popover', null], @@ -50,7 +50,7 @@ describe('split class', () => { }) describe('apply color mapping', async () => { - test.each([ + it.each([ { input: 'bg-background text-foreground', output: 'bg-white text-slate-950 dark:bg-slate-950 dark:text-slate-50', @@ -64,7 +64,7 @@ describe('apply color mapping', async () => { input: 'text-destructive border-destructive/50 dark:border-destructive [&>svg]:text-destructive text-destructive', output: - 'text-red-500 border-red-500/50 dark:border-red-500 [&>svg]:text-red-500 text-red-500 dark:text-red-900 dark:border-red-900/50 dark:dark:border-red-900 dark:[&>svg]:text-red-900 dark:text-red-900', + 'text-red-500 border-red-500/50 dark:border-red-500 [&>svg]:text-red-500 dark:text-red-900 dark:border-red-900/50 dark:dark:border-red-900 dark:[&>svg]:text-red-900', }, { input: diff --git a/packages/cli/test/utils/apply-prefix.test.ts b/packages/cli/test/utils/apply-prefix.test.ts new file mode 100644 index 00000000..dd13349d --- /dev/null +++ b/packages/cli/test/utils/apply-prefix.test.ts @@ -0,0 +1,42 @@ +import { describe, expect, it } from 'vitest' + +import { applyPrefix } from '../../src/utils/transformers/transform-tw-prefix' + +describe('apply tailwind prefix', () => { + it.each([ + { + input: 'bg-slate-800 text-gray-500', + output: 'tw-bg-slate-800 tw-text-gray-500', + }, + { + input: 'hover:dark:bg-background dark:text-foreground', + output: 'hover:dark:tw-bg-background dark:tw-text-foreground', + }, + { + input: + 'rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50', + output: + 'tw-rounded-lg tw-border tw-border-slate-200 tw-bg-white tw-text-slate-950 tw-shadow-sm dark:tw-border-slate-800 dark:tw-bg-slate-950 dark:tw-text-slate-50', + }, + { + input: + 'text-red-500 border-red-500/50 dark:border-red-500 [&>svg]:text-red-500 text-red-500 dark:text-red-900 dark:border-red-900/50 dark:dark:border-red-900 dark:[&>svg]:text-red-900 dark:text-red-900', + output: + 'tw-text-red-500 tw-border-red-500/50 dark:tw-border-red-500 [&>svg]:tw-text-red-500 tw-text-red-500 dark:tw-text-red-900 dark:tw-border-red-900/50 dark:dark:tw-border-red-900 dark:[&>svg]:tw-text-red-900 dark:tw-text-red-900', + }, + { + input: + 'flex h-full w-full items-center justify-center rounded-full bg-muted', + output: + 'tw-flex tw-h-full tw-w-full tw-items-center tw-justify-center tw-rounded-full tw-bg-muted', + }, + { + input: + 'absolute right-4 top-4 bg-primary rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary', + output: + 'tw-absolute tw-right-4 tw-top-4 tw-bg-primary tw-rounded-sm tw-opacity-70 tw-ring-offset-background tw-transition-opacity hover:tw-opacity-100 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-ring focus:tw-ring-offset-2 disabled:tw-pointer-events-none data-[state=open]:tw-bg-secondary', + }, + ])(`applyTwPrefix($input) -> $output`, ({ input, output }) => { + expect(applyPrefix(input, 'tw-')).toBe(output) + }) +}) diff --git a/packages/cli/test/utils/get-config.test.ts b/packages/cli/test/utils/get-config.test.ts index f875f2b5..44399044 100644 --- a/packages/cli/test/utils/get-config.test.ts +++ b/packages/cli/test/utils/get-config.test.ts @@ -1,9 +1,9 @@ -import path from 'node:path' -import { expect, test } from 'vitest' +import path from 'pathe' +import { expect, it } from 'vitest' import { getConfig, getRawConfig } from '../../src/utils/get-config' -test('get raw config', async () => { +it('get raw config', async () => { expect( await getRawConfig(path.resolve(__dirname, '../fixtures/config-none')), ).toEqual(null) @@ -31,7 +31,7 @@ test('get raw config', async () => { ).rejects.toThrowError() }) -test('get config', async () => { +it('get config', async () => { expect( await getConfig(path.resolve(__dirname, '../fixtures/config-none')), ).toEqual(null) @@ -71,6 +71,11 @@ test('get config', async () => { '../fixtures/config-partial', './components', ), + ui: path.resolve( + __dirname, + '../fixtures/config-partial', + './components', + ), utils: path.resolve( __dirname, '../fixtures/config-partial', @@ -89,9 +94,11 @@ test('get config', async () => { baseColor: 'zinc', css: 'src/app/globals.css', cssVariables: true, + prefix: 'tw-', }, aliases: { components: '~/components', + ui: '~/ui', utils: '~/lib/utils', }, framework: 'Vite', @@ -111,6 +118,11 @@ test('get config', async () => { '../fixtures/config-full', './src/components', ), + ui: path.resolve( + __dirname, + '../fixtures/config-full', + './src/ui', + ), utils: path.resolve( __dirname, '../fixtures/config-full', @@ -152,6 +164,11 @@ test('get config', async () => { '../fixtures/config-js', './components', ), + ui: path.resolve( + __dirname, + '../fixtures/config-js', + './components', + ), utils: path.resolve(__dirname, '../fixtures/config-js', './lib/utils'), }, }) diff --git a/packages/cli/test/utils/get-package-manager.test.ts b/packages/cli/test/utils/get-package-manager.test.ts deleted file mode 100644 index b8b516c6..00000000 --- a/packages/cli/test/utils/get-package-manager.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from 'node:path' -import { expect, test } from 'vitest' - -import { getPackageManager } from '../../src/utils/get-package-manager' - -test('get package manager', async () => { - expect( - await getPackageManager(path.resolve(__dirname, '../fixtures/project-yarn')), - ).toBe('yarn') - - expect( - await getPackageManager(path.resolve(__dirname, '../fixtures/project-npm')), - ).toBe('npm') - - expect( - await getPackageManager(path.resolve(__dirname, '../fixtures/project-pnpm')), - ).toBe('pnpm') - - expect( - await getPackageManager(path.resolve(__dirname, '../fixtures/project-bun')), - ).toBe('bun') - - expect( - await getPackageManager(path.resolve(__dirname, '../fixtures/next')), - ).toBe('pnpm') -}) diff --git a/packages/cli/test/utils/resolve-import.test.ts b/packages/cli/test/utils/resolve-import.test.ts index d3115966..81c23f76 100644 --- a/packages/cli/test/utils/resolve-import.test.ts +++ b/packages/cli/test/utils/resolve-import.test.ts @@ -1,4 +1,4 @@ -import path from 'node:path' +import path from 'pathe' import { type ConfigLoaderSuccessResult, loadConfig } from 'tsconfig-paths' import { expect, test } from 'vitest' diff --git a/packages/cli/test/utils/transform-css-vars.test.ts b/packages/cli/test/utils/transform-css-vars.test.ts index 85f18182..c0ddd280 100644 --- a/packages/cli/test/utils/transform-css-vars.test.ts +++ b/packages/cli/test/utils/transform-css-vars.test.ts @@ -1,9 +1,9 @@ -import { expect, test } from 'vitest' +import { expect, it } from 'vitest' import { transform } from '../../src/utils/transformers' import stone from '../fixtures/colors/stone.json' -test('transform css vars', async () => { +it('transform css vars', async () => { expect( await transform({ filename: 'app.vue', diff --git a/packages/cli/test/utils/transform-sfc.test.ts b/packages/cli/test/utils/transform-sfc.test.ts index d50851b8..9c362ae1 100644 --- a/packages/cli/test/utils/transform-sfc.test.ts +++ b/packages/cli/test/utils/transform-sfc.test.ts @@ -1,4 +1,4 @@ -import { resolve } from 'node:path' +import { resolve } from 'pathe' import { describe, expect, test } from 'vitest' import { transform } from '../../src/utils/transformers' diff --git a/packages/cli/test/utils/transform-tw-prefix.test.ts b/packages/cli/test/utils/transform-tw-prefix.test.ts new file mode 100644 index 00000000..3ecb1e7f --- /dev/null +++ b/packages/cli/test/utils/transform-tw-prefix.test.ts @@ -0,0 +1,115 @@ +import { expect, it } from 'vitest' + +import { transform } from '../../src/utils/transformers' +import { applyPrefixesCss } from '../../src/utils/transformers/transform-tw-prefix' +import stone from '../fixtures/colors/stone.json' + +it('transform tailwind prefix', async () => { + // expect( + // await transform({ + // filename: 'test.ts', + // raw: `const testVariants = cva( + // 'bg-background hover:bg-muted text-primary-foreground sm:focus:text-accent-foreground', + // { + // variants: { + // variant: { + // default: 'bg-primary text-primary-foreground hover:bg-primary/90', + // }, + // size: { + // default: 'h-10 px-4 py-2', + // }, + // }, + // }, + // )`, + // config: { + // tailwind: { + // baseColor: 'stone', + // prefix: 'tw-', + // }, + // aliases: { + // components: '@/components', + // utils: '@/lib/utils', + // }, + // }, + // baseColor: 'stone', + // }), + // ).toMatchSnapshot() + + // expect( + // await transform({ + // filename: 'app.vue', + // raw: ` + // `, + // config: { + // tailwind: { + // baseColor: 'stone', + // prefix: 'tw-', + // }, + // aliases: { + // components: '@/components', + // utils: '@/lib/utils', + // }, + // }, + // baseColor: 'stone', + // }), + // ).toMatchSnapshot() + + // expect( + // await transform({ + // filename: 'app.vue', + // raw: ` + // `, + // config: { + // tailwind: { + // baseColor: 'stone', + // cssVariables: false, + // prefix: 'tw-', + // }, + // aliases: { + // components: '@/components', + // utils: '@/lib/utils', + // }, + // }, + // baseColor: stone, + // }), + // ).toMatchSnapshot() + + // expect( + // await transform({ + // filename: 'app.vue', + // raw: ` + // `, + // config: { + // tailwind: { + // baseColor: 'stone', + // cssVariables: false, + // prefix: 'tw-', + // }, + // aliases: { + // components: '@/components', + // utils: '@/lib/utils', + // }, + // }, + // baseColor: stone, + // }), + // ).toMatchSnapshot() + + // expect( + // applyPrefixesCss( + // '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 224 71.4% 4.1%;\n \n --muted: 220 14.3% 95.9%;\n --muted-foreground: 220 8.9% 46.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 224 71.4% 4.1%;\n \n --card: 0 0% 100%;\n --card-foreground: 224 71.4% 4.1%;\n \n --border: 220 13% 91%;\n --input: 220 13% 91%;\n \n --primary: 220.9 39.3% 11%;\n --primary-foreground: 210 20% 98%;\n \n --secondary: 220 14.3% 95.9%;\n --secondary-foreground: 220.9 39.3% 11%;\n \n --accent: 220 14.3% 95.9%;\n --accent-foreground: 220.9 39.3% 11%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 20% 98%;\n \n --ring: 217.9 10.6% 64.9%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 224 71.4% 4.1%;\n --foreground: 210 20% 98%;\n \n --muted: 215 27.9% 16.9%;\n --muted-foreground: 217.9 10.6% 64.9%;\n \n --popover: 224 71.4% 4.1%;\n --popover-foreground: 210 20% 98%;\n \n --card: 224 71.4% 4.1%;\n --card-foreground: 210 20% 98%;\n \n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n \n --primary: 210 20% 98%;\n --primary-foreground: 220.9 39.3% 11%;\n \n --secondary: 215 27.9% 16.9%;\n --secondary-foreground: 210 20% 98%;\n \n --accent: 215 27.9% 16.9%;\n --accent-foreground: 210 20% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 85.7% 97.3%;\n \n --ring: 215 27.9% 16.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}', + // 'tw-', + // ), + // ).toMatchSnapshot() +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e147f33..be240539 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,109 +198,103 @@ importers: packages/cli: dependencies: - '@antfu/ni': - specifier: ^0.21.8 - version: 0.21.12 '@babel/core': - specifier: ^7.22.17 - version: 7.23.9 + specifier: ^7.24.0 + version: 7.24.0 '@babel/parser': - specifier: ^7.22.16 - version: 7.23.9 - '@babel/plugin-transform-typescript': - specifier: ^7.22.15 - version: 7.23.6(@babel/core@7.23.9) + specifier: ^7.24.0 + version: 7.24.0 '@vue/compiler-sfc': specifier: ^3.4 version: 3.4.19 - chalk: - specifier: 5.3.0 - version: 5.3.0 + c12: + specifier: ^1.9.0 + version: 1.9.0 commander: - specifier: ^11.0.0 - version: 11.1.0 - cosmiconfig: - specifier: ^8.3.6 - version: 8.3.6(typescript@5.3.3) + specifier: ^12.0.0 + version: 12.0.0 + consola: + specifier: ^3.2.3 + version: 3.2.3 detype: specifier: npm:detypes@^0.7.9 version: /detypes@0.7.9 diff: - specifier: ^5.1.0 - version: 5.1.0 - execa: - specifier: ^8.0.1 - version: 8.0.1 + specifier: ^5.2.0 + version: 5.2.0 fs-extra: - specifier: ^11.1.1 + specifier: ^11.2.0 version: 11.2.0 https-proxy-agent: - specifier: ^7.0.2 - version: 7.0.2 + specifier: ^7.0.4 + version: 7.0.4 lodash.template: specifier: ^4.5.0 version: 4.5.0 magic-string: - specifier: ^0.30.3 - version: 0.30.6 - node-fetch: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^0.30.8 + version: 0.30.8 + nypm: + specifier: ^0.3.8 + version: 0.3.8 + ofetch: + specifier: ^1.3.3 + version: 1.3.3 ora: - specifier: ^7.0.1 - version: 7.0.1 + specifier: ^8.0.1 + version: 8.0.1 + pathe: + specifier: ^1.1.2 + version: 1.1.2 prompts: specifier: ^2.4.2 version: 2.4.2 radix-vue: - specifier: ^1.4.8 - version: 1.4.8(vue@3.4.21) - recast: - specifier: ^0.23.4 - version: 0.23.4 - rimraf: - specifier: ^5.0.1 - version: 5.0.5 + specifier: ^1.4.9 + version: 1.4.9(vue@3.4.21) ts-morph: - specifier: ^19.0.0 - version: 19.0.0 + specifier: ^21.0.1 + version: 21.0.1 tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 - vite-tsconfig-paths: - specifier: ^4.2.1 - version: 4.3.1(typescript@5.3.3) zod: - specifier: ^3.22.2 + specifier: ^3.22.4 version: 3.22.4 devDependencies: '@types/babel__core': - specifier: ^7.20.1 + specifier: ^7.20.5 version: 7.20.5 '@types/diff': - specifier: ^5.0.3 + specifier: ^5.0.9 version: 5.0.9 '@types/fs-extra': - specifier: ^11.0.1 + specifier: ^11.0.4 version: 11.0.4 '@types/lodash.template': - specifier: ^4.5.1 + specifier: ^4.5.3 version: 4.5.3 + '@types/node': + specifier: ^20.11.24 + version: 20.11.24 '@types/prompts': - specifier: ^2.4.4 + specifier: ^2.4.9 version: 2.4.9 '@vitest/ui': specifier: ^0.34.4 version: 0.34.7(vitest@0.34.6) tsup: - specifier: ^7.2.0 - version: 7.3.0(typescript@5.3.3) + specifier: ^8.0.2 + version: 8.0.2(typescript@5.3.3) type-fest: - specifier: ^4.3.1 - version: 4.10.2 + specifier: ^4.10.3 + version: 4.10.3 typescript: - specifier: ^5.2.2 + specifier: ^5.3.3 version: 5.3.3 + vite-tsconfig-paths: + specifier: ^4.3.1 + version: 4.3.1(typescript@5.3.3) packages/module: dependencies: @@ -325,7 +319,7 @@ importers: version: 3.10.3(rollup@3.29.4) '@nuxt/test-utils': specifier: ^3.11.0 - version: 3.11.0(h3@1.10.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.2.5)(vue@3.4.21) + version: 3.11.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.3.0)(vue@3.4.21) '@types/node': specifier: ^20.11.24 version: 20.11.24 @@ -593,6 +587,7 @@ packages: /@antfu/ni@0.21.12: resolution: {integrity: sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==} hasBin: true + dev: true /@antfu/utils@0.7.7: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} @@ -619,7 +614,7 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@babel/template': 7.23.9 '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 @@ -630,12 +625,35 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true + + /@babel/core@7.24.0: + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 @@ -652,7 +670,7 @@ packages: dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.3 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -672,6 +690,24 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.24.0): + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} @@ -681,14 +717,14 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} @@ -700,7 +736,7 @@ packages: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -714,6 +750,20 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -735,12 +785,24 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} @@ -752,7 +814,7 @@ packages: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -775,6 +837,17 @@ packages: '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helpers@7.24.0: + resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} @@ -791,44 +864,51 @@ packages: dependencies: '@babel/types': 7.23.9 - /@babel/plugin-proposal-decorators@7.23.9(@babel/core@7.23.9): + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + + /@babel/plugin-proposal-decorators@7.23.9(@babel/core@7.24.0): resolution: {integrity: sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.24.0) dev: true - /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -840,6 +920,16 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} @@ -849,15 +939,25 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 + dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: false @@ -873,19 +973,32 @@ packages: '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.24.0): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) + + /@babel/preset-typescript@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) dev: false /@babel/runtime@7.23.9: @@ -903,8 +1016,17 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@babel/types': 7.23.9 + dev: true + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 /@babel/traverse@7.23.9: resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} @@ -916,12 +1038,30 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@babel/types': 7.23.9 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/traverse@7.24.0: + resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color /@babel/types@7.23.9: resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} @@ -931,6 +1071,14 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@cloudflare/kv-asset-handler@0.3.1: resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} dependencies: @@ -1971,7 +2119,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 local-pkg: 0.5.0 - mlly: 1.5.0 + mlly: 1.6.1 transitivePeerDependencies: - supports-color dev: true @@ -2168,7 +2316,7 @@ packages: dependencies: agent-base: 7.1.0 http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 lru-cache: 10.2.0 socks-proxy-agent: 8.0.2 transitivePeerDependencies: @@ -2193,7 +2341,7 @@ packages: resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /@npmcli/git@5.0.4: @@ -2206,7 +2354,7 @@ packages: proc-log: 3.0.0 promise-inflight: 1.0.1(bluebird@3.7.2) promise-retry: 2.0.1 - semver: 7.5.4 + semver: 7.6.0 which: 4.0.0 transitivePeerDependencies: - bluebird @@ -2302,7 +2450,7 @@ packages: hasBin: true dependencies: consola: 3.2.3 - diff: 5.1.0 + diff: 5.2.0 execa: 7.2.0 global-directory: 4.0.1 magicast: 0.3.3 @@ -2310,7 +2458,7 @@ packages: pkg-types: 1.0.3 prompts: 2.4.2 rc9: 2.1.1 - semver: 7.5.4 + semver: 7.6.0 dev: true /@nuxt/devtools@1.0.8(nuxt@3.10.3)(rollup@3.29.4)(vite@5.1.4): @@ -2339,7 +2487,7 @@ packages: local-pkg: 0.5.0 magicast: 0.3.3 nuxt: 3.10.3(@types/node@20.11.24)(eslint@8.57.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.1.4) - nypm: 0.3.6 + nypm: 0.3.8 ohash: 1.1.3 pacote: 17.0.6 pathe: 1.1.2 @@ -2470,7 +2618,7 @@ packages: - supports-color dev: true - /@nuxt/test-utils@3.11.0(h3@1.10.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.2.5)(vue@3.4.21): + /@nuxt/test-utils@3.11.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.3.0)(vue@3.4.21): resolution: {integrity: sha512-9ovgpQZkZpVg/MhYVVn2169WjH/IL0XUqwGryTa/lkx0/BCi1LMVEp3HTPkmt4qbRcxitO+kL4vFqqrFGVaSVg==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: @@ -2517,9 +2665,9 @@ packages: execa: 8.0.1 fake-indexeddb: 5.0.2 get-port-please: 3.1.2 - h3: 1.10.1 + h3: 1.11.1 local-pkg: 0.5.0 - magic-string: 0.30.7 + magic-string: 0.30.8 node-fetch-native: 1.6.1 ofetch: 1.3.3 pathe: 1.1.2 @@ -2532,9 +2680,9 @@ packages: unplugin: 1.6.0 vite: 5.1.4(@types/node@20.11.24) vitest: 0.33.0 - vitest-environment-nuxt: 1.0.0(h3@1.10.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.2.5)(vue@3.4.21) + vitest-environment-nuxt: 1.0.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.3.0)(vue@3.4.21) vue: 3.4.21(typescript@5.3.3) - vue-router: 4.2.5(vue@3.4.21) + vue-router: 4.3.0(vue@3.4.21) transitivePeerDependencies: - rollup - supports-color @@ -2566,7 +2714,7 @@ packages: get-port-please: 3.1.2 h3: 1.11.1 knitwork: 1.0.0 - magic-string: 0.30.7 + magic-string: 0.30.8 mlly: 1.6.1 ohash: 1.1.3 pathe: 1.1.2 @@ -2865,7 +3013,7 @@ packages: estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.7 + magic-string: 0.30.8 rollup: 3.29.4 dev: true @@ -2883,7 +3031,7 @@ packages: estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.7 + magic-string: 0.30.8 rollup: 4.10.0 dev: true @@ -2898,7 +3046,7 @@ packages: dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.10.0) estree-walker: 2.0.2 - magic-string: 0.30.7 + magic-string: 0.30.8 rollup: 4.10.0 dev: true @@ -2974,7 +3122,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - magic-string: 0.30.7 + magic-string: 0.30.8 rollup: 3.29.4 dev: true @@ -2988,7 +3136,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.10.0) - magic-string: 0.30.7 + magic-string: 0.30.8 rollup: 4.10.0 dev: true @@ -3065,14 +3213,6 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm-eabi@4.9.6: - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-android-arm64@4.10.0: resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==} cpu: [arm64] @@ -3081,14 +3221,6 @@ packages: dev: true optional: true - /@rollup/rollup-android-arm64@4.9.6: - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-arm64@4.10.0: resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==} cpu: [arm64] @@ -3097,14 +3229,6 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-arm64@4.9.6: - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-darwin-x64@4.10.0: resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==} cpu: [x64] @@ -3113,14 +3237,6 @@ packages: dev: true optional: true - /@rollup/rollup-darwin-x64@4.9.6: - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.10.0: resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==} cpu: [arm] @@ -3129,14 +3245,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.6: - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm64-gnu@4.10.0: resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==} cpu: [arm64] @@ -3145,14 +3253,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-arm64-musl@4.10.0: resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==} cpu: [arm64] @@ -3161,14 +3261,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-riscv64-gnu@4.10.0: resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==} cpu: [riscv64] @@ -3177,14 +3269,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-x64-gnu@4.10.0: resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==} cpu: [x64] @@ -3193,14 +3277,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.9.6: - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-linux-x64-musl@4.10.0: resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==} cpu: [x64] @@ -3209,14 +3285,6 @@ packages: dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.9.6: - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-arm64-msvc@4.10.0: resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} cpu: [arm64] @@ -3225,14 +3293,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.6: - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-ia32-msvc@4.10.0: resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} cpu: [ia32] @@ -3241,14 +3301,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.6: - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@rollup/rollup-win32-x64-msvc@4.10.0: resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} cpu: [x64] @@ -3257,14 +3309,6 @@ packages: dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.9.6: - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@rushstack/eslint-patch@1.7.2: resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} dev: true @@ -3431,12 +3475,12 @@ packages: engines: {node: '>=10.13.0'} dev: true - /@ts-morph/common@0.20.0: - resolution: {integrity: sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==} + /@ts-morph/common@0.22.0: + resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} dependencies: fast-glob: 3.3.2 - minimatch: 7.4.6 - mkdirp: 2.1.6 + minimatch: 9.0.3 + mkdirp: 3.0.1 path-browserify: 1.0.1 dev: false @@ -3456,7 +3500,7 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@babel/types': 7.23.9 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -3472,7 +3516,7 @@ packages: /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@babel/types': 7.23.9 dev: true @@ -3719,7 +3763,7 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.11.16 + '@types/node': 20.11.24 dev: true /@types/geojson@7946.0.14: @@ -3796,12 +3840,6 @@ packages: resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} dev: true - /@types/node@20.11.16: - resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} - dependencies: - undici-types: 5.26.5 - dev: true - /@types/node@20.11.24: resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==} dependencies: @@ -3822,7 +3860,7 @@ packages: /@types/prompts@2.4.9: resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.24 kleur: 3.0.3 dev: true @@ -3924,7 +3962,7 @@ packages: graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 + semver: 7.6.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -4096,7 +4134,7 @@ packages: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.5.4 + semver: 7.6.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -4160,7 +4198,7 @@ packages: '@typescript-eslint/types': 6.20.0 '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) eslint: 8.57.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -4424,7 +4462,7 @@ packages: /@vitest/snapshot@0.33.0: resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.7 + magic-string: 0.30.8 pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -4432,7 +4470,7 @@ packages: /@vitest/snapshot@0.34.6: resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.6 + magic-string: 0.30.8 pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -4555,6 +4593,30 @@ packages: - supports-color dev: true + /@vue/babel-plugin-jsx@1.2.1(@babel/core@7.24.0): + resolution: {integrity: sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + '@vue/babel-helper-vue-transform-on': 1.2.1 + '@vue/babel-plugin-resolve-type': 1.2.1(@babel/core@7.24.0) + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /@vue/babel-plugin-resolve-type@1.2.1(@babel/core@7.23.9): resolution: {integrity: sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==} peerDependencies: @@ -4564,14 +4626,27 @@ packages: '@babel/core': 7.23.9 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 + '@vue/compiler-sfc': 3.4.19 + dev: true + + /@vue/babel-plugin-resolve-type@1.2.1(@babel/core@7.24.0): + resolution: {integrity: sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/parser': 7.24.0 '@vue/compiler-sfc': 3.4.19 dev: true /@vue/compiler-core@3.4.19: resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@vue/shared': 3.4.19 entities: 4.5.0 estree-walker: 2.0.2 @@ -4601,26 +4676,26 @@ packages: /@vue/compiler-sfc@3.4.19: resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@vue/compiler-core': 3.4.19 '@vue/compiler-dom': 3.4.19 '@vue/compiler-ssr': 3.4.19 '@vue/shared': 3.4.19 estree-walker: 2.0.2 - magic-string: 0.30.7 + magic-string: 0.30.8 postcss: 8.4.35 source-map-js: 1.0.2 /@vue/compiler-sfc@3.4.21: resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 estree-walker: 2.0.2 - magic-string: 0.30.7 + magic-string: 0.30.8 postcss: 8.4.35 source-map-js: 1.0.2 @@ -5065,6 +5140,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -5075,16 +5151,6 @@ packages: engines: {node: '>=8'} dev: true - /assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - dependencies: - call-bind: 1.0.5 - is-nan: 1.3.2 - object-is: 1.1.5 - object.assign: 4.1.5 - util: 0.12.5 - dev: false - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5093,7 +5159,7 @@ packages: resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@rollup/pluginutils': 5.1.0(rollup@3.29.4) pathe: 1.1.2 transitivePeerDependencies: @@ -5104,25 +5170,18 @@ packages: resolution: {integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@rollup/pluginutils': 5.1.0(rollup@3.29.4) pathe: 1.1.2 transitivePeerDependencies: - rollup dev: true - /ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.2 - dev: false - /ast-walker-scope@0.5.0(rollup@3.29.4): resolution: {integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 ast-kit: 0.9.5(rollup@3.29.4) transitivePeerDependencies: - rollup @@ -5152,11 +5211,6 @@ packages: postcss-value-parser: 4.2.0 dev: true - /available-typed-arrays@1.0.6: - resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} - engines: {node: '>= 0.4'} - dev: false - /axios@0.18.1: resolution: {integrity: sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==} deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 @@ -5183,10 +5237,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -5213,14 +5263,6 @@ packages: safe-buffer: 5.2.1 dev: false - /bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -5258,16 +5300,6 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.22.3: - resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001583 - electron-to-chromium: 1.4.656 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.3) - /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5277,7 +5309,6 @@ packages: electron-to-chromium: 1.4.690 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} @@ -5301,13 +5332,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -5320,7 +5344,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /bumpp@9.3.1: @@ -5357,13 +5381,13 @@ packages: /c12@1.9.0: resolution: {integrity: sha512-7KTCZXdIbOA2hLRQ+1KzJ15Qp9Wn58one74dkihMVp2H6EzKTa3OYBy0BSfS1CCcmxYyqeX8L02m40zjQ+dstg==} dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 confbox: 0.1.3 defu: 6.1.4 dotenv: 16.4.1 giget: 1.2.1 jiti: 1.21.0 - mlly: 1.5.0 + mlly: 1.6.1 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 @@ -5429,14 +5453,6 @@ packages: y18n: 3.2.2 dev: false - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.3 - set-function-length: 1.2.0 - dev: false - /call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} dev: true @@ -5468,12 +5484,8 @@ packages: lodash.uniq: 4.5.0 dev: true - /caniuse-lite@1.0.30001583: - resolution: {integrity: sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==} - /caniuse-lite@1.0.30001593: resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} - dev: true /capture-stack-trace@1.0.2: resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} @@ -5585,6 +5597,11 @@ packages: dependencies: consola: 3.2.3 + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + dependencies: + consola: 3.2.3 + /class-variance-authority@0.7.0: resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} dependencies: @@ -5765,6 +5782,12 @@ packages: /commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + dev: true + + /commander@12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} + dev: false /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -5898,7 +5921,7 @@ packages: /core-js-compat@3.36.0: resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 dev: true /core-util-is@1.0.3: @@ -5943,6 +5966,7 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.3.3 + dev: true /crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} @@ -6425,11 +6449,6 @@ packages: engines: {node: '>=12'} dev: true - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: false - /datauri@3.0.0: resolution: {integrity: sha512-NeDFuUPV1YCpCn8MUIcDk1QnuyenUHs7f4Q5P0n9FFA0neKFrfEH9esR+YMW95BplbYfdmjbs0Pl/ZGAaM2QHQ==} engines: {node: '>= 8'} @@ -6538,15 +6557,6 @@ packages: default-browser-id: 5.0.0 dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: false - /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -6557,15 +6567,6 @@ packages: engines: {node: '>=12'} dev: true - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 - object-keys: 1.1.1 - dev: false - /defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -6591,10 +6592,10 @@ packages: /destr@2.0.2: resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} + dev: true /destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - dev: true /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -6622,8 +6623,8 @@ packages: engines: {node: '>=18'} hasBin: true dependencies: - '@babel/core': 7.23.9 - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.0 + '@babel/preset-typescript': 7.23.3(@babel/core@7.24.0) '@vue/compiler-dom': 3.4.19 '@vue/compiler-sfc': 3.4.19 '@vuedx/template-ast-types': 0.7.1 @@ -6646,8 +6647,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} /dir-glob@3.0.1: @@ -6755,12 +6756,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.656: - resolution: {integrity: sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==} - /electron-to-chromium@1.4.690: resolution: {integrity: sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==} - dev: true /elkjs@0.8.2: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} @@ -6860,11 +6857,6 @@ packages: resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} dev: true - /es-errors@1.0.0: - resolution: {integrity: sha512-yHV74THqMJUyFKkHyN7hyENcEZM3Dj2a2IrdClY+IT4BFQHkIVwlh8s6uZfjsFydMdNHv0F5mWgAA3ajFbsvVQ==} - engines: {node: '>= 0.4'} - dev: false - /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} dev: false @@ -7304,7 +7296,7 @@ packages: natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.15 - semver: 7.5.4 + semver: 7.6.0 vue-eslint-parser: 9.4.2(eslint@8.57.0) xml-name-validator: 4.0.0 transitivePeerDependencies: @@ -7429,12 +7421,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false - /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -7604,14 +7590,6 @@ packages: dependencies: reusify: 1.0.4 - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.2 - dev: false - /fflate@0.8.1: resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} dev: true @@ -7733,12 +7711,6 @@ packages: - supports-color dev: false - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: false - /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -7746,13 +7718,6 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: false - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true @@ -7869,23 +7834,11 @@ packages: /get-east-asian-width@1.2.0: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} - dev: true /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.3: - resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.0.0 - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - dev: false - /get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} dev: true @@ -7917,7 +7870,7 @@ packages: consola: 3.2.3 defu: 6.1.4 node-fetch-native: 1.6.1 - nypm: 0.3.6 + nypm: 0.3.8 ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.0 @@ -8122,13 +8075,7 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.3 - dev: false + dev: true /got@6.7.1: resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} @@ -8163,20 +8110,6 @@ packages: duplexer: 0.1.2 dev: true - /h3@1.10.1: - resolution: {integrity: sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==} - dependencies: - cookie-es: 1.0.0 - defu: 6.1.4 - destr: 2.0.2 - iron-webcrypto: 1.0.0 - ohash: 1.1.3 - radix3: 1.1.0 - ufo: 1.3.2 - uncrypto: 0.1.3 - unenv: 1.9.0 - dev: true - /h3@1.11.1: resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} dependencies: @@ -8203,29 +8136,6 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - dependencies: - get-intrinsic: 1.2.3 - dev: false - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: false - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: false - - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: true @@ -8333,8 +8243,8 @@ packages: - supports-color dev: true - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -8524,14 +8434,6 @@ packages: is-decimal: 1.0.4 dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.2 - dev: false - /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -8553,11 +8455,6 @@ packages: builtin-modules: 3.3.0 dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false - /is-ci@1.2.1: resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} hasBin: true @@ -8616,13 +8513,6 @@ packages: get-east-asian-width: 1.2.0 dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -8670,14 +8560,6 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - /is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - dev: false - /is-npm@1.0.0: resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==} engines: {node: '>=0.10.0'} @@ -8766,18 +8648,16 @@ packages: text-extensions: 2.4.0 dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.14 - dev: false - /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} dev: false + /is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + dev: false + /is-windows@0.2.0: resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} engines: {node: '>=0.10.0'} @@ -8858,6 +8738,7 @@ packages: hasBin: true dependencies: argparse: 2.0.1 + dev: true /jsdoc-type-pratt-parser@4.0.0: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} @@ -9095,7 +8976,7 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.5.0 + mlly: 1.6.1 pkg-types: 1.0.3 /locate-path@5.0.0: @@ -9199,9 +9080,9 @@ packages: chalk: 2.4.2 dev: false - /log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} + /log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 @@ -9268,17 +9149,11 @@ packages: resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==} engines: {node: '>=16.14.0'} dependencies: - magic-string: 0.30.7 + magic-string: 0.30.8 dev: true - /magic-string@0.30.6: - resolution: {integrity: sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - /magic-string@0.30.7: - resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -9286,7 +9161,7 @@ packages: /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: - '@babel/parser': 7.23.9 + '@babel/parser': 7.24.0 '@babel/types': 7.23.9 source-map-js: 1.0.2 dev: true @@ -9476,13 +9351,6 @@ packages: brace-expansion: 2.0.1 dev: true - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -9610,8 +9478,8 @@ packages: engines: {node: '>=10'} hasBin: true - /mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true dev: false @@ -9636,7 +9504,7 @@ packages: fs-extra: 11.2.0 globby: 13.2.2 jiti: 1.21.0 - mlly: 1.5.0 + mlly: 1.6.1 mri: 1.2.0 pathe: 1.1.2 postcss: 8.4.35 @@ -9650,7 +9518,8 @@ packages: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.2 + ufo: 1.4.0 + dev: true /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} @@ -9788,7 +9657,7 @@ packages: klona: 2.0.6 knitwork: 1.0.0 listhen: 1.6.0 - magic-string: 0.30.7 + magic-string: 0.30.8 mime: 3.0.0 mlly: 1.6.1 mri: 1.2.0 @@ -9837,11 +9706,6 @@ packages: engines: {node: ^16 || ^18 || >= 20} dev: true - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: false - /node-fetch-native@1.6.1: resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==} @@ -9867,15 +9731,6 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: false - /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -9938,7 +9793,7 @@ packages: dependencies: hosted-git-info: 7.0.1 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 dev: true @@ -9962,7 +9817,7 @@ packages: resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /npm-normalize-package-bin@3.0.1: @@ -9976,7 +9831,7 @@ packages: dependencies: hosted-git-info: 7.0.1 proc-log: 3.0.0 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-name: 5.0.0 dev: true @@ -10010,7 +9865,7 @@ packages: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 11.0.1 - semver: 7.5.4 + semver: 7.6.0 dev: true /npm-registry-fetch@16.1.0: @@ -10113,11 +9968,11 @@ packages: jiti: 1.21.0 klona: 2.0.6 knitwork: 1.0.0 - magic-string: 0.30.7 + magic-string: 0.30.8 mlly: 1.6.1 nitropack: 2.8.1 nuxi: 3.10.1 - nypm: 0.3.6 + nypm: 0.3.8 ofetch: 1.3.3 ohash: 1.1.3 pathe: 1.1.2 @@ -10178,15 +10033,16 @@ packages: - xml2js dev: true - /nypm@0.3.6: - resolution: {integrity: sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==} + /nypm@0.3.8: + resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true dependencies: - citty: 0.1.5 + citty: 0.1.6 + consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 - ufo: 1.3.2 + ufo: 1.4.0 /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -10196,36 +10052,12 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - dev: false - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false - - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - /ofetch@1.3.3: resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} dependencies: - destr: 2.0.2 + destr: 2.0.3 node-fetch-native: 1.6.1 - ufo: 1.3.2 - dev: true + ufo: 1.4.0 /ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} @@ -10321,18 +10153,18 @@ packages: log-symbols: 2.2.0 dev: false - /ora@7.0.1: - resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} - engines: {node: '>=16'} + /ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - stdin-discarder: 0.1.0 - string-width: 6.1.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.1.0 strip-ansi: 7.1.0 dev: false @@ -10685,7 +10517,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.1 - mlly: 1.5.0 + mlly: 1.6.1 pathe: 1.1.2 /pluralize@8.0.0: @@ -11197,17 +11029,6 @@ packages: resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} dev: false - /radix-vue@1.4.8(vue@3.4.21): - resolution: {integrity: sha512-DDCA9QjyBpV9iOyUrSWjK8B5j78aFKZFl8DRGKYeR7l4nIejtxulVyWzaCk4lv+KXmupyP9SXC4LlC3AGjeR5w==} - dependencies: - '@floating-ui/dom': 1.6.1 - '@floating-ui/vue': 1.0.6(vue@3.4.21) - fast-deep-equal: 3.1.3 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - /radix-vue@1.4.9(vue@3.4.21): resolution: {integrity: sha512-xGY29nUqaAJTncubdhevwGuv5ZSHGvZjUinWBXVrwHvo6oeJ/SLudxYuc3qRcAU+DK+OcthEQFq255wLJJe4Rw==} dependencies: @@ -11238,7 +11059,7 @@ packages: resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} dependencies: defu: 6.1.4 - destr: 2.0.2 + destr: 2.0.3 flat: 5.0.2 /rc@1.2.8: @@ -11315,6 +11136,7 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: true /readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} @@ -11328,17 +11150,6 @@ packages: dependencies: picomatch: 2.3.1 - /recast@0.23.4: - resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} - engines: {node: '>= 4'} - dependencies: - assert: 2.1.0 - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.6.2 - dev: false - /redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -11491,6 +11302,7 @@ packages: hasBin: true dependencies: glob: 10.3.10 + dev: true /robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} @@ -11503,7 +11315,7 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 dependencies: - magic-string: 0.30.7 + magic-string: 0.30.8 rollup: 3.29.4 typescript: 5.3.3 optionalDependencies: @@ -11574,29 +11386,6 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 - fsevents: 2.3.3 - dev: true - /run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -11727,17 +11516,6 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - function-bind: 1.1.2 - get-intrinsic: 1.2.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: false - /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true @@ -11932,6 +11710,7 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -12015,11 +11794,9 @@ packages: /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - /stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - bl: 5.1.0 + /stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} dev: false /stream-each@1.2.3: @@ -12069,15 +11846,6 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string-width@6.1.0: - resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} - engines: {node: '>=16'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 10.3.0 - strip-ansi: 7.1.0 - dev: false - /string-width@7.1.0: resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} engines: {node: '>=18'} @@ -12085,7 +11853,6 @@ packages: emoji-regex: 10.3.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 - dev: true /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -12096,6 +11863,7 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: true /strip-ansi@4.0.0: resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} @@ -12547,10 +12315,10 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-morph@19.0.0: - resolution: {integrity: sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==} + /ts-morph@21.0.1: + resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} dependencies: - '@ts-morph/common': 0.20.0 + '@ts-morph/common': 0.22.0 code-block-writer: 12.0.0 dev: false @@ -12565,7 +12333,7 @@ packages: optional: true dependencies: typescript: 5.3.3 - dev: false + dev: true /tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} @@ -12583,16 +12351,18 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@7.3.0(typescript@5.3.3): - resolution: {integrity: sha512-Ja1eaSRrE+QarmATlNO5fse2aOACYMBX+IZRKy1T+gpyH+jXgRrl5l4nHIQJQ1DoDgEjHDTw8cpE085UdBZuWQ==} + /tsup@8.0.2(typescript@5.3.3): + resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} - deprecated: Breaking node 16 hasBin: true peerDependencies: + '@microsoft/api-extractor': ^7.36.0 '@swc/core': ^1 postcss: ^8.4.12 typescript: '>=4.5.0' peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true '@swc/core': optional: true postcss: @@ -12602,7 +12372,7 @@ packages: dependencies: bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.4 esbuild: 0.19.12 execa: 5.1.1 @@ -12610,7 +12380,7 @@ packages: joycon: 3.1.1 postcss-load-config: 4.0.2(postcss@8.4.33) resolve-from: 5.0.0 - rollup: 4.9.6 + rollup: 4.10.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -12682,6 +12452,12 @@ packages: /type-fest@4.10.2: resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} engines: {node: '>=16'} + dev: false + + /type-fest@4.10.3: + resolution: {integrity: sha512-JLXyjizi072smKGGcZiAJDCNweT8J+AuRxmPZ1aG7TERg4ijx9REl8CNhbr36RV4qXqL1gO1FF9HL8OkVmmrsA==} + engines: {node: '>=16'} + dev: true /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -12694,6 +12470,7 @@ packages: /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true /ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} @@ -12725,9 +12502,9 @@ packages: globby: 13.2.2 hookable: 5.5.3 jiti: 1.21.0 - magic-string: 0.30.7 + magic-string: 0.30.8 mkdist: 1.4.0(typescript@5.3.3) - mlly: 1.5.0 + mlly: 1.6.1 pathe: 1.1.2 pkg-types: 1.0.3 pretty-bytes: 6.1.1 @@ -12747,7 +12524,7 @@ packages: '@antfu/utils': 0.7.7 defu: 6.1.4 jiti: 1.21.0 - mlly: 1.5.0 + mlly: 1.6.1 dev: true /uncrypto@0.1.3: @@ -12759,7 +12536,7 @@ packages: dependencies: acorn: 8.11.3 estree-walker: 3.0.3 - magic-string: 0.30.7 + magic-string: 0.30.8 unplugin: 1.8.0 /undici-types@5.26.5: @@ -12804,8 +12581,8 @@ packages: estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.7 - mlly: 1.5.0 + magic-string: 0.30.8 + mlly: 1.6.1 pathe: 1.1.2 pkg-types: 1.0.3 scule: 1.2.0 @@ -12823,8 +12600,8 @@ packages: estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.7 - mlly: 1.5.0 + magic-string: 0.30.8 + mlly: 1.6.1 pathe: 1.1.2 pkg-types: 1.0.3 scule: 1.2.0 @@ -12945,7 +12722,7 @@ packages: resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} dependencies: acorn: 8.11.3 - chokidar: 3.5.3 + chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 @@ -13027,7 +12804,7 @@ packages: resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} hasBin: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/standalone': 7.23.10 '@babel/types': 7.23.9 defu: 6.1.4 @@ -13042,16 +12819,6 @@ packages: engines: {node: '>=4'} dev: false - /update-browserslist-db@1.0.13(browserslist@4.22.3): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.3 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -13061,7 +12828,6 @@ packages: browserslist: 4.23.0 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /update-notifier@2.5.0: resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} @@ -13103,16 +12869,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.14 - dev: false - /v-calendar@3.1.2(@popperjs/core@2.11.8)(vue@3.4.21): resolution: {integrity: sha512-QDWrnp4PWCpzUblctgo4T558PrHgHzDtQnTeUNzKxfNf29FkCeFpwGd9bKjAqktaa2aJLcyRl45T5ln1ku34kg==} peerDependencies: @@ -13176,7 +12932,7 @@ packages: dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.5.0 + mlly: 1.6.1 pathe: 1.1.2 picocolors: 1.0.0 vite: 4.5.2(@types/node@20.11.24) @@ -13198,7 +12954,7 @@ packages: dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.5.0 + mlly: 1.6.1 pathe: 1.1.2 picocolors: 1.0.0 vite: 5.1.4(@types/node@20.11.24) @@ -13316,15 +13072,15 @@ packages: peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-decorators': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) - '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9) + '@babel/core': 7.24.0 + '@babel/plugin-proposal-decorators': 7.23.9(@babel/core@7.24.0) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) + '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.24.0) '@vue/compiler-dom': 3.4.21 kolorist: 1.8.0 - magic-string: 0.30.7 + magic-string: 0.30.8 vite: 5.1.4(@types/node@20.11.24) transitivePeerDependencies: - supports-color @@ -13344,7 +13100,7 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: false + dev: true /vite@4.5.2(@types/node@20.11.24): resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} @@ -13474,10 +13230,10 @@ packages: - universal-cookie dev: true - /vitest-environment-nuxt@1.0.0(h3@1.10.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.2.5)(vue@3.4.21): + /vitest-environment-nuxt@1.0.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.3.0)(vue@3.4.21): resolution: {integrity: sha512-AWMO9h4HdbaFdPWZw34gALFI8gbBiOpvfbyeZwHIPfh4kWg/TwElYHvYMQ61WPUlCGaS5LebfHkaI0WPyb//Iw==} dependencies: - '@nuxt/test-utils': 3.11.0(h3@1.10.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.2.5)(vue@3.4.21) + '@nuxt/test-utils': 3.11.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@0.33.0)(vue-router@4.3.0)(vue@3.4.21) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -13541,7 +13297,7 @@ packages: chai: 4.4.1 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.6 + magic-string: 0.30.8 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 @@ -13607,7 +13363,7 @@ packages: chai: 4.4.1 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.6 + magic-string: 0.30.8 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 @@ -13712,20 +13468,11 @@ packages: espree: 9.6.1 esquery: 1.5.0 lodash: 4.17.21 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color dev: true - /vue-router@4.2.5(vue@3.4.21): - resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} - peerDependencies: - vue: ^3.2.0 - dependencies: - '@vue/devtools-api': 6.5.1 - vue: 3.4.21(typescript@5.3.3) - dev: true - /vue-router@4.3.0(vue@3.4.21): resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==} peerDependencies: @@ -13794,11 +13541,6 @@ packages: resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} dev: true - /web-streams-polyfill@3.3.2: - resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} - engines: {node: '>= 8'} - dev: false - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true @@ -13829,17 +13571,6 @@ packages: webidl-conversions: 4.0.2 dev: true - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: false - /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true