From bdc30ca23e099afb96044b25d96a44ec9c6f94a7 Mon Sep 17 00:00:00 2001 From: Katerina Skroumpelou Date: Tue, 14 Nov 2023 10:15:18 +0200 Subject: [PATCH] feat(nuxt): load nuxt config programmatically (#20185) --- e2e/nuxt/src/nuxt.test.ts | 2 + package.json | 2 + packages/nuxt/package.json | 2 + .../nuxt/src/executors/build/build.impl.ts | 51 +-- .../nuxt/src/executors/serve/serve.impl.ts | 62 ++- .../__snapshots__/application.spec.ts.snap | 89 +++- .../src/generators/application/application.ts | 5 + .../application/files/nuxt.config.ts__tmpl__ | 19 +- .../generators/application/lib/add-targets.ts | 4 +- packages/nuxt/src/utils/executor-utils.ts | 54 +++ .../preset/__snapshots__/preset.spec.ts.snap | 2 +- pnpm-lock.yaml | 420 ++++++++++-------- 12 files changed, 473 insertions(+), 239 deletions(-) create mode 100644 packages/nuxt/src/utils/executor-utils.ts diff --git a/e2e/nuxt/src/nuxt.test.ts b/e2e/nuxt/src/nuxt.test.ts index c0194765aa8a2..9305ce7e3e09c 100644 --- a/e2e/nuxt/src/nuxt.test.ts +++ b/e2e/nuxt/src/nuxt.test.ts @@ -31,6 +31,8 @@ describe('Nuxt Plugin', () => { expect(result).toContain( `Successfully ran target build for project ${app}` ); + checkFilesExist(`dist/${app}/.nuxt/nuxt.d.ts`); + checkFilesExist(`dist/${app}/.output/nitro.json`); }); it('should test application', async () => { diff --git a/package.json b/package.json index 6359b778fb0f0..0e6b9690b7466 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,8 @@ "@nestjs/schematics": "^9.1.0", "@nestjs/swagger": "^6.0.0", "@nestjs/testing": "^9.0.0", + "@nuxt/kit": "^3.8.1", + "@nuxt/schema":"^3.8.1", "@ngrx/effects": "~16.0.0", "@ngrx/router-store": "~16.0.0", "@ngrx/store": "~16.0.0", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 11b0734d5a57a..78ff033454b13 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -30,6 +30,8 @@ "dependencies": { "nuxi": "npm:nuxi-nightly@3.9.2-1699007958.251cab5", "tslib": "^2.3.0", + "@nuxt/kit": "^3.8.1", + "@nuxt/schema": "^3.8.1", "@nx/devkit": "file:../devkit", "@nx/js": "file:../js", "@nx/eslint": "file:../eslint", diff --git a/packages/nuxt/src/executors/build/build.impl.ts b/packages/nuxt/src/executors/build/build.impl.ts index 9d2739766149e..86ecae45cfe8c 100644 --- a/packages/nuxt/src/executors/build/build.impl.ts +++ b/packages/nuxt/src/executors/build/build.impl.ts @@ -1,10 +1,10 @@ import { ExecutorContext, joinPathFragments } from '@nx/devkit'; import { NuxtBuildExecutorOptions } from './schema'; - -// Required because nuxi is ESM package. -export function loadNuxiDynamicImport() { - return Function('return import("nuxi")')() as Promise; -} +import { + getCommonNuxtConfigOverrides, + loadNuxiDynamicImport, + loadNuxtKitDynamicImport, +} from '../../utils/executor-utils'; export async function* nuxtBuildExecutor( options: NuxtBuildExecutorOptions, @@ -13,40 +13,21 @@ export async function* nuxtBuildExecutor( const projectRoot = context.projectsConfigurations.projects[context.projectName].root; const { runCommand } = await loadNuxiDynamicImport(); + const { loadNuxtConfig } = await loadNuxtKitDynamicImport(); + const config = await loadNuxtConfig({ + cwd: joinPathFragments(context.root, projectRoot), + }); + try { await runCommand('build', [projectRoot], { overrides: { ...options, - workspaceDir: context.root, - buildDir: joinPathFragments(context.root, options.outputPath, '.nuxt'), - typescript: { - typeCheck: true, - tsConfig: { - extends: joinPathFragments( - context.root, - projectRoot, - 'tsconfig.app.json' - ), - }, - }, - imports: { - autoImport: false, - }, - nitro: { - output: { - dir: joinPathFragments(context.root, options.outputPath, '.output'), - serverDir: joinPathFragments( - context.root, - options.outputPath, - '.output/server' - ), - publicDir: joinPathFragments( - context.root, - options.outputPath, - '.output/public' - ), - }, - }, + ...getCommonNuxtConfigOverrides( + config, + context.root, + projectRoot, + options.outputPath + ), }, }); return { success: true }; diff --git a/packages/nuxt/src/executors/serve/serve.impl.ts b/packages/nuxt/src/executors/serve/serve.impl.ts index 3ca8ab3392197..f33fb0fc42e66 100644 --- a/packages/nuxt/src/executors/serve/serve.impl.ts +++ b/packages/nuxt/src/executors/serve/serve.impl.ts @@ -1,11 +1,12 @@ import { ExecutorContext, joinPathFragments } from '@nx/devkit'; import { NuxtServeExecutorOptions } from './schema'; import { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable'; - -// Required because nuxi is ESM package. -export function loadNuxiDynamicImport() { - return Function('return import("nuxi")')() as Promise; -} +import { + getCommonNuxtConfigOverrides, + loadNuxiDynamicImport, + loadNuxtKitDynamicImport, +} from '../../utils/executor-utils'; +import { NuxtOptions } from '@nuxt/schema'; export async function* nuxtServeExecutor( options: NuxtServeExecutorOptions, @@ -13,18 +14,29 @@ export async function* nuxtServeExecutor( ) { const projectRoot = context.projectsConfigurations.projects[context.projectName].root; + + const { loadNuxtConfig } = await loadNuxtKitDynamicImport(); + const config = await loadNuxtConfig({ + cwd: joinPathFragments(context.root, projectRoot), + }); + yield* createAsyncIterable<{ success: boolean; baseUrl: string }>( async ({ next, error }) => { try { const { runCommand } = await loadNuxiDynamicImport(); + await runCommand('dev', [projectRoot], { - overrides: getConfigOverrides(options, context.root, projectRoot), + // Options passed through CLI or project.json get precedence over nuxt.config.ts + overrides: getConfigOverrides(options, config, projectRoot, context), }); next({ success: true, - baseUrl: `${options.https ? 'https' : 'http'}://${ - options.host ?? 'localhost' - }:${options.port ?? '4200'}`, + // Options passed through CLI or project.json get precedence over nuxt.config.ts + baseUrl: `${ + options.https ? 'https' : config.devServer.https ? 'https' : 'http' + }://${options.host ?? config.devServer.host ?? 'localhost'}:${ + options.port ?? config.devServer.port ?? '4200' + }`, }); } catch (err) { console.error(err); @@ -36,22 +48,24 @@ export async function* nuxtServeExecutor( function getConfigOverrides( options: NuxtServeExecutorOptions, - workspaceRoot: string, - projectRoot: string + config: NuxtOptions, + projectRoot: string, + context: ExecutorContext ): { [key: string]: any } { - const json: { [key: string]: any } = { - workspaceDir: workspaceRoot, - typescript: { - typeCheck: true, - tsConfig: { - extends: joinPathFragments( - workspaceRoot, - projectRoot, - 'tsconfig.app.json' - ), - }, - }, - }; + let outputPath = ''; + for (const [_targetName, targetConfig] of Object.entries( + context.projectsConfigurations.projects[context.projectName].targets + )) { + if (targetConfig.executor === '@nx/nuxt:build') { + outputPath = targetConfig.options.outputPath; + } + } + const json = getCommonNuxtConfigOverrides( + config, + context.root, + projectRoot, + outputPath + ); if (options.debug !== undefined) { json.debug = options.debug; diff --git a/packages/nuxt/src/generators/application/__snapshots__/application.spec.ts.snap b/packages/nuxt/src/generators/application/__snapshots__/application.spec.ts.snap index f7afb5b95c1c9..dbad06c79934a 100644 --- a/packages/nuxt/src/generators/application/__snapshots__/application.spec.ts.snap +++ b/packages/nuxt/src/generators/application/__snapshots__/application.spec.ts.snap @@ -33,15 +33,32 @@ import { defineNuxtConfig } from 'nuxt/config'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ srcDir: 'src', + buildDir: 'dist/my-app/.nuxt', devtools: { enabled: true }, devServer: { host: 'localhost', port: 4200, }, + typescript: { + typeCheck: true, + tsConfig: { + extends: 'my-app/tsconfig.app.json', + }, + }, + imports: { + autoImport: false, + }, vite: { plugins: [nxViteTsPaths()], }, + nitro: { + output: { + dir: 'dist/my-app/.output', + serverDir: 'dist/my-app/.output/server', + publicDir: 'dist/my-app/.output/public', + }, + }, }); " `; @@ -55,12 +72,12 @@ exports[`app generated files content - as-provided general application should co "targets": { "serve": { "executor": "@nx/nuxt:serve", - "outputs": ["{options.outputFile}"], + "outputs": ["{options.outputPath}"], "options": {} }, "build": { "executor": "@nx/nuxt:build", - "outputs": ["{options.outputFile}"], + "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/my-app" } @@ -209,17 +226,34 @@ import { defineNuxtConfig } from 'nuxt/config'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ srcDir: 'src', + buildDir: 'dist/myapp1/.nuxt', devtools: { enabled: true }, devServer: { host: 'localhost', port: 4200, }, + typescript: { + typeCheck: true, + tsConfig: { + extends: 'myapp1/tsconfig.app.json', + }, + }, + imports: { + autoImport: false, + }, css: ['~/assets/css/styles.css'], vite: { plugins: [nxViteTsPaths()], }, + nitro: { + output: { + dir: 'dist/myapp1/.output', + serverDir: 'dist/myapp1/.output/server', + publicDir: 'dist/myapp1/.output/public', + }, + }, }); " `; @@ -231,17 +265,34 @@ import { defineNuxtConfig } from 'nuxt/config'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ srcDir: 'src', + buildDir: 'dist/myapp3/.nuxt', devtools: { enabled: true }, devServer: { host: 'localhost', port: 4200, }, + typescript: { + typeCheck: true, + tsConfig: { + extends: 'myapp3/tsconfig.app.json', + }, + }, + imports: { + autoImport: false, + }, css: ['~/assets/css/styles.less'], vite: { plugins: [nxViteTsPaths()], }, + nitro: { + output: { + dir: 'dist/myapp3/.output', + serverDir: 'dist/myapp3/.output/server', + publicDir: 'dist/myapp3/.output/public', + }, + }, }); " `; @@ -253,17 +304,34 @@ import { defineNuxtConfig } from 'nuxt/config'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ srcDir: 'src', + buildDir: 'dist/myapp2/.nuxt', devtools: { enabled: true }, devServer: { host: 'localhost', port: 4200, }, + typescript: { + typeCheck: true, + tsConfig: { + extends: 'myapp2/tsconfig.app.json', + }, + }, + imports: { + autoImport: false, + }, css: ['~/assets/css/styles.scss'], vite: { plugins: [nxViteTsPaths()], }, + nitro: { + output: { + dir: 'dist/myapp2/.output', + serverDir: 'dist/myapp2/.output/server', + publicDir: 'dist/myapp2/.output/public', + }, + }, }); " `; @@ -275,15 +343,32 @@ import { defineNuxtConfig } from 'nuxt/config'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ srcDir: 'src', + buildDir: 'dist/myapp4/.nuxt', devtools: { enabled: true }, devServer: { host: 'localhost', port: 4200, }, + typescript: { + typeCheck: true, + tsConfig: { + extends: 'myapp4/tsconfig.app.json', + }, + }, + imports: { + autoImport: false, + }, vite: { plugins: [nxViteTsPaths()], }, + nitro: { + output: { + dir: 'dist/myapp4/.output', + serverDir: 'dist/myapp4/.output/server', + publicDir: 'dist/myapp4/.output/public', + }, + }, }); " `; diff --git a/packages/nuxt/src/generators/application/application.ts b/packages/nuxt/src/generators/application/application.ts index 576190300454a..0e4e289410d61 100644 --- a/packages/nuxt/src/generators/application/application.ts +++ b/packages/nuxt/src/generators/application/application.ts @@ -54,6 +54,11 @@ export async function applicationGenerator(tree: Tree, schema: Schema) { dot: '.', tmpl: '', style: options.style, + projectRoot: options.appProjectRoot, + buildDirectory: joinPathFragments(`dist/${options.appProjectRoot}/.nuxt`), + nitroOutputDir: joinPathFragments( + `dist/${options.appProjectRoot}/.output` + ), } ); diff --git a/packages/nuxt/src/generators/application/files/nuxt.config.ts__tmpl__ b/packages/nuxt/src/generators/application/files/nuxt.config.ts__tmpl__ index 95112345a1481..2a1508b1f4c60 100644 --- a/packages/nuxt/src/generators/application/files/nuxt.config.ts__tmpl__ +++ b/packages/nuxt/src/generators/application/files/nuxt.config.ts__tmpl__ @@ -4,11 +4,21 @@ import { defineNuxtConfig } from 'nuxt/config'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ srcDir: 'src', + buildDir: '<%= buildDirectory %>', devtools: { enabled: true }, devServer: { host: 'localhost', port: 4200, }, + typescript: { + typeCheck: true, + tsConfig: { + extends: '<%= projectRoot %>/tsconfig.app.json', + }, + }, + imports: { + autoImport: false, + }, <% if (style !== 'none') { %> css: ['~/assets/css/styles.<%= style %>'], <% } %> @@ -16,5 +26,12 @@ export default defineNuxtConfig({ plugins: [ nxViteTsPaths() ], - } + }, + nitro: { + output: { + dir: '<%= nitroOutputDir %>', + serverDir: '<%= nitroOutputDir %>/server', + publicDir: '<%= nitroOutputDir %>/public', + }, + }, }); diff --git a/packages/nuxt/src/generators/application/lib/add-targets.ts b/packages/nuxt/src/generators/application/lib/add-targets.ts index b095e16f34de8..b8c68580e9ef4 100644 --- a/packages/nuxt/src/generators/application/lib/add-targets.ts +++ b/packages/nuxt/src/generators/application/lib/add-targets.ts @@ -8,7 +8,7 @@ export function addServeTarget(tree: Tree, projectName: string) { const projectConfig = readProjectConfiguration(tree, projectName); projectConfig.targets['serve'] = { executor: '@nx/nuxt:serve', - outputs: ['{options.outputFile}'], + outputs: ['{options.outputPath}'], options: {}, }; updateProjectConfiguration(tree, projectName, projectConfig); @@ -22,7 +22,7 @@ export function addBuildTarget( const projectConfig = readProjectConfiguration(tree, projectName); projectConfig.targets['build'] = { executor: '@nx/nuxt:build', - outputs: ['{options.outputFile}'], + outputs: ['{options.outputPath}'], options: { outputPath: outputPath, }, diff --git a/packages/nuxt/src/utils/executor-utils.ts b/packages/nuxt/src/utils/executor-utils.ts new file mode 100644 index 0000000000000..329d6a04b1057 --- /dev/null +++ b/packages/nuxt/src/utils/executor-utils.ts @@ -0,0 +1,54 @@ +import type { NuxtOptions } from '@nuxt/schema'; +import { joinPathFragments } from '@nx/devkit'; + +// Required because nuxi is ESM package. +export function loadNuxiDynamicImport() { + return Function('return import("nuxi")')() as Promise; +} + +export function loadNuxtKitDynamicImport() { + return Function('return import("@nuxt/kit")')() as Promise< + typeof import('@nuxt/kit') + >; +} + +export function getCommonNuxtConfigOverrides( + config: NuxtOptions, + contextRoot: string, + projectRoot: string, + outputPath: string +): Record { + return { + workspaceDir: contextRoot, + buildDir: config?.buildDir + ? joinPathFragments( + contextRoot, + // By default, nuxt prepends rootDir (which is workspaceDir + projectRoot) + // to buildDir. So we need to remove it, in order to preserve the expected behaviour + // If you set `buildDir` in your nuxt.config.ts as `dist/my-app` you expect + // it to be at the workspace root, as is true with all our other executors. + config.buildDir.replace(config.rootDir, '') + ) + : joinPathFragments(contextRoot, outputPath, '.nuxt'), + nitro: { + output: { + dir: config?.nitro?.output?.dir + ? joinPathFragments(contextRoot, config.nitro.output.dir) + : joinPathFragments(contextRoot, outputPath, '.output'), + serverDir: config?.nitro?.output?.serverDir + ? joinPathFragments(contextRoot, config.nitro.output.serverDir) + : joinPathFragments(contextRoot, outputPath, '.output/server'), + publicDir: config?.nitro?.output?.publicDir + ? joinPathFragments(contextRoot, config.nitro.output.publicDir) + : joinPathFragments(contextRoot, outputPath, '.output/public'), + }, + }, + typescript: { + tsConfig: { + extends: config?.typescript?.tsConfig?.extends + ? joinPathFragments(contextRoot, config.typescript.tsConfig.extends) + : joinPathFragments(contextRoot, projectRoot, 'tsconfig.app.json'), + }, + }, + }; +} diff --git a/packages/workspace/src/generators/preset/__snapshots__/preset.spec.ts.snap b/packages/workspace/src/generators/preset/__snapshots__/preset.spec.ts.snap index 069e055fc861e..92988877832ea 100644 --- a/packages/workspace/src/generators/preset/__snapshots__/preset.spec.ts.snap +++ b/packages/workspace/src/generators/preset/__snapshots__/preset.spec.ts.snap @@ -41,7 +41,7 @@ exports[`preset should create files (preset = nuxt-standalone) 1`] = ` "executor": "@nx/nuxt:serve", "options": {}, "outputs": [ - "{options.outputFile}", + "{options.outputPath}", ], } `; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b07dacf951b4..2d58a56f2b806 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - overrides: minimist: ^1.2.6 underscore: ^1.12.1 @@ -250,7 +246,7 @@ devDependencies: version: 9.1.6(@nestjs/common@9.1.6)(@nestjs/core@9.1.6) '@nestjs/schematics': specifier: ^9.1.0 - version: 9.1.0(typescript@5.2.2) + version: 9.1.0(chokidar@3.5.3)(typescript@4.9.4) '@nestjs/swagger': specifier: ^6.0.0 version: 6.1.3(@nestjs/common@9.1.6)(@nestjs/core@9.1.6)(reflect-metadata@0.1.13) @@ -266,6 +262,12 @@ devDependencies: '@ngrx/store': specifier: ~16.0.0 version: 16.0.0(@angular/core@17.0.0)(rxjs@7.8.1) + '@nuxt/kit': + specifier: ^3.8.1 + version: 3.8.1(rollup@2.79.0) + '@nuxt/schema': + specifier: ^3.8.1 + version: 3.8.1(rollup@2.79.0) '@nx/angular': specifier: 17.1.1 version: 17.1.1(@angular-devkit/build-angular@17.0.0)(@angular-devkit/core@17.0.0)(@angular-devkit/schematics@17.0.0)(@schematics/angular@17.0.0)(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.16.9)(cypress@13.0.0)(esbuild@0.19.5)(eslint@8.46.0)(html-webpack-plugin@5.5.0)(nx@17.1.1)(rxjs@7.8.1)(ts-node@10.9.1)(typescript@5.2.2)(verdaccio@5.15.4) @@ -577,7 +579,7 @@ devDependencies: version: 2.14.0(eslint@8.46.0) eslint-plugin-import: specifier: 2.26.0 - version: 2.26.0(@typescript-eslint/parser@6.10.0)(eslint@8.46.0) + version: 2.26.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.2)(eslint@8.46.0) eslint-plugin-jsx-a11y: specifier: 6.6.1 version: 6.6.1(eslint@8.46.0) @@ -4777,6 +4779,11 @@ packages: regenerator-runtime: 0.14.0 dev: true + /@babel/standalone@7.23.3: + resolution: {integrity: sha512-ZfB6wyLVqr9ANl1F0l/0aqoNUE1/kcWlQHmk0wF9OTEKDK1whkXYLruRMt53zY556yS2+84EsOpr1hpjZISTRg==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} @@ -6119,7 +6126,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - dev: true /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} @@ -6487,20 +6493,6 @@ packages: - chokidar dev: true - /@nestjs/schematics@9.1.0(typescript@5.2.2): - resolution: {integrity: sha512-/7CyMTnPJSK9/xD9CkCqwuHPOlHVlLC2RDnbdCJ7mIO07SdbBbY14msTqtYW9VRQtsjZPLh1GTChf7ryJUImwA==} - peerDependencies: - typescript: '>=4.3.5' - dependencies: - '@angular-devkit/core': 15.2.4(chokidar@3.5.3) - '@angular-devkit/schematics': 15.2.4(chokidar@3.5.3) - jsonc-parser: 3.2.0 - pluralize: 8.0.0 - typescript: 5.2.2 - transitivePeerDependencies: - - chokidar - dev: true - /@nestjs/swagger@6.1.3(@nestjs/common@9.1.6)(@nestjs/core@9.1.6)(reflect-metadata@0.1.13): resolution: {integrity: sha512-H9C/yRgLFb5QrAt6iGrYmIX9X7Q0zXkgZaTNUATljUBra+RCWrEUbLHBcGjTAOtcIyGV/vmyCLv68YSVcZoE0Q==} peerDependencies: @@ -6993,42 +6985,6 @@ packages: - typescript dev: true - /@nrwl/js@15.8.0(@swc-node/register@1.6.8)(@swc/core@1.3.86)(nx@15.8.0)(prettier@2.7.1)(typescript@5.2.2): - resolution: {integrity: sha512-l2Q7oFpzx6ul7G0nKpMkrvnIEaOY+X8fc2g2Db5WqpnnBdfkrtWXZPg/O4DQ1p9O6BXrZ+Q2AK9bfgnliiwyEg==} - dependencies: - '@babel/core': 7.22.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.9) - '@babel/plugin-proposal-decorators': 7.21.0(@babel/core@7.22.9) - '@babel/plugin-transform-runtime': 7.22.9(@babel/core@7.22.9) - '@babel/preset-env': 7.22.5(@babel/core@7.22.9) - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.9) - '@babel/runtime': 7.22.6 - '@nrwl/devkit': 15.8.0(nx@15.8.0)(typescript@5.2.2) - '@nrwl/workspace': 15.8.0(@swc-node/register@1.6.8)(@swc/core@1.3.86)(eslint@8.46.0)(prettier@2.7.1)(typescript@5.2.2) - '@phenomnomnominal/tsquery': 4.1.1(typescript@5.2.2) - babel-plugin-const-enum: 1.2.0(@babel/core@7.22.9) - babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.22.9) - chalk: 4.1.2 - fast-glob: 3.2.7 - fs-extra: 11.1.1 - ignore: 5.2.4 - js-tokens: 4.0.0 - minimatch: 3.0.5 - source-map-support: 0.5.19 - tree-kill: 1.2.2 - tslib: 2.6.2 - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - debug - - nx - - prettier - - supports-color - - typescript - dev: true - /@nrwl/js@17.1.1(@swc-node/register@1.6.8)(@swc/core@1.3.86)(@types/node@18.16.9)(nx@17.1.1)(typescript@5.2.2)(verdaccio@5.15.4): resolution: {integrity: sha512-1w8M9am/OXFLhRFLi5jzwDm2RfIRtFeI4Oinuuam2sTjJ46BplRzRmszYnX25J0a1OHH1P/hgVKq4iHcKOo8nQ==} dependencies: @@ -7055,7 +7011,7 @@ packages: optional: true dependencies: '@nrwl/devkit': 15.8.0(nx@15.8.0)(typescript@5.2.2) - '@nrwl/js': 15.8.0(@swc-node/register@1.6.8)(@swc/core@1.3.86)(nx@15.8.0)(prettier@2.7.1)(typescript@5.2.2) + '@nrwl/js': 15.8.0(@swc-node/register@1.6.8)(@swc/core@1.3.86)(eslint@8.46.0)(nx@17.1.1)(prettier@2.7.1)(typescript@5.2.2) '@phenomnomnominal/tsquery': 4.1.1(typescript@5.2.2) eslint: 8.46.0 tmp: 0.2.1 @@ -7335,6 +7291,56 @@ packages: - debug dev: true + /@nuxt/kit@3.8.1(rollup@2.79.0): + resolution: {integrity: sha512-DrhG1Z85iH68QOTkgfb0HVfM2g7+CfcMWrFWMDwck9ofyM2RXQUZyfmvMedwBnui1AjjpgpLO9078yZM+RqNUg==} + engines: {node: ^14.18.0 || >=16.10.0} + dependencies: + '@nuxt/schema': 3.8.1(rollup@2.79.0) + c12: 1.5.1 + consola: 3.2.3 + defu: 6.1.3 + globby: 13.2.2 + hash-sum: 2.0.0 + ignore: 5.2.4 + jiti: 1.21.0 + knitwork: 1.0.0 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.0.0 + semver: 7.5.4 + ufo: 1.3.1 + unctx: 2.3.1 + unimport: 3.5.0(rollup@2.79.0) + untyped: 1.4.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/schema@3.8.1(rollup@2.79.0): + resolution: {integrity: sha512-fSaWRcI/2mUskfTZTGSnH6Ny0x05CRzylbVn6WFV0d6UEKIVy42Qd6n+h7yoFfp4cq4nji6u16PT4SqS1DEhsw==} + engines: {node: ^14.18.0 || >=16.10.0} + dependencies: + '@nuxt/ui-templates': 1.3.1 + consola: 3.2.3 + defu: 6.1.3 + hookable: 5.5.3 + pathe: 1.1.1 + pkg-types: 1.0.3 + std-env: 3.4.3 + ufo: 1.3.1 + unimport: 3.5.0(rollup@2.79.0) + untyped: 1.4.0 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/ui-templates@1.3.1: + resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==} + dev: true + /@nuxtjs/opencollective@0.3.2: resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} @@ -9116,6 +9122,21 @@ packages: rollup: 2.79.0 dev: true + /@rollup/pluginutils@5.0.5(rollup@2.79.0): + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.79.0 + dev: true + /@rollup/pluginutils@5.0.5(rollup@4.3.0): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} @@ -13739,7 +13760,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /buffer-indexof-polyfill@1.0.2: resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} @@ -13793,6 +13813,24 @@ packages: engines: {node: '>= 0.8'} dev: true + /c12@1.5.1: + resolution: {integrity: sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg==} + dependencies: + chokidar: 3.5.3 + defu: 6.1.3 + dotenv: 16.3.1 + giget: 1.1.3 + jiti: 1.21.0 + mlly: 1.4.2 + ohash: 1.1.3 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + rc9: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /c8@7.13.0: resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} engines: {node: '>=10.12.0'} @@ -14295,6 +14333,10 @@ packages: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + /colors@1.1.2: resolution: {integrity: sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==} engines: {node: '>=0.1.90'} @@ -14333,7 +14375,6 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -14460,6 +14501,11 @@ packages: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} dev: true + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: true + /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: true @@ -14699,7 +14745,7 @@ packages: peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob-parent: 6.0.2 globby: 13.2.2 normalize-path: 3.0.0 @@ -15522,6 +15568,10 @@ packages: /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + /defu@6.1.3: + resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} + dev: true + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -15557,6 +15607,10 @@ packages: engines: {node: '>=6'} dev: true + /destr@2.0.2: + resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} + dev: true + /destroy@1.0.4: resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} @@ -16345,35 +16399,6 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.6)(eslint@8.46.0): - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.10.0(eslint@8.46.0)(typescript@5.2.2) - debug: 3.2.7(supports-color@8.1.1) - eslint: 8.46.0 - eslint-import-resolver-node: 0.3.6 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-cypress@2.14.0(eslint@8.46.0): resolution: {integrity: sha512-eW6tv7iIg7xujleAJX4Ujm649Bf5jweqa4ObPEIuueYRyLZt7qXGWhCY/n4bfeFW/j6nQZwbIBHKZt6EKcL/cg==} peerDependencies: @@ -16414,37 +16439,6 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.10.0)(eslint@8.46.0): - resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.10.0(eslint@8.46.0)(typescript@5.2.2) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 8.46.0 - eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.6)(eslint@8.46.0) - has: 1.0.3 - is-core-module: 2.11.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.6.1(eslint@8.46.0): resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==} engines: {node: '>=4.0'} @@ -16968,6 +16962,17 @@ packages: micromatch: 4.0.5 dev: true + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + /fast-json-parse@1.0.3: resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} dev: true @@ -17664,6 +17669,21 @@ packages: assert-plus: 1.0.0 dev: true + /giget@1.1.3: + resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} + hasBin: true + dependencies: + colorette: 2.0.20 + defu: 6.1.3 + https-proxy-agent: 7.0.2 + mri: 1.2.0 + node-fetch-native: 1.4.1 + pathe: 1.1.1 + tar: 6.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -17862,7 +17882,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 @@ -17993,6 +18013,10 @@ packages: dependencies: function-bind: 1.1.1 + /hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + dev: true + /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: false @@ -18062,6 +18086,10 @@ packages: react-is: 16.13.1 dev: true + /hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + dev: true + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -19589,8 +19617,8 @@ packages: - ts-node dev: true - /jiti@1.20.0: - resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true dev: true @@ -19957,6 +19985,10 @@ packages: engines: {node: '>= 8'} dev: true + /knitwork@1.0.0: + resolution: {integrity: sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==} + dev: true + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -20049,7 +20081,6 @@ packages: source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} @@ -20206,6 +20237,14 @@ packages: engines: {node: '>=14'} dev: false + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 + dev: true + /localtunnel@2.0.2: resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==} engines: {node: '>=8.3.0'} @@ -21491,7 +21530,6 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.1 - dev: false /modify-values@1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} @@ -21785,6 +21823,10 @@ packages: lodash: 4.17.21 dev: true + /node-fetch-native@1.4.1: + resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==} + dev: true + /node-fetch@2.6.12: resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} @@ -22259,6 +22301,10 @@ packages: - encoding dev: true + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + dev: true + /on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -22759,7 +22805,6 @@ packages: /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: false /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} @@ -22779,6 +22824,10 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -22882,7 +22931,6 @@ packages: jsonc-parser: 3.2.0 mlly: 1.4.2 pathe: 1.1.1 - dev: false /pkginfo@0.4.1: resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} @@ -23312,7 +23360,7 @@ packages: webpack: ^5.0.0 dependencies: cosmiconfig: 8.2.0 - jiti: 1.20.0 + jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.3 webpack: 5.89.0(@swc/core@1.3.86)(esbuild@0.19.5) @@ -24380,6 +24428,14 @@ packages: webpack: 5.88.0(@swc/core@1.3.86)(esbuild@0.19.5) dev: true + /rc9@2.1.1: + resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==} + dependencies: + defu: 6.1.3 + destr: 2.0.2 + flat: 5.0.2 + dev: true + /react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} peerDependencies: @@ -25386,7 +25442,6 @@ packages: chokidar: 3.5.3 immutable: 4.1.0 source-map-js: 1.0.2 - dev: true /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} @@ -25459,6 +25514,10 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: true + /scule@1.0.0: + resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==} + dev: true + /secure-compare@3.0.1: resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} dev: true @@ -25990,7 +26049,6 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} @@ -26187,6 +26245,10 @@ packages: resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: false + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: true + /steno@0.4.4: resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==} dependencies: @@ -26354,6 +26416,12 @@ packages: acorn: 8.10.0 dev: false + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.10.0 + dev: true + /strip-outer@2.0.0: resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -26896,7 +26964,6 @@ packages: acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -27448,7 +27515,6 @@ packages: /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} - dev: false /uglify-es@3.3.9: resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} @@ -27477,6 +27543,15 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unctx@2.3.1: + resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} + dependencies: + acorn: 8.10.0 + estree-walker: 3.0.3 + magic-string: 0.30.5 + unplugin: 1.5.0 + dev: true + /underscore.string@2.4.0: resolution: {integrity: sha512-yxkabuCaIBnzfIvX3kBxQqCs0ar/bfJwDnFEHJUm/ZrRVhT3IItdRF5cZjARLzEnyQYtIUhsZ2LG2j3HidFOFQ==} dev: true @@ -27527,6 +27602,24 @@ packages: vfile: 5.3.7 dev: true + /unimport@3.5.0(rollup@2.79.0): + resolution: {integrity: sha512-0Ei1iTeSYxs7oxxUf79/KaBc2dPjZxe7qdVpw7yIz5YcdTZjmBYO6ToLDW+fX9QOHiueZ3xtwb5Z/wqaSfXx6A==} + dependencies: + '@rollup/pluginutils': 5.0.5(rollup@2.79.0) + escape-string-regexp: 5.0.0 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + mlly: 1.4.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + scule: 1.0.0 + strip-literal: 1.3.0 + unplugin: 1.5.0 + transitivePeerDependencies: + - rollup + dev: true + /union@0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} @@ -27673,6 +27766,21 @@ packages: engines: {node: '>=8'} dev: true + /untyped@1.4.0: + resolution: {integrity: sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==} + hasBin: true + dependencies: + '@babel/core': 7.23.2 + '@babel/standalone': 7.23.3 + '@babel/types': 7.23.0 + defu: 6.1.3 + jiti: 1.21.0 + mri: 1.2.0 + scule: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /unzipper@0.10.11: resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==} dependencies: @@ -28083,7 +28191,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.0(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + vite: 4.5.0(@types/node@18.16.9)(less@4.2.0)(sass@1.69.5)(stylus@0.59.0)(terser@5.24.0) transitivePeerDependencies: - '@types/node' - less @@ -28130,45 +28238,6 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vite@4.5.0(@types/node@18.16.9)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.16.9 - esbuild: 0.18.17 - less: 4.1.3 - postcss: 8.4.31 - rollup: 3.28.0 - sass: 1.55.0 - stylus: 0.59.0 - optionalDependencies: - fsevents: 2.3.3 - dev: false - /vite@4.5.0(@types/node@18.16.9)(less@4.2.0)(sass@1.69.5)(stylus@0.59.0)(terser@5.24.0): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -28207,7 +28276,6 @@ packages: terser: 5.24.0 optionalDependencies: fsevents: 2.3.3 - dev: true /vitest@0.32.0(less@4.1.3)(sass@1.55.0)(stylus@0.59.0): resolution: {integrity: sha512-SW83o629gCqnV3BqBnTxhB10DAwzwEx3z+rqYZESehUB+eWsJxwcBQx7CKy0otuGMJTYh7qCVuUX23HkftGl/Q==} @@ -29173,3 +29241,7 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: true + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false