diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..f80cd4540 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,233 @@ +# UserFrosting 6 Monorepo - AI Coding Agent Instructions + +## Architecture Overview + +**UserFrosting** is a PHP/JavaScript user management framework built on Slim, Twig, Eloquent ORM, Vue 3, and Vite. Version 6 is a **monorepo** containing multiple interdependent packages. + +### Sprinkle Architecture + +The core architectural pattern is **Sprinkles** - composable modules that extend functionality through dependency injection: + +- **Sprinkle Recipe**: Implements `SprinkleRecipe` interface with methods: + - `getName()`: Human-readable name + - `getPath()`: Absolute path to sprinkle directory + - `getSprinkles()`: Array of dependent sprinkle class names (loaded recursively, dependencies first) + - `getRoutes()`: Route definition classes + - `getServices()`: PHP-DI service provider classes + +- **Optional Recipe Interfaces**: + - `BakeryRecipe`: Custom CLI commands via `getBakeryCommands()` + - `MiddlewareRecipe`: PSR-15 middleware via `getMiddlewares()` + - `EventListenerRecipe`: Event listeners via `getEventListeners()` + - `TwigExtensionRecipe`: Twig extensions via `getTwigExtensions()` + - `MigrationRecipe`: Database migrations via `getMigrations()` + +**Example**: [MyApp.php](packages/skeleton/app/src/MyApp.php) depends on Core → Account → Admin sprinkles. Dependencies are resolved automatically by `SprinkleManager`. + +### Package Structure + +``` +packages/ + framework/ # Core abstractions (Sprinkle system, UniformResourceLocator, PHP-DI bridges) + sprinkle-core/ # Essential services (config, DB, Twig, sessions, i18n, alerts, throttling) + sprinkle-account/ # Authentication, users, roles, permissions + sprinkle-admin/ # Admin UI (users, roles, permissions management) + theme-pink-cupcake/# UIKit-based theme (optional) + skeleton/ # Full application template (dev entry point in monorepo) +``` + +`skeleton` is the main app that ties everything together. While it is the main entry point for the monorepo, it should be used on it's own by the end user, with other sprinkles added as dependencies through Composer and NPM. Skeleton is meant as a starting point for new projects, and each file can be customized as needed. + +## Dual Build System (PHP + TypeScript) + +### PHP Side + +- **Composer monorepo**: Managed by [symplify/monorepo-builder](https://github.com/symplify/monorepo-builder) +- **Critical**: Edit individual `packages/*/composer.json`, NOT root `composer.json` +- After edits: `vendor/bin/monorepo-builder merge` to sync root composer.json +- Composer type: `userfrosting-sprinkle` for packages + +### TypeScript/Frontend Side + +- **NPM workspaces**: All sprinkles are npm packages with frontend assets +- **Monorepo dev mode**: Uses `userfrosting:monorepo` export condition in package.json + - Points to source `.ts` files for HMR (Hot Module Reload) + - Vite resolves imports to source code, not dist builds + - Root [vite.config.ts](vite.config.ts) sets `conditions: ['userfrosting:monorepo', 'import']` + +- **Production build**: Each sprinkle builds to `dist/` with conditional exports + ```json + "exports": { + ".": { + "userfrosting:monorepo": "./app/assets/index.ts", // Dev: source + "import": "./dist/index.js", // Prod: built + "types": "./dist/index.d.ts" + } + } + ``` + +- **Key frontend pattern**: Sprinkles expose composables, stores, routes, views via subpath exports + - Example: `import { useAuthStore } from '@userfrosting/sprinkle-account/stores'` + - See [sprinkle-core/package.json](packages/sprinkle-core/package.json) exports + +## Critical Workflows + +### Development Servers + +**Option 1 - VS Code Task** (recommended): +```bash +# Run "==> Serve" task from Command Palette (Cmd/Ctrl+Shift+P) +# Starts both PHP + Vite in parallel +``` + +**Option 2 - Manual**: +```bash +# Terminal 1: PHP dev server +php bakery serve + +# Terminal 2: Vite dev server with HMR +npm run dev +``` + +App: http://localhost:8080 | Vite: http://localhost:5173 + +### Building Packages + +**Build all sprinkle TypeScript packages**: +```bash +npm run build +# Compiles each workspace to dist/ with type definitions +``` + +**Build specific sprinkle**: +```bash +npm run build:core # @userfrosting/sprinkle-core +npm run build:account # @userfrosting/sprinkle-account +npm run build:admin # @userfrosting/sprinkle-admin +npm run build:theme # @userfrosting/theme-pink-cupcake +``` + +**IMPORTANT**: The monorepo dev mode (`userfrosting:monorepo` condition) means Vite HMR works WITHOUT building. Only build when: +- Testing production builds +- Publishing to NPM +- Verifying type definitions + +### Testing + +**PHP tests** (PHPUnit): +```bash +# Run specific suite +vendor/bin/phpunit --testsuite="Core Sprinkle" +vendor/bin/phpunit --testsuite="Framework" + +# Or use VS Code task "PHPUnit" +``` + +**Frontend tests** (Vitest): +```bash +npm run test # Watch mode +npm run coverage # With coverage report +``` + +- Root [vitest.config.ts](vitest.config.ts) runs tests from all workspace packages +- Uses `happy-dom` environment +- Coverage: `_meta/_coverage/` + +### Database Setup + +```bash +php bakery bake # Run migrations + seeders +php bakery migrate # Migrations only +``` + +## Project Conventions + +### File Organization + +- **PHP**: `packages/*/app/src/` - Source code +- **PHP Tests**: `packages/*/app/tests/` - PHPUnit tests +- **Frontend**: `packages/*/app/assets/` - TypeScript/Vue source +- **Frontend Tests**: `packages/*/app/assets/tests/` - Vitest specs +- **Templates**: `packages/*/app/templates/` - Twig files (located via UniformResourceLocator) +- **Config**: `packages/*/app/config/` - YAML/PHP config files +- **Routes**: `packages/*/app/src/Routes/` - Slim route definitions + +### Naming Patterns + +- **Sprinkle class**: `{SprinkleName}` (e.g., `Core`, `Account`, `Admin`) +- **Service providers**: `*Service.php` (e.g., `DatabaseService`, `TwigService`) +- **Routes**: `*Routes.php` implementing `RouteDefinitionInterface` +- **Bakery commands**: `*Command.php` extending Symfony Console Command +- **Tests**: `*Test.php` for PHP, `*.spec.ts` for TypeScript + +### Dependency Injection + +Uses **PHP-DI** with autowiring enabled: +- Constructor injection preferred +- Attributes supported (`#[Inject]`) +- Service definitions in classes implementing `ServicesProviderInterface` +- Example: [TwigService.php](packages/sprinkle-core/app/src/ServicesProvider/TwigService.php) + +### Frontend State Management + +- **Pinia stores** for global state (persisted with `pinia-plugin-persistedstate`) +- Key stores: `useAuthStore`, `useConfigStore`, `useTranslator`, `useAlertsStore` +- Import pattern: `from '@userfrosting/sprinkle-*/stores'` + +### Vue Router Integration + +Routes defined per-sprinkle, merged in skeleton: +```typescript +// packages/skeleton/app/assets/router/index.ts +import AccountRoutes from '@userfrosting/sprinkle-account/routes' +import AdminRoutes from '@userfrosting/sprinkle-admin/routes' + +const router = createRouter({ + routes: [ + ...ErrorRoutes, + ...AccountRoutes, + ...AdminRoutes + ] +}) +``` + +## Release Process + +**Creating a new version** (handled by monorepo-builder): +```bash +vendor/bin/monorepo-builder release 6.0.1 # Specific version +vendor/bin/monorepo-builder release patch # Auto-increment patch +vendor/bin/monorepo-builder release minor # Auto-increment minor +``` + +This updates: +- All `packages/*/composer.json` versions +- All `packages/*/package.json` versions (via custom [NpmVersionWorker](utils/NpmVersionWorker.php)) +- Creates git tag +- Root composer.json + +**Publish to NPM**: +```bash +npm publish --access public --workspaces +``` + +## Common Pitfalls + +1. **Editing root composer.json directly**: Always edit package-level files, then merge +2. **Missing builds**: In prod, sprinkles need `dist/` built; in dev, monorepo mode bypasses this and MUST use source TS files +3. **Sprinkle order matters**: Dependencies are loaded first, then main sprinkle +4. **Vite HMR not working**: Check `userfrosting:monorepo` condition is set in root vite.config.ts +5. **PHP-DI not resolving**: Verify service provider is registered in sprinkle's `getServices()` + +## Key Files to Reference + +- [SprinkleManager.php](packages/framework/src/Sprinkle/SprinkleManager.php) - Sprinkle loading logic +- [Cupcake.php](packages/framework/src/Cupcake.php) - Base application class +- [MyApp.php](packages/skeleton/app/src/MyApp.php) - Example sprinkle implementation +- [vite.config.ts](vite.config.ts) - Monorepo Vite configuration +- [monorepo-builder.php](monorepo-builder.php) - Composer monorepo config + +## Resources + +- [Official Docs](https://learn.userfrosting.com) +- [Chat](https://chat.userfrosting.com) diff --git a/.github/workflows/Frontend.yml b/.github/workflows/Frontend.yml index e10641553..cf722c338 100644 --- a/.github/workflows/Frontend.yml +++ b/.github/workflows/Frontend.yml @@ -18,10 +18,10 @@ jobs: strategy: fail-fast: false matrix: - node_versions: [18, 20] + node_versions: [18, 22, 24] runs-on: ubuntu-latest - name: Skeleton Build - Node ${{ matrix.node_versions }} + name: Build - Node ${{ matrix.node_versions }} steps: - uses: actions/checkout@v4 @@ -33,14 +33,17 @@ jobs: - name: Install Dependencies run: npm ci - - name: Test + - name: Build Packages + run: npm run build + + - name: Build Skeleton run: npm run --workspace=userfrosting vite:build Coverage: strategy: fail-fast: false matrix: - node_versions: [18, 20] + node_versions: [18, 22, 24] runs-on: ubuntu-latest name: Test & Coverage - Node ${{ matrix.node_versions }} @@ -55,7 +58,7 @@ jobs: - name: Install Dependencies run: npm ci - - name: Test + - name: Test & Coverage run: npm run coverage - name: Upload coverage to Codecov @@ -82,7 +85,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install Dependencies run: npm ci diff --git a/.gitignore b/.gitignore index af211cb05..a5ab26c97 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,9 @@ vendor/ # Ignore node modules node_modules/ +# Ignore build output +packages/*/dist/ + # Ignore compiled assets public/assets/ diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 4f746378d..613603363 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -9,8 +9,8 @@ { "label": "==> Serve", "dependsOn": [ - "Workspace - Bakery Serve", - "Skeleton - Vite Dev" + "Bakery Serve", + "Vite Dev" ], "problemMatcher": [] }, @@ -19,67 +19,83 @@ * Workspace NPM Tasks */ { - "label": "Workspace - npm install", + "label": "npm install", "type": "shell", "command": "npm install" }, { - "label": "Workspace - npm update", + "label": "npm update", "type": "shell", "command": "npm update" }, { - "label": "Workspace - Format", + "label": "Format", "type": "shell", "command": "npm run format" }, { - "label": "Workspace - Type Check", + "label": "Type Check", "type": "shell", "command": "npm run typecheck" }, { - "label": "Workspace - Eslint", + "label": "Eslint", "type": "shell", "command": "npm run lint" }, { - "label": "Workspace - Tests", + "label": "Tests", "type": "shell", "command": "npm run test" }, { - "label": "Workspace - Coverage", + "label": "Coverage", "type": "shell", "command": "npm run coverage" }, + { + "label": "Vite Dev", + "type": "shell", + "command": "npm run dev", + "isBackground": true + }, + { + "label": "Build", + "type": "shell", + "command": "npm run build" + }, + { + "label": "Build - Skeleton", + "type": "shell", + "command": "npm run --workspace=userfrosting vite:build" + }, /** * Workspace PHP Tasks */ { - "label": "Workspace - Bakery Serve", + "label": "Bakery Serve", "type": "shell", "command": "php bakery serve", "isBackground": true }, { - "label": "Workspace - Composer Update", + "label": "Composer Update", "type": "shell", "command": "composer update" }, { - "label": "Workspace - Merge composer.json", + "label": "Merge composer.json", "type": "shell", "command": "vendor/bin/monorepo-builder merge" }, { - "label": "Workspace - Composer Validate", + "label": "Composer Validate", "type": "shell", "command": "vendor/bin/monorepo-builder validate" }, { - "label": "Workspace - PHPUnit", + "label": "PHPUnit", "type": "shell", "options": { "env": { @@ -93,17 +109,17 @@ } }, { - "label": "Workspace - PHP CS Fixer", + "label": "PHP CS Fixer", "type": "shell", "command": "vendor/bin/php-cs-fixer fix" }, { - "label": "Workspace - PHPStan", + "label": "PHPStan", "type": "shell", "command": "vendor/bin/phpstan analyse" }, { - "label": "Workspace - Update PHP Headers", + "label": "Update PHP Headers", "type": "shell", "command": [ "vendor/bin/php-cs-fixer fix --config packages/framework/.php-cs-fixer.php &&", @@ -113,112 +129,6 @@ "vendor/bin/php-cs-fixer fix --config packages/skeleton/.php-cs-fixer.headers.php" ], }, - - /** - * UserFrosting (skeleton) Tasks - */ - { - "label": "Skeleton - Vite Dev", - "type": "shell", - "command": "npm run --workspace=userfrosting vite:dev", - "isBackground": true - }, - { - "label": "Skeleton - Vite Build", - "type": "shell", - "command": "npm run --workspace=userfrosting vite:build" - }, - { - "label": "Skeleton - PHPUnit", - "type": "shell", - "options": { - "env": { - "XDEBUG_CONFIG": "idekey=VSCODE" - } - }, - "command": "printf '\\33c\\e[3J' && vendor/bin/phpunit --testsuite 'Skeleton'" - }, - { - "label": "Skeleton - PHPStan", - "type": "shell", - "command": "vendor/bin/phpstan analyse packages/skeleton" - }, - - /** - * Sprinkle Core Tasks - */ - { - "label": "Core - PHPUnit", - "type": "shell", - "options": { - "env": { - "XDEBUG_CONFIG": "idekey=VSCODE" - } - }, - "command": "printf '\\33c\\e[3J' && vendor/bin/phpunit --testsuite 'Core Sprinkle'" - }, - { - "label": "Core - PHPStan", - "type": "shell", - "command": "vendor/bin/phpstan analyse packages/sprinkle-core" - }, - - /** - * Sprinkle Account Tasks - */ - { - "label": "Account - PHPUnit", - "type": "shell", - "options": { - "env": { - "XDEBUG_CONFIG": "idekey=VSCODE" - } - }, - "command": "printf '\\33c\\e[3J' && vendor/bin/phpunit --testsuite 'Account Sprinkle'" - }, - { - "label": "Account - PHPStan", - "type": "shell", - "command": "vendor/bin/phpstan analyse packages/sprinkle-account" - }, - - /** - * Sprinkle Admin Tasks - */ - { - "label": "Admin - PHPUnit", - "type": "shell", - "options": { - "env": { - "XDEBUG_CONFIG": "idekey=VSCODE" - } - }, - "command": "printf '\\33c\\e[3J' && vendor/bin/phpunit --testsuite 'Admin Sprinkle'" - }, - { - "label": "Admin - PHPStan", - "type": "shell", - "command": "vendor/bin/phpstan analyse packages/sprinkle-admin" - }, - - /** - * Framework Tasks - */ - { - "label": "Framework - PHPUnit", - "type": "shell", - "options": { - "env": { - "XDEBUG_CONFIG": "idekey=VSCODE" - } - }, - "command": "printf '\\33c\\e[3J' && vendor/bin/phpunit --testsuite 'Framework'" - }, - { - "label": "Framework - PHPStan", - "type": "shell", - "command": "vendor/bin/phpstan analyse packages/framework" - }, /** * Docker Tasks diff --git a/package-lock.json b/package-lock.json index 4b9476c65..34bec771b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,10 @@ "packages/sprinkle-admin", "packages/theme-pink-cupcake", "packages/skeleton" - ] + ], + "devDependencies": { + "vite-plugin-dts": "^4.5.4" + } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", @@ -93,6 +96,16 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", @@ -140,6 +153,33 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", @@ -162,6 +202,16 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", @@ -181,6 +231,17 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", @@ -1648,6 +1709,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", @@ -1745,6 +1817,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -1762,6 +1835,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -1779,6 +1853,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -1796,6 +1871,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -1813,6 +1889,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -1830,6 +1907,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -1847,6 +1925,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -1864,6 +1943,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -1881,6 +1961,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -1898,6 +1979,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -1915,6 +1997,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -1932,6 +2015,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -1949,6 +2033,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -1966,6 +2051,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -1983,6 +2069,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2000,6 +2087,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2017,6 +2105,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2034,6 +2123,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2051,6 +2141,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2068,6 +2159,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2085,6 +2177,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2102,6 +2195,7 @@ "os": [ "openharmony" ], + "peer": true, "engines": { "node": ">=18" } @@ -2119,6 +2213,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -2136,6 +2231,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2153,6 +2249,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2170,6 +2267,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2231,6 +2329,30 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", @@ -2281,6 +2403,41 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -2294,6 +2451,26 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "9.39.2", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", @@ -2477,6 +2654,29 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2629,16 +2829,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/types/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2839,6 +3029,78 @@ "dev": true, "license": "MIT" }, + "node_modules/@microsoft/api-extractor": { + "version": "7.55.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.55.2.tgz", + "integrity": "sha512-1jlWO4qmgqYoVUcyh+oXYRztZde/pAi7cSVzBz/rc+S7CoVzDasy8QE13dx6sLG4VRo8SfkkLbFORR6tBw4uGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.32.2", + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.0", + "@rushstack/node-core-library": "5.19.1", + "@rushstack/rig-package": "0.6.0", + "@rushstack/terminal": "0.19.5", + "@rushstack/ts-command-line": "5.1.5", + "diff": "~8.0.2", + "lodash": "~4.17.15", + "minimatch": "10.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.8.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", + "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.0", + "@rushstack/node-core-library": "5.19.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", + "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.16.0", + "ajv": "~8.12.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" + } + }, "node_modules/@modyfi/vite-plugin-yaml": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@modyfi/vite-plugin-yaml/-/vite-plugin-yaml-1.1.1.tgz", @@ -2854,6 +3116,42 @@ "vite": ">=3.2.7" } }, + "node_modules/@modyfi/vite-plugin-yaml/node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@modyfi/vite-plugin-yaml/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@nuxt/friendly-errors-webpack-plugin": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@nuxt/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-2.6.0.tgz", @@ -2930,15 +3228,15 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "picomatch": "^4.0.2" }, "engines": { "node": ">=14.0.0" @@ -2964,7 +3262,8 @@ "optional": true, "os": [ "android" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-android-arm64": { "version": "4.55.1", @@ -2978,7 +3277,8 @@ "optional": true, "os": [ "android" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.55.1", @@ -2992,7 +3292,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { "version": "4.55.1", @@ -3006,7 +3307,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { "version": "4.55.1", @@ -3020,7 +3322,8 @@ "optional": true, "os": [ "freebsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { "version": "4.55.1", @@ -3034,7 +3337,8 @@ "optional": true, "os": [ "freebsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { "version": "4.55.1", @@ -3048,7 +3352,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { "version": "4.55.1", @@ -3062,7 +3367,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { "version": "4.55.1", @@ -3076,7 +3382,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { "version": "4.55.1", @@ -3090,7 +3397,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-loong64-gnu": { "version": "4.55.1", @@ -3104,7 +3412,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-loong64-musl": { "version": "4.55.1", @@ -3118,7 +3427,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { "version": "4.55.1", @@ -3132,7 +3442,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-ppc64-musl": { "version": "4.55.1", @@ -3146,7 +3457,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { "version": "4.55.1", @@ -3160,7 +3472,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { "version": "4.55.1", @@ -3174,7 +3487,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { "version": "4.55.1", @@ -3188,7 +3502,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.55.1", @@ -3202,7 +3517,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.55.1", @@ -3216,7 +3532,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-openbsd-x64": { "version": "4.55.1", @@ -3230,7 +3547,8 @@ "optional": true, "os": [ "openbsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-openharmony-arm64": { "version": "4.55.1", @@ -3244,7 +3562,8 @@ "optional": true, "os": [ "openharmony" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { "version": "4.55.1", @@ -3258,7 +3577,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { "version": "4.55.1", @@ -3272,7 +3592,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-x64-gnu": { "version": "4.55.1", @@ -3286,7 +3607,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.55.1", @@ -3300,7 +3622,109 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true + }, + "node_modules/@rushstack/node-core-library": { + "version": "5.19.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", + "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~11.3.0", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rushstack/problem-matcher": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", + "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.6.0.tgz", + "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.19.5.tgz", + "integrity": "sha512-6k5tpdB88G0K7QrH/3yfKO84HK9ggftfUZ51p7fePyCE7+RLLHkWZbID9OFWbXuna+eeCFE7AkKnRMHMxNbz7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.19.1", + "@rushstack/problem-matcher": "0.1.1", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.1.5.tgz", + "integrity": "sha512-YmrFTFUdHXblYSa+Xc9OO9FsL/XFcckZy0ycQ6q7VSBsVs5P0uD9vcges5Q9vctGlVdu27w+Ct6IuJ458V0cTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.19.5", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", @@ -3493,19 +3917,6 @@ } } }, - "node_modules/@symfony/webpack-encore/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@tsconfig/node20": { "version": "20.1.8", "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.8.tgz", @@ -3513,6 +3924,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -3618,9 +4036,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", - "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "license": "MIT", "dependencies": { @@ -3696,9 +4114,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.19.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", - "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", + "version": "20.19.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.28.tgz", + "integrity": "sha512-VyKBr25BuFDzBFCK5sUM6ZXiWfqgCTwTAOK8qzGV/m9FCirXYDlmczJ+d5dXBAQALGCdRRdbteKYfJ84NGEusw==", "dev": true, "license": "MIT", "dependencies": { @@ -4018,16 +4436,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -4296,30 +4704,30 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.15.tgz", - "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.27.tgz", + "integrity": "sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.15" + "@volar/source-map": "2.4.27" } }, "node_modules/@volar/source-map": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.15.tgz", - "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.27.tgz", + "integrity": "sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==", "dev": true, "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.15.tgz", - "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.27.tgz", + "integrity": "sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.15", + "@volar/language-core": "2.4.27", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -4390,18 +4798,6 @@ "source-map-js": "^1.2.1" } }, - "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", - "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@vue/compiler-dom": { "version": "3.5.26", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz", @@ -4521,17 +4917,17 @@ } }, "node_modules/@vue/language-core": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.12.tgz", - "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.0.tgz", + "integrity": "sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.15", + "@volar/language-core": "~2.4.11", "@vue/compiler-dom": "^3.5.0", "@vue/compiler-vue2": "^2.7.16", "@vue/shared": "^3.5.0", - "alien-signals": "^1.0.3", + "alien-signals": "^0.4.9", "minimatch": "^9.0.3", "muggle-string": "^0.4.1", "path-browserify": "^1.0.1" @@ -4545,16 +4941,6 @@ } } }, - "node_modules/@vue/language-core/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@vue/language-core/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -4967,15 +5353,15 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" }, "funding": { @@ -4983,17 +5369,14 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, "peerDependencies": { - "ajv": "^8.0.0" + "ajv": "^8.5.0" }, "peerDependenciesMeta": { "ajv": { @@ -5001,44 +5384,41 @@ } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "ajv": "^8.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, "peerDependencies": { - "ajv": "^6.9.1" + "ajv": "^8.8.2" } }, "node_modules/alien-signals": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.13.tgz", - "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.4.14.tgz", + "integrity": "sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==", "dev": true, "license": "MIT" }, @@ -5095,12 +5475,28 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, "node_modules/array-flatten": { "version": "1.1.1", @@ -5198,6 +5594,17 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", @@ -5235,9 +5642,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.13.tgz", - "integrity": "sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ==", + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5357,14 +5764,13 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -5563,6 +5969,29 @@ "node": ">=4" } }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/check-error": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", @@ -5685,6 +6114,13 @@ "node": ">=14" } }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true, + "license": "MIT" + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5741,6 +6177,13 @@ "dev": true, "license": "MIT" }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "dev": true, + "license": "MIT" + }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -5945,19 +6388,6 @@ } } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-minimizer-webpack-plugin": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.4.tgz", @@ -6313,6 +6743,16 @@ "dev": true, "license": "MIT" }, + "node_modules/diff": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -6351,6 +6791,16 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -6462,16 +6912,6 @@ "node": ">=14" } }, - "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/editorconfig/node_modules/minimatch": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", @@ -6488,19 +6928,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/editorconfig/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6557,11 +6984,13 @@ } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.0.tgz", + "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==", "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -6587,6 +7016,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "prr": "~1.0.1" }, @@ -6880,6 +7310,23 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6896,6 +7343,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6946,14 +7404,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, "node_modules/eslint/node_modules/supports-color": { @@ -7168,6 +7636,13 @@ "dev": true, "license": "MIT" }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7189,23 +7664,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -7229,6 +7687,24 @@ "node": ">=0.8.0" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", @@ -7279,6 +7755,40 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, "node_modules/file-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -7461,6 +7971,33 @@ "webpack": "^5.11.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7477,6 +8014,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7514,20 +8062,45 @@ "dev": true, "license": "MIT" }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { @@ -7543,19 +8116,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7606,9 +8166,9 @@ } }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -7617,7 +8177,7 @@ "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/fs-monkey": { @@ -7773,16 +8333,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/glob/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -7863,13 +8413,13 @@ } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-symbols": { @@ -8017,6 +8567,16 @@ "entities": "^2.0.0" } }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -8132,6 +8692,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -8169,6 +8730,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "image-size": "bin/image-size.js" }, @@ -8193,6 +8755,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -8285,7 +8857,6 @@ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "hasown": "^2.0.2" }, @@ -8526,16 +9097,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8675,29 +9236,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8728,32 +9266,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jiti": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", @@ -8764,6 +9276,13 @@ "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, "node_modules/js-beautify": { "version": "1.15.4", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", @@ -8816,6 +9335,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -8844,9 +9370,9 @@ "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, @@ -8975,6 +9501,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -8990,6 +9517,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver" } @@ -9022,14 +9550,13 @@ } }, "node_modules/limax": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/limax/-/limax-4.2.1.tgz", - "integrity": "sha512-7YeQ8dV9XIjYIjBSFUSOfoxQFAtG2ckD0FGKYCuRaPJKc3IKXZwqsSLD5PnlPklp4y5ncPWhiL142ijAtHGNgw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/limax/-/limax-4.2.2.tgz", + "integrity": "sha512-HhCTNSqrNHj2hZzFn2gNbdOukxSbsw7nSZ9cmn1TpvjvHvE1TuT523fgMpLTwzRdoNMujdyTeSNcs6TwiFa5aQ==", "license": "Apache-2.0", "peer": true, "dependencies": { "hepburn": "^1.2.2", - "lodash.deburr": "^4.1.0", "pinyin-pro": "^3.27.0", "speakingurl": "^14.0.1" }, @@ -9074,6 +9601,24 @@ "node": ">=8.9.0" } }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -9105,13 +9650,6 @@ "license": "MIT", "peer": true }, - "node_modules/lodash.deburr": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", - "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", - "license": "MIT", - "peer": true - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -9141,13 +9679,16 @@ "license": "MIT" }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "license": "ISC", "dependencies": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/luxon": { @@ -9196,19 +9737,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -9298,6 +9826,19 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -9361,16 +9902,19 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { @@ -9389,6 +9933,38 @@ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "license": "MIT" }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -9459,6 +10035,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "iconv-lite": "^0.6.3", "sax": "^1.2.4" @@ -9520,19 +10097,6 @@ "which": "^2.0.2" } }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -9616,16 +10180,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-run-all2/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/npm-run-all2/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -9946,8 +10500,7 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", @@ -10020,13 +10573,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -10052,6 +10605,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -10174,6 +10728,18 @@ "node": ">=8" } }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -10827,7 +11393,8 @@ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/punycode": { "version": "2.3.1", @@ -10855,6 +11422,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -11101,7 +11685,6 @@ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", @@ -11308,43 +11891,24 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "ajv": "^8.0.0" }, "peerDependencies": { - "ajv": "^8.8.2" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -11367,13 +11931,19 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { @@ -11795,6 +12365,13 @@ "node": ">=0.10.0" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -11836,6 +12413,16 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -12073,16 +12660,19 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -12091,7 +12681,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -12291,16 +12880,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -12316,22 +12895,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -12354,16 +12917,6 @@ "node": ">=18" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/test-exclude/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -12435,37 +12988,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tinypool": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", @@ -12652,29 +13174,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ts-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-loader/node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -12785,6 +13284,13 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/ufo": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.2.tgz", + "integrity": "sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/uikit": { "version": "3.25.4", "resolved": "https://registry.npmjs.org/uikit/-/uikit-3.25.4.tgz", @@ -13079,6 +13585,33 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite-plugin-dts": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.5.4.tgz", + "integrity": "sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor": "^7.50.1", + "@rollup/pluginutils": "^5.1.4", + "@volar/typescript": "^2.4.11", + "@vue/language-core": "2.2.0", + "compare-versions": "^6.1.1", + "debug": "^4.4.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, "node_modules/vite-plugin-inspect": { "version": "0.8.9", "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz", @@ -13111,57 +13644,6 @@ } } }, - "node_modules/vite-plugin-inspect/node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/vite-plugin-inspect/node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/vite-plugin-inspect/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/vite-plugin-vue-devtools": { "version": "7.7.9", "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.9.tgz", @@ -13205,37 +13687,6 @@ "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/vitest": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", @@ -13309,19 +13760,6 @@ } } }, - "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/vscode-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", @@ -13498,16 +13936,6 @@ "dev": true, "license": "MIT" }, - "node_modules/vue-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/vue-loader/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13559,6 +13987,83 @@ "typescript": ">=5.0.0" } }, + "node_modules/vue-tsc/node_modules/@volar/language-core": { + "version": "2.4.15", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.15.tgz", + "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.15" + } + }, + "node_modules/vue-tsc/node_modules/@volar/source-map": { + "version": "2.4.15", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.15.tgz", + "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-tsc/node_modules/@volar/typescript": { + "version": "2.4.15", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.15.tgz", + "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/vue-tsc/node_modules/@vue/language-core": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.12.tgz", + "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^1.0.3", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-tsc/node_modules/alien-signals": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.13.tgz", + "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-tsc/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/watchpack": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", @@ -13860,6 +14365,19 @@ "node": ">= 6" } }, + "node_modules/webpack-dev-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/webpack-dev-server/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -14292,9 +14810,9 @@ } }, "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, @@ -14445,7 +14963,8 @@ "axios": "^1.12.0", "pinia": "^2.1.6", "pinia-plugin-persistedstate": "^3.2.0", - "vue": "^3.4.21" + "vue": "^3.4.21", + "vue-router": "^4.2.4" } }, "packages/theme-pink-cupcake": { diff --git a/package.json b/package.json index 66f9b01ba..3a6a4e764 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,20 @@ "packages/skeleton" ], "scripts": { + "dev": "vite", + "build": "npm run build --workspace=packages/sprinkle-core --workspace=packages/sprinkle-account --workspace=packages/sprinkle-admin --workspace=packages/theme-pink-cupcake", + "build:core": "npm run build --workspace=packages/sprinkle-core", + "build:account": "npm run build --workspace=packages/sprinkle-account", + "build:admin": "npm run build --workspace=packages/sprinkle-admin", + "build:theme": "npm run build --workspace=packages/theme-pink-cupcake", "test": "vitest", "coverage": "vitest run --coverage", "typecheck": "vue-tsc --noEmit", "format": "prettier --write packages/skeleton/app/assets/ packages/sprinkle-*/app/assets packages/theme-pink-cupcake/src", "format-dry-run": "prettier --check packages/skeleton/app/assets/ packages/sprinkle-*/app/assets packages/theme-pink-cupcake/src", "lint": "eslint packages/skeleton/app/assets/ packages/sprinkle-*/app/assets packages/theme-pink-cupcake/src --fix" + }, + "devDependencies": { + "vite-plugin-dts": "^4.5.4" } } diff --git a/packages/skeleton/vite.config.ts b/packages/skeleton/vite.config.ts index 74b0fe12a..8001e5a63 100644 --- a/packages/skeleton/vite.config.ts +++ b/packages/skeleton/vite.config.ts @@ -3,7 +3,7 @@ import vue from '@vitejs/plugin-vue' import vueDevTools from 'vite-plugin-vue-devtools' import ViteYaml from '@modyfi/vite-plugin-yaml' -// Get vite port from env, default to 3000 +// Get vite port from env, default to 5173 const vitePort = parseInt(process.env.VITE_PORT || '5173', 10) // https://vitejs.dev/config/ @@ -46,15 +46,7 @@ export default defineConfig({ // Force optimization of UiKit (not module packages) in dev mode // to avoid the error: // "importing binding name 'default' cannot be resolved by star export entries" - // Also, treat all sprinkles as source code (not prebuilt) and tell Vite - // not to prebundle them. optimizeDeps: { - include: ['uikit', 'uikit/dist/js/uikit-icons'], - exclude: [ - '@userfrosting/sprinkle-core', - '@userfrosting/sprinkle-account', - '@userfrosting/sprinkle-admin', - '@userfrosting/theme-pink-cupcake' - ] + include: ['uikit', 'uikit/dist/js/uikit-icons'] } }) diff --git a/packages/sprinkle-account/app/assets/index.d.ts b/packages/sprinkle-account/app/assets/index.d.ts deleted file mode 100644 index b7b6d4d3c..000000000 --- a/packages/sprinkle-account/app/assets/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export {} - -declare module 'vue' { - interface ComponentCustomProperties { - $checkAccess: (slug: string) => boolean - } -} diff --git a/packages/sprinkle-account/app/assets/index.ts b/packages/sprinkle-account/app/assets/index.ts index 15a89bc94..0dbf1ffa3 100644 --- a/packages/sprinkle-account/app/assets/index.ts +++ b/packages/sprinkle-account/app/assets/index.ts @@ -37,3 +37,9 @@ export default { app.config.globalProperties.$checkAccess = auth.checkAccess } } + +declare module 'vue' { + interface ComponentCustomProperties { + $checkAccess: (slug: string) => boolean + } +} diff --git a/packages/sprinkle-account/app/assets/tests/composables/useLoginApi.test.ts b/packages/sprinkle-account/app/assets/tests/composables/useLoginApi.test.ts index e51d87433..5e13d9ed1 100644 --- a/packages/sprinkle-account/app/assets/tests/composables/useLoginApi.test.ts +++ b/packages/sprinkle-account/app/assets/tests/composables/useLoginApi.test.ts @@ -1,4 +1,5 @@ -import { describe, expect, test, vi } from 'vitest' +import { describe, expect, test, vi, beforeEach } from 'vitest' +import { setActivePinia, createPinia } from 'pinia' import axios from 'axios' import { Severity } from '@userfrosting/sprinkle-core/interfaces' import { useLoginApi } from '../../composables' @@ -46,6 +47,9 @@ vi.mock('@userfrosting/sprinkle-core/stores', () => ({ })) describe('useLoginApi', () => { + beforeEach(() => { + setActivePinia(createPinia()) + }) test('should initialize formData with default values', () => { const { formData } = useLoginApi() expect(formData.value).toEqual({ diff --git a/packages/sprinkle-account/app/assets/tests/composables/useRegisterApi.test.ts b/packages/sprinkle-account/app/assets/tests/composables/useRegisterApi.test.ts index d183e4b30..9dd5d58dc 100644 --- a/packages/sprinkle-account/app/assets/tests/composables/useRegisterApi.test.ts +++ b/packages/sprinkle-account/app/assets/tests/composables/useRegisterApi.test.ts @@ -1,12 +1,12 @@ -import { afterEach, describe, expect, test, vi } from 'vitest' -// import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' +import { setActivePinia, createPinia } from 'pinia' // import axios from 'axios' // import { Severity } from '@userfrosting/sprinkle-core/interfaces' // import type { RegisterRequest } from '../../interfaces' import { useRegisterApi } from '../../composables' -const { defaultRegistrationForm } = useRegisterApi() -// const { defaultRegistrationForm, availableLocales, captchaUrl } = useRegisterApi() +let defaultRegistrationForm: any +// let defaultRegistrationForm: any, availableLocales: any, captchaUrl: any /*const form: RegisterRequest = { first_name: 'John', @@ -43,6 +43,14 @@ vi.mock('@userfrosting/sprinkle-core/stores', () => ({ })) describe('register', () => { + beforeEach(() => { + setActivePinia(createPinia()) + const result = useRegisterApi() + defaultRegistrationForm = result.defaultRegistrationForm + // availableLocales = result.availableLocales + // captchaUrl = result.captchaUrl + }) + afterEach(() => { vi.clearAllMocks() vi.resetAllMocks() diff --git a/packages/sprinkle-account/package.json b/packages/sprinkle-account/package.json index a3232ce8c..d8fb1e3a0 100644 --- a/packages/sprinkle-account/package.json +++ b/packages/sprinkle-account/package.json @@ -24,16 +24,45 @@ "url": "https://github.com/userfrosting/UserFrosting/issues" }, "exports": { - ".": "./app/assets/index.ts", - "./composables": "./app/assets/composables/index.ts", - "./guards": "./app/assets/guards/index.ts", - "./interfaces": "./app/assets/interfaces/index.ts", - "./routes": "./app/assets/routes/index.ts", - "./stores": "./app/assets/stores/index.ts", - "./views": "./app/assets/views/index.ts" + ".": { + "userfrosting:monorepo": "./app/assets/index.ts", + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./composables": { + "userfrosting:monorepo": "./app/assets/composables/index.ts", + "import": "./dist/composables.js", + "types": "./dist/composables/index.d.ts" + }, + "./guards": { + "userfrosting:monorepo": "./app/assets/guards/index.ts", + "import": "./dist/guards.js", + "types": "./dist/guards/index.d.ts" + }, + "./interfaces": { + "userfrosting:monorepo": "./app/assets/interfaces/index.ts", + "import": "./dist/interfaces.js", + "types": "./dist/interfaces/index.d.ts" + }, + "./routes": { + "userfrosting:monorepo": "./app/assets/routes/index.ts", + "import": "./dist/routes.js", + "types": "./dist/routes/index.d.ts" + }, + "./stores": { + "userfrosting:monorepo": "./app/assets/stores/index.ts", + "import": "./dist/stores.js", + "types": "./dist/stores/index.d.ts" + }, + "./views": { + "userfrosting:monorepo": "./app/assets/views/index.ts", + "import": "./dist/views.js", + "types": "./dist/views/index.d.ts" + } }, + "types": "./dist/index.d.ts", "files": [ - "app/assets/", + "dist/", "app/schema/" ], "engines": { @@ -46,5 +75,8 @@ "pinia-plugin-persistedstate": "^3.2.0", "vue": "^3.4.21", "vue-router": "^4.2.4" + }, + "scripts": { + "build": "vite build" } } diff --git a/packages/sprinkle-account/tsconfig.build.json b/packages/sprinkle-account/tsconfig.build.json new file mode 100644 index 000000000..0766e06b1 --- /dev/null +++ b/packages/sprinkle-account/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": false, + "outDir": "dist" + }, + "include": [ + "env.d.ts", + "app/assets/**/*.ts", + "app/assets/**/*.d.ts", + "app/assets/**/*.vue" + ], + "exclude": [ + "app/assets/tests/**/*" + ] +} diff --git a/packages/sprinkle-account/vite.config.ts b/packages/sprinkle-account/vite.config.ts index f573c4180..54a037010 100644 --- a/packages/sprinkle-account/vite.config.ts +++ b/packages/sprinkle-account/vite.config.ts @@ -1,13 +1,62 @@ /// import { configDefaults } from 'vitest/config' import { defineConfig } from 'vite' +import { resolve } from 'path' import vue from '@vitejs/plugin-vue' import ViteYaml from '@modyfi/vite-plugin-yaml' +import dts from 'vite-plugin-dts' // https://vitejs.dev/config/ // https://stackoverflow.com/a/74397545/445757 export default defineConfig({ - plugins: [vue(), ViteYaml()], + resolve: { + conditions: ['userfrosting:monorepo', 'import'] + }, + plugins: [ + vue(), + ViteYaml(), + dts({ + include: ['env.d.ts', 'app/assets/**/*.ts', 'app/assets/**/*.vue'], + exclude: ['app/assets/tests/**/*'], + outDir: 'dist', + copyDtsFiles: true, + rollupTypes: false, + compilerOptions: { + customConditions: ['userfrosting:monorepo'] + } + }) + ], + build: { + lib: { + entry: { + index: resolve(__dirname, 'app/assets/index.ts'), + composables: resolve(__dirname, 'app/assets/composables/index.ts'), + guards: resolve(__dirname, 'app/assets/guards/index.ts'), + interfaces: resolve(__dirname, 'app/assets/interfaces/index.ts'), + routes: resolve(__dirname, 'app/assets/routes/index.ts'), + stores: resolve(__dirname, 'app/assets/stores/index.ts'), + views: resolve(__dirname, 'app/assets/views/index.ts') + }, + formats: ['es'] + }, + rollupOptions: { + external: [ + 'vue', + 'vue-router', + 'axios', + 'pinia', + 'pinia-plugin-persistedstate', + '@userfrosting/sprinkle-core', + '@userfrosting/sprinkle-core/composables', + '@userfrosting/sprinkle-core/interfaces', + '@userfrosting/sprinkle-core/stores' + ], + output: { + preserveModules: false, + entryFileNames: '[name].js' + } + } + }, test: { coverage: { reportsDirectory: './_meta/_coverage', diff --git a/packages/sprinkle-admin/package.json b/packages/sprinkle-admin/package.json index c9dd5fd97..031a79422 100644 --- a/packages/sprinkle-admin/package.json +++ b/packages/sprinkle-admin/package.json @@ -25,15 +25,40 @@ "url": "https://github.com/userfrosting/UserFrosting/issues" }, "exports": { - ".": "./app/assets/index.ts", - "./components": "./app/assets/components/index.ts", - "./composables": "./app/assets/composables/index.ts", - "./interfaces": "./app/assets/interfaces/index.ts", - "./routes": "./app/assets/routes/index.ts", - "./views": "./app/assets/views/index.ts" + ".": { + "userfrosting:monorepo": "./app/assets/index.ts", + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./components": { + "userfrosting:monorepo": "./app/assets/components/index.ts", + "import": "./dist/components.js", + "types": "./dist/components/index.d.ts" + }, + "./composables": { + "userfrosting:monorepo": "./app/assets/composables/index.ts", + "import": "./dist/composables.js", + "types": "./dist/composables/index.d.ts" + }, + "./interfaces": { + "userfrosting:monorepo": "./app/assets/interfaces/index.ts", + "import": "./dist/interfaces.js", + "types": "./dist/interfaces/index.d.ts" + }, + "./routes": { + "userfrosting:monorepo": "./app/assets/routes/index.ts", + "import": "./dist/routes.js", + "types": "./dist/routes/index.d.ts" + }, + "./views": { + "userfrosting:monorepo": "./app/assets/views/index.ts", + "import": "./dist/views.js", + "types": "./dist/views/index.d.ts" + } }, + "types": "./dist/index.d.ts", "files": [ - "app/assets", + "dist/", "app/schema/" ], "engines": { @@ -48,5 +73,8 @@ "pinia-plugin-persistedstate": "^3.2.0", "vue": "^3.4.21", "vue-router": "^4.2.4" + }, + "scripts": { + "build": "vite build" } } diff --git a/packages/sprinkle-admin/tsconfig.build.json b/packages/sprinkle-admin/tsconfig.build.json new file mode 100644 index 000000000..0766e06b1 --- /dev/null +++ b/packages/sprinkle-admin/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": false, + "outDir": "dist" + }, + "include": [ + "env.d.ts", + "app/assets/**/*.ts", + "app/assets/**/*.d.ts", + "app/assets/**/*.vue" + ], + "exclude": [ + "app/assets/tests/**/*" + ] +} diff --git a/packages/sprinkle-admin/vite.config.ts b/packages/sprinkle-admin/vite.config.ts index 97d563656..b7ce4a554 100644 --- a/packages/sprinkle-admin/vite.config.ts +++ b/packages/sprinkle-admin/vite.config.ts @@ -1,13 +1,67 @@ /// import { configDefaults } from 'vitest/config' import { defineConfig } from 'vite' +import { resolve } from 'path' import vue from '@vitejs/plugin-vue' import ViteYaml from '@modyfi/vite-plugin-yaml' +import dts from 'vite-plugin-dts' // https://vitejs.dev/config/ // https://stackoverflow.com/a/74397545/445757 export default defineConfig({ - plugins: [vue(), ViteYaml()], + resolve: { + conditions: ['userfrosting:monorepo', 'import'] + }, + plugins: [ + vue(), + ViteYaml(), + dts({ + include: ['env.d.ts', 'app/assets/**/*.ts', 'app/assets/**/*.vue'], + exclude: ['app/assets/tests/**/*'], + outDir: 'dist', + copyDtsFiles: true, + rollupTypes: false, + compilerOptions: { + customConditions: ['userfrosting:monorepo'] + } + }) + ], + build: { + lib: { + entry: { + index: resolve(__dirname, 'app/assets/index.ts'), + components: resolve(__dirname, 'app/assets/components/index.ts'), + composables: resolve(__dirname, 'app/assets/composables/index.ts'), + interfaces: resolve(__dirname, 'app/assets/interfaces/index.ts'), + routes: resolve(__dirname, 'app/assets/routes/index.ts'), + views: resolve(__dirname, 'app/assets/views/index.ts') + }, + formats: ['es'] + }, + rollupOptions: { + external: [ + 'vue', + 'vue-router', + 'axios', + 'pinia', + 'pinia-plugin-persistedstate', + 'limax', + '@userfrosting/sprinkle-core', + '@userfrosting/sprinkle-core/composables', + '@userfrosting/sprinkle-core/interfaces', + '@userfrosting/sprinkle-core/stores', + '@userfrosting/sprinkle-account', + '@userfrosting/sprinkle-account/composables', + '@userfrosting/sprinkle-account/guards', + '@userfrosting/sprinkle-account/interfaces', + '@userfrosting/sprinkle-account/stores' + ], + output: { + preserveModules: false, + entryFileNames: '[name].js' + } + } + }, test: { coverage: { reportsDirectory: './_meta/_coverage', diff --git a/packages/sprinkle-core/app/assets/index.d.ts b/packages/sprinkle-core/app/assets/index.d.ts deleted file mode 100644 index 65c3b928d..000000000 --- a/packages/sprinkle-core/app/assets/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export {} - -declare module 'vue' { - interface ComponentCustomProperties { - $t: (key: string, placeholders?: string | number | object) => string - $tdate: (date: string, format?: string | object) => string - } -} diff --git a/packages/sprinkle-core/app/assets/index.ts b/packages/sprinkle-core/app/assets/index.ts index dd90082e9..d0c0e3360 100644 --- a/packages/sprinkle-core/app/assets/index.ts +++ b/packages/sprinkle-core/app/assets/index.ts @@ -38,3 +38,10 @@ export default { useCsrf() } } + +declare module 'vue' { + interface ComponentCustomProperties { + $t: (key: string, placeholders?: string | number | object) => string + $tdate: (date: string, format?: string | object) => string + } +} diff --git a/packages/sprinkle-core/app/assets/stores/usePageMeta.ts b/packages/sprinkle-core/app/assets/stores/usePageMeta.ts index 597c8ac43..8fb0c8e79 100644 --- a/packages/sprinkle-core/app/assets/stores/usePageMeta.ts +++ b/packages/sprinkle-core/app/assets/stores/usePageMeta.ts @@ -1,6 +1,6 @@ import { computed, ref, watch } from 'vue' import { useRoute } from 'vue-router' -import { useTranslator } from '@userfrosting/sprinkle-core/stores' +import { useTranslator } from './useTranslator' import { useConfigStore } from '../stores' import { defineStore } from 'pinia' diff --git a/packages/sprinkle-core/app/assets/tests/composables/useRuleSchemaAdapter.test.ts b/packages/sprinkle-core/app/assets/tests/composables/useRuleSchemaAdapter.test.ts index d5e75a5f3..8f4ed0cd6 100644 --- a/packages/sprinkle-core/app/assets/tests/composables/useRuleSchemaAdapter.test.ts +++ b/packages/sprinkle-core/app/assets/tests/composables/useRuleSchemaAdapter.test.ts @@ -1,16 +1,21 @@ -import { describe, test, expect, vi, afterEach } from 'vitest' +import { describe, test, expect, vi, afterEach, beforeEach } from 'vitest' +import { setActivePinia, createPinia } from 'pinia' import { useRuleSchemaAdapter } from '../../composables/useRuleSchemaAdapter' import { useRegle } from '@regle/core' // Mock the translator store const translateMock = vi.fn((key: string) => key || '') -vi.mock('@userfrosting/sprinkle-core/stores', () => ({ +vi.mock('../../stores', () => ({ useTranslator: () => ({ translate: translateMock }) })) describe('useRuleSchemaAdapter', () => { + beforeEach(() => { + setActivePinia(createPinia()) + }) + afterEach(() => { vi.clearAllMocks() }) diff --git a/packages/sprinkle-core/package.json b/packages/sprinkle-core/package.json index 473d6be3a..9223399a9 100644 --- a/packages/sprinkle-core/package.json +++ b/packages/sprinkle-core/package.json @@ -24,14 +24,35 @@ "url": "https://github.com/userfrosting/UserFrosting/issues" }, "exports": { - ".": "./app/assets/index.ts", - "./interfaces": "./app/assets/interfaces/index.ts", - "./stores": "./app/assets/stores/index.ts", - "./composables": "./app/assets/composables/index.ts", - "./routes": "./app/assets/routes/index.ts" + ".": { + "userfrosting:monorepo": "./app/assets/index.ts", + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./interfaces": { + "userfrosting:monorepo": "./app/assets/interfaces/index.ts", + "import": "./dist/interfaces.js", + "types": "./dist/interfaces/index.d.ts" + }, + "./stores": { + "userfrosting:monorepo": "./app/assets/stores/index.ts", + "import": "./dist/stores.js", + "types": "./dist/stores/index.d.ts" + }, + "./composables": { + "userfrosting:monorepo": "./app/assets/composables/index.ts", + "import": "./dist/composables.js", + "types": "./dist/composables/index.d.ts" + }, + "./routes": { + "userfrosting:monorepo": "./app/assets/routes/index.ts", + "import": "./dist/routes.js", + "types": "./dist/routes/index.d.ts" + } }, + "types": "./dist/index.d.ts", "files": [ - "app/assets/" + "dist/" ], "engines": { "node": ">= 18" @@ -46,6 +67,10 @@ "axios": "^1.12.0", "pinia": "^2.1.6", "pinia-plugin-persistedstate": "^3.2.0", - "vue": "^3.4.21" + "vue": "^3.4.21", + "vue-router": "^4.2.4" + }, + "scripts": { + "build": "vite build" } } diff --git a/packages/sprinkle-core/tsconfig.build.json b/packages/sprinkle-core/tsconfig.build.json new file mode 100644 index 000000000..0766e06b1 --- /dev/null +++ b/packages/sprinkle-core/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": false, + "outDir": "dist" + }, + "include": [ + "env.d.ts", + "app/assets/**/*.ts", + "app/assets/**/*.d.ts", + "app/assets/**/*.vue" + ], + "exclude": [ + "app/assets/tests/**/*" + ] +} diff --git a/packages/sprinkle-core/vite.config.ts b/packages/sprinkle-core/vite.config.ts index eea2fc61c..4c4b5b5c1 100644 --- a/packages/sprinkle-core/vite.config.ts +++ b/packages/sprinkle-core/vite.config.ts @@ -1,11 +1,58 @@ /// import { defineConfig } from 'vite' +import { resolve } from 'path' import vue from '@vitejs/plugin-vue' +import dts from 'vite-plugin-dts' // https://vitejs.dev/config/ // https://stackoverflow.com/a/74397545/445757 export default defineConfig({ - plugins: [vue()], + resolve: { + conditions: ['userfrosting:monorepo', 'import'] + }, + plugins: [ + vue(), + dts({ + include: ['env.d.ts', 'app/assets/**/*.ts', 'app/assets/**/*.vue'], + exclude: ['app/assets/tests/**/*'], + outDir: 'dist', + copyDtsFiles: true, + rollupTypes: false, + compilerOptions: { + customConditions: ['userfrosting:monorepo'] + } + }) + ], + build: { + lib: { + entry: { + index: resolve(__dirname, 'app/assets/index.ts'), + interfaces: resolve(__dirname, 'app/assets/interfaces/index.ts'), + stores: resolve(__dirname, 'app/assets/stores/index.ts'), + composables: resolve(__dirname, 'app/assets/composables/index.ts'), + routes: resolve(__dirname, 'app/assets/routes/index.ts') + }, + formats: ['es'] + }, + rollupOptions: { + external: [ + 'vue', + 'vue-router', + 'axios', + 'pinia', + 'pinia-plugin-persistedstate', + '@regle/core', + '@regle/rules', + 'dot-prop', + 'luxon', + /^@userfrosting\/sprinkle-core/ + ], + output: { + preserveModules: false, + entryFileNames: '[name].js' + } + } + }, test: { coverage: { reportsDirectory: './_meta/_coverage', diff --git a/packages/theme-pink-cupcake/package.json b/packages/theme-pink-cupcake/package.json index a1ed4bf20..f940d4901 100644 --- a/packages/theme-pink-cupcake/package.json +++ b/packages/theme-pink-cupcake/package.json @@ -24,16 +24,42 @@ "url": "https://github.com/userfrosting/UserFrosting/issues" }, "exports": { - ".": "./src/index.ts", - "./components/pages/account": "./src/components/Pages/Account/index.ts", - "./components/pages/admin": "./src/components/Pages/Admin/index.ts", - "./components": "./src/components/index.ts", - "./plugins": "./src/plugins/index.ts", - "./views": "./src/views/index.ts", + ".": { + "userfrosting:monorepo": "./src/index.ts", + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./components/pages/account": { + "userfrosting:monorepo": "./src/components/Pages/Account/index.ts", + "import": "./dist/components/pages/account.js", + "types": "./dist/components/Pages/Account/index.d.ts" + }, + "./components/pages/admin": { + "userfrosting:monorepo": "./src/components/Pages/Admin/index.ts", + "import": "./dist/components/pages/admin.js", + "types": "./dist/components/Pages/Admin/index.d.ts" + }, + "./components": { + "userfrosting:monorepo": "./src/components/index.ts", + "import": "./dist/components.js", + "types": "./dist/components/index.d.ts" + }, + "./plugins": { + "userfrosting:monorepo": "./src/plugins/index.ts", + "import": "./dist/plugins.js", + "types": "./dist/plugins/index.d.ts" + }, + "./views": { + "userfrosting:monorepo": "./src/views/index.ts", + "import": "./dist/views.js", + "types": "./dist/views/index.d.ts" + }, "./less/*": "./src/less/*" }, + "types": "./dist/index.d.ts", "files": [ - "src/" + "src/less/", + "dist/" ], "engines": { "node": ">= 18" @@ -58,5 +84,8 @@ "pinia-plugin-persistedstate": "^3.2.0", "vue": "^3.4.21", "vue-router": "^4.2.4" + }, + "scripts": { + "build": "vite build" } } diff --git a/packages/theme-pink-cupcake/tsconfig.build.json b/packages/theme-pink-cupcake/tsconfig.build.json new file mode 100644 index 000000000..83116ae5c --- /dev/null +++ b/packages/theme-pink-cupcake/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": false, + "outDir": "dist" + }, + "include": [ + "env.d.ts", + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.vue" + ], + "exclude": [ + "src/tests/**/*" + ] +} diff --git a/packages/theme-pink-cupcake/vite.config.ts b/packages/theme-pink-cupcake/vite.config.ts index 477884de3..6755890de 100644 --- a/packages/theme-pink-cupcake/vite.config.ts +++ b/packages/theme-pink-cupcake/vite.config.ts @@ -1,20 +1,92 @@ /// import { defineConfig } from 'vite' +import { resolve } from 'path' import vue from '@vitejs/plugin-vue' import ViteYaml from '@modyfi/vite-plugin-yaml' +import dts from 'vite-plugin-dts' // https://vitejs.dev/config/ // https://stackoverflow.com/a/74397545/445757 export default defineConfig({ - plugins: [vue(), ViteYaml()], + plugins: [ + vue(), + ViteYaml(), + dts({ + include: ['env.d.ts', 'src/**/*.ts', 'src/**/*.vue'], + exclude: ['src/tests/**/*'], + outDir: 'dist', + copyDtsFiles: true, + rollupTypes: false, + compilerOptions: { + customConditions: ['userfrosting:monorepo'] + } + }) + ], // Add UIKit alias : https://stackoverflow.com/a/75264118/445757 resolve: { + conditions: ['userfrosting:monorepo', 'import'], alias: { '../../images/backgrounds': 'uikit/src/images/backgrounds', '../../images/components': 'uikit/src/images/components', '../../images/icons': 'uikit/src/images/icons' } }, + build: { + lib: { + entry: { + index: resolve(__dirname, 'src/index.ts'), + 'components/pages/account': resolve(__dirname, 'src/components/Pages/Account/index.ts'), + 'components/pages/admin': resolve(__dirname, 'src/components/Pages/Admin/index.ts'), + components: resolve(__dirname, 'src/components/index.ts'), + plugins: resolve(__dirname, 'src/plugins/index.ts'), + views: resolve(__dirname, 'src/views/index.ts') + }, + formats: ['es'] + }, + rollupOptions: { + external: [ + 'vue', + 'vue-router', + 'axios', + 'pinia', + 'pinia-plugin-persistedstate', + 'uikit', + 'uikit/dist/js/uikit-icons', + '@fontsource/montserrat', + '@fontsource/mulish', + '@fortawesome/fontawesome-free', + '@fortawesome/fontawesome-svg-core', + '@fortawesome/free-brands-svg-icons', + '@fortawesome/free-regular-svg-icons', + '@fortawesome/free-solid-svg-icons', + '@fortawesome/vue-fontawesome', + '@userfrosting/sprinkle-core', + '@userfrosting/sprinkle-core/composables', + '@userfrosting/sprinkle-core/interfaces', + '@userfrosting/sprinkle-core/stores', + '@userfrosting/sprinkle-account', + '@userfrosting/sprinkle-account/composables', + '@userfrosting/sprinkle-account/guards', + '@userfrosting/sprinkle-account/interfaces', + '@userfrosting/sprinkle-account/stores', + '@userfrosting/sprinkle-admin', + '@userfrosting/sprinkle-admin/components', + '@userfrosting/sprinkle-admin/composables', + '@userfrosting/sprinkle-admin/interfaces' + ], + output: { + preserveModules: false, + entryFileNames: '[name].js', + assetFileNames: (assetInfo) => { + // Keep LESS files in their original location + if (assetInfo.name?.endsWith('.less')) { + return 'less/[name][extname]' + } + return 'assets/[name][extname]' + } + } + } + }, test: { coverage: { reportsDirectory: './_meta/_coverage', diff --git a/tsconfig.json b/tsconfig.json index 4c9836356..2aca6b398 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,7 +22,8 @@ "baseUrl": ".", "rootDir": "packages", "allowJs": true, - "types": ["@modyfi/vite-plugin-yaml/modules"] + "types": ["@modyfi/vite-plugin-yaml/modules"], + "customConditions": ["userfrosting:monorepo"] }, "references": [ { diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..783b2f5b1 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,64 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueDevTools from 'vite-plugin-vue-devtools' +import ViteYaml from '@modyfi/vite-plugin-yaml' + +// Get vite port from env, default to 5173 +const vitePort = parseInt(process.env.VITE_PORT || '5173', 10) + +// https://vitejs.dev/config/ +// Monorepo-specific Vite configuration for development +export default defineConfig({ + plugins: [ + vue(), + ViteYaml(), + vueDevTools({ + appendTo: 'packages/skeleton/app/assets/main.ts' + }) + ], + // Use 'userfrosting:monorepo' condition to resolve to source TS files for HMR in monorepo + resolve: { + conditions: ['userfrosting:monorepo', 'import'] + }, + server: { + host: true, // Allows external access (needed for Docker) + strictPort: true, + port: vitePort, + origin: `http://localhost:${vitePort}`, + }, + root: 'packages/skeleton/app/assets/', + base: '/assets/', + build: { + outDir: 'public/assets', + assetsDir: '', + emptyOutDir: true, + manifest: true, + rollupOptions: { + input: { + main: 'packages/skeleton/app/assets/main.ts' + } + } + }, + // Fix uikit path issue + // @see : https://github.com/uikit/uikit/issues/5024 + css: { + preprocessorOptions: { + less: { + relativeUrls: 'all' + } + } + }, + // Force optimization of UiKit (not module packages) in dev mode + // to avoid the error: + // "importing binding name 'default' cannot be resolved by star export entries" + // Treat all sprinkles as source code (not prebuilt) for HMR + optimizeDeps: { + include: ['uikit', 'uikit/dist/js/uikit-icons'], + exclude: [ + '@userfrosting/sprinkle-core', + '@userfrosting/sprinkle-account', + '@userfrosting/sprinkle-admin', + '@userfrosting/theme-pink-cupcake' + ] + } +}) diff --git a/vitest.config.ts b/vitest.config.ts index bb22eab29..1b085ba24 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,6 +2,9 @@ import { defineConfig } from 'vite' export default defineConfig({ + resolve: { + conditions: ['userfrosting:monorepo', 'import'] + }, test: { coverage: { enabled: true,