diff --git a/.gitignore b/.gitignore index 50d02ebc..fc77dddb 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ tmp-package-registry changesets-summary.json -# DMNO files ### +# dmno files ### # local cache for resolved values **/.dmno/cache.json # encryption key used for cache @@ -28,4 +28,5 @@ changesets-summary.json **/.dmno/.icon-cache # local config overrides **/.dmno/.env.local - +# built/flattened config +**/.dmno-built diff --git a/example-repo/.dmno/config.mts b/example-repo/.dmno/config.mts index a5f7fa9e..cac9c7fa 100644 --- a/example-repo/.dmno/config.mts +++ b/example-repo/.dmno/config.mts @@ -3,21 +3,17 @@ import { OnePasswordDmnoPlugin, OnePasswordTypes } from '@dmno/1password-plugin' import { EncryptedVaultDmnoPlugin, EncryptedVaultTypes } from '@dmno/encrypted-vault-plugin'; - const OnePassSecretsProd = new OnePasswordDmnoPlugin('1pass/prod', { token: configPath('OP_TOKEN'), envItemLink: 'https://start.1password.com/open/i?a=I3GUA2KU6BD3FBHA47QNBIVEV4&v=ut2dftalm3ugmxc6klavms6tfq&i=n4wmgfq77mydg5lebtroa3ykvm&h=dmnoinc.1password.com', // token: InjectPluginInputByType, // token: 'asdf', }); -const OnePassSecretsDev = new OnePasswordDmnoPlugin('1pass', { +const OnePassSecretsDev = new OnePasswordDmnoPlugin('1pass/dev', { token: configPath('OP_TOKEN'), - envItemLink: 'https://start.1password.com/open/i?a=I3GUA2KU6BD3FBHA47QNBIVEV4&v=ut2dftalm3ugmxc6klavms6tfq&i=n4wmgfq77mydg5lebtroa3ykvm&h=dmnoinc.1password.com', - // token: InjectPluginInputByType, - // token: 'asdf', + envItemLink: 'https://start.1password.com/open/i?a=I3GUA2KU6BD3FBHA47QNBIVEV4&v=ut2dftalm3ugmxc6klavms6tfq&i=4u4klfhpldobgdxrcjwb2bqsta&h=dmnoinc.1password.com', }); - const ProdVault = new EncryptedVaultDmnoPlugin('vault/prod', { key: configPath('DMNO_VAULT_KEY'), name: 'prod', @@ -58,8 +54,6 @@ export default defineDmnoService({ }), }, - - DMNO_VAULT_KEY: { extends: EncryptedVaultTypes.encryptionKey, // required: true diff --git a/example-repo/.gitignore b/example-repo/.gitignore index 79df1944..9dfff144 100644 --- a/example-repo/.gitignore +++ b/example-repo/.gitignore @@ -6,3 +6,7 @@ **/.dmno/.typegen # iconify cache used in generated types **/.dmno/.icon-cache +# built/flattened config +**/.dmno-built +# local config overrides +**/.dmno/.env.local diff --git a/example-repo/packages/api/.dmno/config.mts b/example-repo/packages/api/.dmno/config.mts index 13eda0eb..82ead840 100644 --- a/example-repo/packages/api/.dmno/config.mts +++ b/example-repo/packages/api/.dmno/config.mts @@ -2,7 +2,7 @@ import { defineDmnoService, DmnoBaseTypes, NodeEnvType, configPath, dmnoFormula, import { OnePasswordDmnoPlugin } from '@dmno/1password-plugin'; import { EncryptedVaultDmnoPlugin } from '@dmno/encrypted-vault-plugin'; -const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass'); +const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass/prod'); const VaultPlugin = EncryptedVaultDmnoPlugin.injectInstance('vault/prod'); export default defineDmnoService({ @@ -11,6 +11,7 @@ export default defineDmnoService({ pick: [ 'NODE_ENV', 'DMNO_ENV', + 'ROOT_ONLY', ], schema: { OP_ITEM_1: { @@ -27,6 +28,9 @@ export default defineDmnoService({ allowedDomains: ['*'] }, }, + // REQUIRED_ITEM: { + // required: true, + // }, STRIPE_SECRET_KEY: { value: 'fake-stripe-secret-key', diff --git a/example-repo/packages/api/src/routes/index.ts b/example-repo/packages/api/src/routes/index.ts index 2d92fe96..0c317793 100644 --- a/example-repo/packages/api/src/routes/index.ts +++ b/example-repo/packages/api/src/routes/index.ts @@ -15,6 +15,7 @@ export type CustomRouter = Router; router.get('/', async (ctx) => { ctx.body = { systemStatus: 'nope', + pickedFromRoot: DMNO_CONFIG.ROOT_ONLY, envCheck: DMNO_CONFIG.API_ONLY || 'env-var-not-loaded', dmnoTest: DMNO_CONFIG.PORT, public: DMNO_PUBLIC_CONFIG.PUBLIC_EXAMPLE, diff --git a/example-repo/packages/astro-web/.dmno/config.mts b/example-repo/packages/astro-web/.dmno/config.mts index 92ee4659..e96b2800 100644 --- a/example-repo/packages/astro-web/.dmno/config.mts +++ b/example-repo/packages/astro-web/.dmno/config.mts @@ -1,7 +1,7 @@ -import { DmnoBaseTypes, DmnoDataType, DmnoDataTypeFactoryFn, ExtractSettingsSchema, cacheFunctionResult, createDmnoDataType, defineDmnoService, dmnoFormula, switchByDmnoEnv, switchByNodeEnv, } from 'dmno'; +import { DmnoBaseTypes, defineDmnoService } from 'dmno'; import { OnePasswordDmnoPlugin, OnePasswordTypes } from '@dmno/1password-plugin'; -const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass'); +const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass/prod'); export default defineDmnoService({ name: 'astroweb', diff --git a/example-repo/packages/group1/.dmno/config.mts b/example-repo/packages/group1/.dmno/config.mts index a842f013..fbf9e519 100644 --- a/example-repo/packages/group1/.dmno/config.mts +++ b/example-repo/packages/group1/.dmno/config.mts @@ -1,7 +1,7 @@ import { DmnoBaseTypes, defineDmnoService } from 'dmno'; import { OnePasswordDmnoPlugin } from '@dmno/1password-plugin'; -const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass'); +const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass/prod'); export default defineDmnoService({ name: 'group1', diff --git a/example-repo/packages/nextjs-web/.dmno/config.mts b/example-repo/packages/nextjs-web/.dmno/config.mts index c470b438..5f70b847 100644 --- a/example-repo/packages/nextjs-web/.dmno/config.mts +++ b/example-repo/packages/nextjs-web/.dmno/config.mts @@ -1,7 +1,7 @@ -import { DmnoBaseTypes, DmnoDataType, DmnoDataTypeFactoryFn, ExtractSettingsSchema, cacheFunctionResult, createDmnoDataType, defineDmnoService, dmnoFormula, switchByDmnoEnv, switchByNodeEnv, } from 'dmno'; +import { defineDmnoService } from 'dmno'; import { OnePasswordDmnoPlugin } from '@dmno/1password-plugin'; -const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass'); +const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass/prod'); export default defineDmnoService({ name: 'nextweb', diff --git a/example-repo/packages/webapp/.dmno/config.mts b/example-repo/packages/webapp/.dmno/config.mts index d3264c49..5109e7d4 100644 --- a/example-repo/packages/webapp/.dmno/config.mts +++ b/example-repo/packages/webapp/.dmno/config.mts @@ -1,7 +1,7 @@ import { DmnoBaseTypes, DmnoDataType, DmnoDataTypeFactoryFn, ExtractSettingsSchema, cacheFunctionResult, createDmnoDataType, defineDmnoService, dmnoFormula, switchByDmnoEnv, switchByNodeEnv, } from 'dmno'; import { OnePasswordDmnoPlugin } from '@dmno/1password-plugin'; -const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass'); +const OnePassBackend = OnePasswordDmnoPlugin.injectInstance('1pass/prod'); const customUrlType = createDmnoDataType({ typeLabel: 'my-custom-url', @@ -41,10 +41,10 @@ export default defineDmnoService({ } ], schema: { - // OP_ITEM_1: { - // sensitive: true, - // value: OnePassBackend.item(), - // }, + OP_ITEM_1: { + sensitive: true, + value: OnePassBackend.item(), + }, // EX1: { // value: (ctx) => DMNO_CONFIG.BOOLEAN_EXAMPLE, diff --git a/example-repo/pnpm-lock.yaml b/example-repo/pnpm-lock.yaml index d3876318..ad42c696 100644 --- a/example-repo/pnpm-lock.yaml +++ b/example-repo/pnpm-lock.yaml @@ -11228,7 +11228,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) @@ -11247,12 +11247,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.6 @@ -11281,14 +11281,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color diff --git a/packages/core/package.json b/packages/core/package.json index 36b1c728..65879046 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -104,6 +104,9 @@ "@dagrejs/graphlib": "^2.2.2", "@inquirer/core": "^8.0.1", "@inquirer/prompts": "^5.0.1", + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-sucrase": "^5.0.2", "acorn": "^8.11.3", "acorn-typescript": "^1.4.13", "acorn-walk": "^8.3.3", @@ -127,11 +130,13 @@ "outdent": "^0.8.0", "picomatch": "^3.0.1", "read-yaml-file": "^2.1.0", + "rollup": "^4.20.0", "svgo": "^3.2.0", + "tslib": "^2.6.3", "typescript": "^5.4.5", - "validate-npm-package-name": "^5.0.0", - "vite": "^5.2.10", - "vite-node": "^1.5.0", + "validate-npm-package-name": "^5.0.1", + "vite": "^5.3.5", + "vite-node": "^2.0.5", "which": "^4.0.0" } } diff --git a/packages/core/src/cli/cli-executable.ts b/packages/core/src/cli/cli-executable.ts index ee100f91..2f4ccd54 100644 --- a/packages/core/src/cli/cli-executable.ts +++ b/packages/core/src/cli/cli-executable.ts @@ -26,6 +26,7 @@ import { PluginCommand } from './commands/plugin.command'; import { InitCommand } from './commands/init.command'; import { ClearCacheCommand } from './commands/clear-cache.command'; import { PrintEnvCommand } from './commands/printenv.command'; +import { BuildCommand } from './commands/build.command'; @@ -43,6 +44,7 @@ program.addCommand(InitCommand); program.addCommand(ClearCacheCommand); program.addCommand(PluginCommand); program.addCommand(PrintEnvCommand); +program.addCommand(BuildCommand); diff --git a/packages/core/src/cli/commands/build.command.ts b/packages/core/src/cli/commands/build.command.ts new file mode 100644 index 00000000..b7f09fba --- /dev/null +++ b/packages/core/src/cli/commands/build.command.ts @@ -0,0 +1,135 @@ +import { + copyFile, rm, cp, writeFile, +} from 'fs/promises'; +import { exec } from 'child_process'; +import { rollup, RollupBuild } from 'rollup'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import commonjsRollupPlugin from '@rollup/plugin-commonjs'; +// import typescriptRollupPlugin from '@rollup/plugin-typescript'; +import sucraseRollupPlugin from '@rollup/plugin-sucrase'; + +import kleur from 'kleur'; +import _ from 'lodash-es'; +import { DmnoCommand } from '../lib/dmno-command'; + +import { addServiceSelection } from '../lib/selection-helpers'; +import { getCliRunCtx } from '../lib/cli-ctx'; +import { addCacheFlags } from '../lib/cache-helpers'; +import { addWatchMode } from '../lib/watch-mode-helpers'; +import { checkForSchemaErrors } from '../lib/check-errors-helpers'; +import { CliExitError } from '../lib/cli-error'; +import { DmnoBuildInfo } from '../../config-loader/find-services'; + +const program = new DmnoCommand('build') + .summary('build compiled dmno config') + .description('Builds DMNO config files into minimal code appropriate for deployed contexts without access to all dependencies') + .example('dmno build', 'Build the config using current detected service') + .example('dmno build --service service1', 'Build dmno config files for use in service1'); + +addWatchMode(program); // must be first +addCacheFlags(program); +addServiceSelection(program); + +program.action(async (opts: { + // these args should be handled already by the helpers + // service?: string, + // watch?: boolean, + // skipCache?: boolean, + // clearCache?: boolean, + + format?: string, + public?: boolean, + showAll?: boolean, +}, thisCommand) => { + const ctx = getCliRunCtx(); + + if (opts.format) ctx.expectingOutput = true; + + if (!ctx.selectedService) return; // error message already handled + + ctx.log(`\nResolving config for service ${kleur.magenta(ctx.selectedService.serviceName)}\n`); + + const workspace = ctx.workspace!; + const service = ctx.selectedService; + checkForSchemaErrors(workspace); + + if (!ctx.configLoader.workspaceInfo.isMonorepo) { + throw new CliExitError('`dmno build` only works in monorepos'); + } + + const buildDirPath = `${service.path}/.dmno-built`; + // delete existing build folder + try { + await rm(buildDirPath, { recursive: true }); + } catch (err) {} + + if (!ctx.workspace) throw new Error('workspace not loaded'); + + // TODO: do we want to write a top level json file with metadata? + const buildMetadata: DmnoBuildInfo = { + isMonorepo: ctx.configLoader.workspaceInfo.isMonorepo, + rootService: ctx.workspace.rootService.serviceName, + selectedService: ctx.selectedService.serviceName, + }; + + const buildMeta = ctx.workspace.getServiceMetaForBuild(service.serviceName); + + + + for (const workspaceService of ctx.workspace?.allServices || []) { + // skip any unrelated services according to the DAG (related via parent or pick) + if ( + workspaceService !== ctx.selectedService + && !buildMeta.requiredServices.includes(workspaceService.serviceName) + ) continue; + + const configFilePath = `${workspaceService.path}/.dmno/config.mts`; + const buildPackageDirPath = `${buildDirPath}/${workspaceService.serviceName.replaceAll('/', '__')}`; + console.log('Bundling dmno config file for service ', workspaceService.serviceName); + console.log('> config file:', configFilePath); + console.log('> bundled config package dir:', buildPackageDirPath); + + let bundle: RollupBuild | undefined; + bundle = await rollup({ + input: configFilePath, + external: ['dmno', /@dmno\/.*/], + plugins: [ + commonjsRollupPlugin(), + nodeResolve({ + preferBuiltins: true, // not sure about this - but false and undefined show warnings + }), + + // typescriptRollupPlugin({ + // include: ['**/*.{mts,ts}'], + // }), + + // alternative to @rollup/plugin-typescript which does faster builds without typechecking + sucraseRollupPlugin({ + include: ['**/*.{mts,ts}'], + exclude: ['node_modules/**'], + transforms: ['typescript'], + }), + ], + }); + + // write built JS config file + await bundle.write({ + file: `${buildPackageDirPath}/.dmno/config.js`, + }); + await bundle?.close(); + + + // copy vault file(s) + // TODO: will need to figure out how to generalize this + // we could copy everything that is not git-ignored? + // we could let plugins specify a list of patterns to copy + await exec(`cp ${workspaceService.path}/.dmno/*.vault.json ${buildPackageDirPath}/.dmno`); + + // copy package.json file + await copyFile(`${workspaceService.path}/package.json`, `${buildPackageDirPath}/package.json`); + } + + await writeFile(`${buildDirPath}/dmno-build-info.json`, JSON.stringify(buildMetadata, null, 2), 'utf8'); +}); + +export const BuildCommand = program; diff --git a/packages/core/src/cli/commands/clear-cache.command.ts b/packages/core/src/cli/commands/clear-cache.command.ts index fb7294de..e326cb4e 100644 --- a/packages/core/src/cli/commands/clear-cache.command.ts +++ b/packages/core/src/cli/commands/clear-cache.command.ts @@ -3,12 +3,7 @@ import kleur from 'kleur'; import _ from 'lodash-es'; import { outdent } from 'outdent'; import { DmnoCommand } from '../lib/dmno-command'; -import { formatError, formattedValue, getItemSummary } from '../lib/formatting'; import { getCliRunCtx } from '../lib/cli-ctx'; -import { ConfigServer } from '../../config-loader/config-server'; -import { addCacheFlags } from '../lib/cache-helpers'; -import { addServiceSelection } from '../lib/selection-helpers'; -import { fallingDmnoLoader, fallingDmnosAnimation } from '../lib/loaders'; import { pathExists } from '../../config-loader/find-services'; const program = new DmnoCommand('clear-cache') diff --git a/packages/core/src/cli/commands/dev.command.ts b/packages/core/src/cli/commands/dev.command.ts index d0239591..255dfa2a 100644 --- a/packages/core/src/cli/commands/dev.command.ts +++ b/packages/core/src/cli/commands/dev.command.ts @@ -1,14 +1,13 @@ import kleur from 'kleur'; import _ from 'lodash-es'; -import { outdent } from 'outdent'; import gradient from 'gradient-string'; import { DmnoCommand } from '../lib/dmno-command'; -import { formatError, formattedValue, getItemSummary } from '../lib/formatting'; +import { getItemSummary } from '../lib/formatting'; import { getCliRunCtx } from '../lib/cli-ctx'; import { ConfigServer } from '../../config-loader/config-server'; import { addCacheFlags } from '../lib/cache-helpers'; import { addServiceSelection } from '../lib/selection-helpers'; -import { DMNO_DEV_BANNER, fallingDmnoLoader, fallingDmnosAnimation } from '../lib/loaders'; +import { DMNO_DEV_BANNER, fallingDmnosAnimation } from '../lib/loaders'; const TERMINAL_COLS = Math.floor(process.stdout.columns * 0.75); diff --git a/packages/core/src/cli/commands/init.command.ts b/packages/core/src/cli/commands/init.command.ts index a32126cd..0303c0f0 100644 --- a/packages/core/src/cli/commands/init.command.ts +++ b/packages/core/src/cli/commands/init.command.ts @@ -1,23 +1,18 @@ -import { execSync } from 'node:child_process'; -import fs from 'node:fs'; import kleur from 'kleur'; import _ from 'lodash-es'; import boxen from 'boxen'; -import outdent from 'outdent'; import { - select, input, checkbox, confirm, + input, checkbox, confirm, } from '@inquirer/prompts'; import { tryCatch } from '@dmno/ts-lib'; -import gradient from 'gradient-string'; -import { PackageManager, findDmnoServices, pathExists } from '../../config-loader/find-services'; +import { findDmnoServices, pathExists } from '../../config-loader/find-services'; import { DmnoCommand } from '../lib/dmno-command'; -import { formatError, formattedValue, joinAndCompact } from '../lib/formatting'; -import { getCliRunCtx } from '../lib/cli-ctx'; +import { joinAndCompact } from '../lib/formatting'; import { - DMNO_DEV_BANNER, fallingDmnoLoader, fallingDmnosAnimation, + DMNO_DEV_BANNER, fallingDmnosAnimation, getDmnoMascot, } from '../lib/loaders'; import { initDmnoForService } from '../lib/init-helpers'; diff --git a/packages/core/src/cli/commands/plugin.command.ts b/packages/core/src/cli/commands/plugin.command.ts index 5818e19c..7d5e4ad4 100644 --- a/packages/core/src/cli/commands/plugin.command.ts +++ b/packages/core/src/cli/commands/plugin.command.ts @@ -1,18 +1,11 @@ -import { execSync, fork } from 'child_process'; -import { inherits } from 'util'; +import { fork } from 'child_process'; import kleur from 'kleur'; import _ from 'lodash-es'; -import { select } from '@inquirer/prompts'; -import { ExecaChildProcess, execa } from 'execa'; -import which from 'which'; import Debug from 'debug'; import { tryCatch } from '@dmno/ts-lib'; import { DmnoCommand } from '../lib/dmno-command'; -import { formatError, formattedValue } from '../lib/formatting'; -import { fallingDmnoLoader } from '../lib/loaders'; import { getCliRunCtx } from '../lib/cli-ctx'; import { addServiceSelection, addPluginSelection } from '../lib/selection-helpers'; -import { SerializedDmnoPlugin } from '../../config-loader/serialization-types'; import { CliExitError } from '../lib/cli-error'; const debug = Debug('dmno:plugin-cli'); diff --git a/packages/core/src/cli/commands/resolve.command.ts b/packages/core/src/cli/commands/resolve.command.ts index d5a94630..52ee48ac 100644 --- a/packages/core/src/cli/commands/resolve.command.ts +++ b/packages/core/src/cli/commands/resolve.command.ts @@ -1,18 +1,12 @@ import kleur from 'kleur'; import _ from 'lodash-es'; -import { tryCatch } from '@dmno/ts-lib'; -import { outdent } from 'outdent'; -import boxen from 'boxen'; import { DmnoCommand } from '../lib/dmno-command'; -import { - formatError, formattedValue, getItemSummary, joinAndCompact, -} from '../lib/formatting'; -import { addServiceSelection } from '../lib/selection-helpers'; +import { getItemSummary } from '../lib/formatting'; +import { addBuiltModeFlag, addServiceSelection } from '../lib/selection-helpers'; import { getCliRunCtx } from '../lib/cli-ctx'; import { addCacheFlags } from '../lib/cache-helpers'; import { addWatchMode } from '../lib/watch-mode-helpers'; -import { CliExitError } from '../lib/cli-error'; import { checkForConfigErrors, checkForSchemaErrors } from '../lib/check-errors-helpers'; const program = new DmnoCommand('resolve') @@ -26,6 +20,7 @@ const program = new DmnoCommand('resolve') .example('dmno resolve --service service1 --format json', 'Loads the resolved config for service1 in JSON format'); addWatchMode(program); // must be first +addBuiltModeFlag(program); addCacheFlags(program); addServiceSelection(program); diff --git a/packages/core/src/cli/commands/run.command.ts b/packages/core/src/cli/commands/run.command.ts index ea38f302..339243d0 100644 --- a/packages/core/src/cli/commands/run.command.ts +++ b/packages/core/src/cli/commands/run.command.ts @@ -1,12 +1,9 @@ -import kleur from 'kleur'; import _ from 'lodash-es'; import { ExecaChildProcess, execa } from 'execa'; import which from 'which'; -import { tryCatch } from '@dmno/ts-lib'; import { DmnoCommand } from '../lib/dmno-command'; -import { formatError, formattedValue, getItemSummary } from '../lib/formatting'; -import { addServiceSelection } from '../lib/selection-helpers'; +import { addBuiltModeFlag, addServiceSelection } from '../lib/selection-helpers'; import { getCliRunCtx } from '../lib/cli-ctx'; import { addCacheFlags } from '../lib/cache-helpers'; import { addWatchMode } from '../lib/watch-mode-helpers'; @@ -22,6 +19,7 @@ const program = new DmnoCommand('run') .example('dmno run —-service service1 -- somecommand --some-option=(printenv SOME_VAR)', 'Runs the somecommand with the resolved config using SOME_VAR via printenv'); addWatchMode(program); +addBuiltModeFlag(program); addCacheFlags(program); addServiceSelection(program); diff --git a/packages/core/src/cli/lib/cli-ctx.ts b/packages/core/src/cli/lib/cli-ctx.ts index 74053118..5b789144 100644 --- a/packages/core/src/cli/lib/cli-ctx.ts +++ b/packages/core/src/cli/lib/cli-ctx.ts @@ -42,8 +42,6 @@ export const cliRunContext = new AsyncLocalStorage(); export function initCliRunCtx() { cliRunContext.enterWith({ - // not sure about this... - // configLoader: new ConfigLoaderProcess(), configLoader: new ConfigLoader(), ...ctxHelpers, }); diff --git a/packages/core/src/cli/lib/init-helpers.ts b/packages/core/src/cli/lib/init-helpers.ts index 03f9c397..96cff044 100644 --- a/packages/core/src/cli/lib/init-helpers.ts +++ b/packages/core/src/cli/lib/init-helpers.ts @@ -7,7 +7,6 @@ import buildEsmResolver from 'esm-resolve'; import kleur from 'kleur'; import { outdent } from 'outdent'; import { input, confirm } from '@inquirer/prompts'; -import validatePackageName from 'validate-npm-package-name'; import boxen from 'boxen'; import { tryCatch, promiseDelay } from '@dmno/ts-lib'; import { PackageManager, ScannedWorkspaceInfo, pathExists } from '../../config-loader/find-services'; @@ -494,6 +493,8 @@ export async function initDmnoForService(workspaceInfo: ScannedWorkspaceInfo, se **/.dmno/.icon-cache # local config overrides **/.dmno/.env.local + # built/flattened config + **/.dmno-built `; await fs.promises.writeFile(gitIgnorePath, gitIgnore); console.log(setupStepMessage(`.gitignore ${createdGitIgnore ? 'created' : 'updated'} with dmno files!`, { path: gitIgnorePath })); diff --git a/packages/core/src/cli/lib/selection-helpers.ts b/packages/core/src/cli/lib/selection-helpers.ts index 6333cfdd..ef383e2a 100644 --- a/packages/core/src/cli/lib/selection-helpers.ts +++ b/packages/core/src/cli/lib/selection-helpers.ts @@ -33,6 +33,16 @@ export function addServiceSelection(program: Command, opts?: { const workspace = await ctx.configLoader.getWorkspace(); ctx.workspace = workspace; + // TODO: should add some errors here if the user is selecting a different package + if (thisCommand.opts().built) { + const packageNameFromPackageManager = process.env.npm_package_name || process.env.PNPM_PACKAGE_NAME; + // TODO: probably should make this work with current directory as well + const autoSelectedService = workspace.allServices.find((s) => s.packageName === packageNameFromPackageManager); + ctx.selectedService = autoSelectedService; + ctx.autoSelectedService = true; + return; + } + const namesMaxLen = getMaxLength(_.map(workspace.allServices, (s) => s.serviceName)); // // first display loading errors (which would likely cascade into schema errors) @@ -63,7 +73,6 @@ export function addServiceSelection(program: Command, opts?: { if (ctx.selectedService) return; } - // handle explicit selection via the flag // if the user types just -s with no arg, we'll treat that as saying they want the menu const explicitMenuOptIn = thisCommand.opts().service === true; @@ -84,6 +93,7 @@ export function addServiceSelection(program: Command, opts?: { }); } + // handle auto-selection based on what package manager has passed in as the current package when running scripts via the package manager if (!explicitMenuOptIn && !opts?.disableAutoSelect) { // filled by package manager with package name if running an package.json script @@ -188,3 +198,16 @@ export function addPluginSelection(program: Command) { ctx.selectedPlugin = workspace.plugins[menuSelection]; }); } + + +export function addBuiltModeFlag(program: Command) { + return program + .option('-b, --built', 'use built JS dmno config files instead of TS source') + .hook('preAction', async (thisCommand, _actionCommand) => { + const ctx = getCliRunCtx(); + if (thisCommand.opts().built) { + ctx.configLoader.setBuiltConfigMode(true); + } + }); +} + diff --git a/packages/core/src/config-engine/config-engine.ts b/packages/core/src/config-engine/config-engine.ts index dbad9884..e51cc6b1 100644 --- a/packages/core/src/config-engine/config-engine.ts +++ b/packages/core/src/config-engine/config-engine.ts @@ -540,6 +540,13 @@ export class DmnoWorkspace { } throw new Error(`unable to find service - ${descriptor}`); } + getServiceMetaForBuild(serviceName: string) { + const service = this.services[serviceName]; + if (!service) throw new Error(`Unable to fine service - ${serviceName}`); + return { + requiredServices: this.servicesDag.predecessors(service.serviceName) || [], + }; + } get cacheFilePath() { return `${this.rootPath}/.dmno/cache.json`; } get cacheKeyFilePath() { return `${this.rootPath}/.dmno/cache-key.json`; } diff --git a/packages/core/src/config-loader/config-loader.ts b/packages/core/src/config-loader/config-loader.ts index c38399f2..e8e6bb5d 100644 --- a/packages/core/src/config-loader/config-loader.ts +++ b/packages/core/src/config-loader/config-loader.ts @@ -11,7 +11,9 @@ import { ViteNodeRunner } from 'vite-node/client'; import { ConfigLoaderRequestMap } from './ipc-requests'; import { createDebugTimer } from '../cli/lib/debug-timer'; import { setupViteServer } from './vite-server'; -import { ScannedWorkspaceInfo, WorkspacePackagesListing, findDmnoServices } from './find-services'; +import { + ScannedWorkspaceInfo, WorkspacePackagesListing, findDmnoServices, findDmnoServicesInBuiltMode, +} from './find-services'; import { DmnoService, DmnoWorkspace, DmnoServiceConfig, CacheMode, } from '../config-engine/config-engine'; @@ -29,10 +31,8 @@ export class ConfigLoader { // private isReadyDeferred: DeferredPromise = createDeferredPromise(); // get isReady() { return this.isReadyDeferred.promise; } - isReady: Promise; constructor() { - this.isReady = this.finishInit(); this.startAt = new Date(); } @@ -43,8 +43,13 @@ export class ConfigLoader { this.cacheMode = cacheMode; } + private builtConfigMode: boolean = false; + setBuiltConfigMode(enabled: typeof this.builtConfigMode) { + debug(`Config loader - use built config mode = ${enabled}`); + this.builtConfigMode = enabled; + } - viteRunner?: ViteNodeRunner; + viteNodeRunner?: ViteNodeRunner; workspaceInfo!: ScannedWorkspaceInfo; get workspacePackagesData() { @@ -57,20 +62,15 @@ export class ConfigLoader { return this.workspaceInfo.workspacePackages[0].path; // first should always be root (and is also marked) } - private async finishInit() { + async finishInit() { // console.time('find-services'); - this.workspaceInfo = await findDmnoServices(); + this.workspaceInfo = this.builtConfigMode ? await findDmnoServicesInBuiltMode() : await findDmnoServices(); const dmnoServicePackages = this.workspaceInfo.workspacePackages.filter((p) => p.dmnoFolder); // during init there may be no services at all if (!dmnoServicePackages.length) return; // console.timeEnd('find-services'); - - // TODO: we may want to do this on demand - // so it does not slow down `dmno init` or other commands that don't need it - const { viteRunner } = await setupViteServer(this.workspaceRootPath, (ctx) => this.viteHotReloadHandler(ctx)); - this.viteRunner = viteRunner; } onReload?: () => void | Promise; @@ -99,10 +99,18 @@ export class ConfigLoader { } async reload() { - // make sure everything is initialized - await this.isReady; + if (!this.workspaceInfo) await this.finishInit(); - if (!this.viteRunner) throw new Error('vite server not ready yet'); + // make sure everything is initialized + // await this.isReady; + + if (!this.viteNodeRunner) { + // not 100% sure we want to make the vite server root the workspace root + // TODO: need to add a new executionContextRoot or something instead of process.env.PWD + const viteServerRootPath = this.builtConfigMode ? process.env.PWD! : this.workspaceRootPath; + const { viteNodeRunner } = await setupViteServer(viteServerRootPath, (ctx) => this.viteHotReloadHandler(ctx)); + this.viteNodeRunner = viteNodeRunner; + } // TODO: if not first load, clean up previous workspace? or reuse it somehow? this.dmnoWorkspace = new DmnoWorkspace(); @@ -115,8 +123,7 @@ export class ConfigLoader { // not sure yet about naming the root file differently? // especially in the 1 service context, it may feel odd // const configFilePath = `${w.path}/.dmno/${isRoot ? 'workspace-' : ''}config.mts`; - const configFilePath = `${w.path}/.dmno/config.mts`; - + const configFilePath = `${w.path}/.dmno/config${this.builtConfigMode ? '.js' : '.mts'}`; const serviceInitOpts = { isRoot: w.isRoot, @@ -139,9 +146,9 @@ export class ConfigLoader { // we probably want to clear all user authored files (in the .dmno folder) rather than just the config files // CLEAR EACH CONFIG FILE FROM THE CACHE SO WE RELOAD THEM ALL - this.viteRunner.moduleCache.deleteByModuleId(configFilePath); + this.viteNodeRunner.moduleCache.deleteByModuleId(configFilePath); - const importedConfig = await this.viteRunner.executeFile(configFilePath); + const importedConfig = await this.viteNodeRunner.executeFile(configFilePath); if (w.isRoot && !importedConfig.default.isRoot) { throw new Error('Root service .dmno/config.mts must set `isRoot: true`'); diff --git a/packages/core/src/config-loader/config-server.ts b/packages/core/src/config-loader/config-server.ts index 6e49531d..f3f0827b 100644 --- a/packages/core/src/config-loader/config-server.ts +++ b/packages/core/src/config-loader/config-server.ts @@ -79,8 +79,11 @@ export class ConfigServer { throw new Error(`No handler for request type: ${message.requestType}`); } - // we may receive a request before the config loader is ready - await this.configLoader.isReady; + // TODO: this is whats making sure things are fully initialized - may want to restructure this + // it used to wait for an `isReady` promise which was kicked off in the constructor + // but that didnt make sense in the CLI where we need to set other options before fully initializing + await this.configLoader.getWorkspace(); + await this.ipcReady; // probably not necessary const result = await handler(message.payload); ipc.server.emit(socket, 'request-response', { diff --git a/packages/core/src/config-loader/find-services.ts b/packages/core/src/config-loader/find-services.ts index a47c0a8e..2392c91e 100644 --- a/packages/core/src/config-loader/find-services.ts +++ b/packages/core/src/config-loader/find-services.ts @@ -11,8 +11,8 @@ import { PackageManager, detectPackageManager } from '../lib/detect-package-mana const debug = Debug('dmno:find-services'); -export async function readJsonFile(path: string) { - return JSON.parse(await fs.promises.readFile(path, 'utf8')); +export async function readJsonFile(path: string) { + return JSON.parse(await fs.promises.readFile(path, 'utf8')) as T; } @@ -30,6 +30,11 @@ export type ScannedWorkspaceInfo = { workspacePackages: Array, autoSelectedPackage?: WorkspacePackagesListing; }; +export type DmnoBuildInfo = { + isMonorepo: boolean, + rootService: string, + selectedService: string, +}; export async function pathExists(p: string) { try { @@ -153,3 +158,50 @@ export async function findDmnoServices(includeUnitialized = true): Promise { + const { packageManager, rootWorkspacePath: rootServicePath } = await detectPackageManager(); + + // TODO: probably do something smarter than using PWD? but we still need to get to the built folder + const pwd = process.env.PWD; + const dmnoBuildDirPath = `${pwd}/.dmno-built`; + if (!fs.existsSync(dmnoBuildDirPath)) { + throw new Error(`DMNO build dir "${dmnoBuildDirPath}" not found. Run \`dmno build\` first.`); + } + + const dmnoBuildMetadata = await readJsonFile(`${dmnoBuildDirPath}/dmno-build-info.json`); + + const workspacePackages = [] as ScannedWorkspaceInfo['workspacePackages']; + + const dirItems = await fs.promises.readdir(dmnoBuildDirPath, { withFileTypes: true }); + for (const dirItem of dirItems) { + if (!dirItem.isDirectory()) continue; + const builtPackagePath = `${dirItem.path}/${dirItem.name}`; + const packageJson = await tryCatch( + async () => await readJsonFile(`${builtPackagePath}/package.json`), + (err) => { + if ((err as any).code === 'ENOENT') return undefined; + throw err; + }, + ); + + + const serviceName = dirItem.name.replaceAll('__', '/'); + const packageInfo = { + isRoot: serviceName === dmnoBuildMetadata.rootService, + dmnoFolder: true, + path: builtPackagePath, + // TODO: not sure this is used for anything + // if we want this relative to the execution context, this is wrong + relativePath: builtPackagePath.substring(dmnoBuildDirPath.length + 1), + name: packageJson.name, + }; + workspacePackages[packageInfo.isRoot ? 'unshift' : 'push'](packageInfo); + } + + return { + isMonorepo: true, // built mode currently can only be run in monorepo mode + packageManager, + workspacePackages, + }; +} diff --git a/packages/core/src/config-loader/vite-server.ts b/packages/core/src/config-loader/vite-server.ts index 06719bd7..1c7d1c8e 100644 --- a/packages/core/src/config-loader/vite-server.ts +++ b/packages/core/src/config-loader/vite-server.ts @@ -4,7 +4,7 @@ import { ViteNodeServer } from 'vite-node/server'; import { installSourcemapsSupport } from 'vite-node/source-map'; export async function setupViteServer( - workspaceRootPath: string, + viteServerRootPath: string, hotReloadHandler: (ctx: HmrContext) => Promise, ) { const customPlugin: Plugin = { @@ -15,7 +15,9 @@ export async function setupViteServer( // meaning we have 2 copies of classes and `instanceof` stops working enforce: 'pre', // Run before the builtin 'vite:resolve' of Vite async resolveId(source, importer, options) { - // console.log(kleur.bgCyan('PLUGIN RESOLVE!'), source, importer, options); + // if (source === 'mitt') { + // console.log('> PLUGIN RESOLVE!', source, importer, options); + // } if (source === 'dmno') { // const resolution = await this.resolve(source, importer, options); @@ -29,6 +31,16 @@ export async function setupViteServer( // I believe this path is appended to our "root" which is our workpace root }; } + // if (importer === 'node_modules/dmno/dist/index.js') { + // const resolution = await this.resolve(`./node_modules/dmno/node_modules/${source}`, importer, options); + // console.log(resolution); + + // // return { + // // // pointing at dist/index is hard-coded... + // // // we could extract the main entry point from the resolution instead? + // // id: `./node_modules/dmno/node_modules/${source}`, + // // }; + // } }, transform(code, id, options) { @@ -37,6 +49,9 @@ export async function setupViteServer( // TODO: this also assumes the user is only calling this within a resolver that has a `(ctx) => ` call signature... return code.replaceAll(/DMNO_CONFIG\.([\w\d.]+)/g, 'ctx.get(\'$1\')'); }, + // load(id, options) { + // console.log('> load hook', id); + // }, async handleHotUpdate(ctx) { // ignore updates to the generated type files @@ -50,7 +65,7 @@ export async function setupViteServer( // clear updated modules out of the cache ctx.modules.forEach((m) => { - if (m.id) viteRunner.moduleCache.deleteByModuleId(m.id); + if (m.id) viteNodeRunner.moduleCache.deleteByModuleId(m.id); }); await hotReloadHandler(ctx); @@ -60,7 +75,7 @@ export async function setupViteServer( // create vite server const server = await createServer({ - root: workspaceRootPath, + root: viteServerRootPath, appType: 'custom', clearScreen: false, logLevel: 'warn', @@ -88,7 +103,7 @@ export async function setupViteServer( await server.pluginContainer.buildStart({}); // create vite-node server - const node = new ViteNodeServer(server, { + const viteNodeServer = new ViteNodeServer(server, { // debug: { // dumpModules: true, // }, @@ -97,11 +112,11 @@ export async function setupViteServer( // fixes stacktraces in Errors installSourcemapsSupport({ - getSourceMap: (source) => node.getSourceMap(source), + getSourceMap: (source) => viteNodeServer.getSourceMap(source), }); // create vite-node runner - const viteRunner = new ViteNodeRunner({ + const viteNodeRunner = new ViteNodeRunner({ debug: true, root: server.config.root, base: server.config.base, @@ -110,13 +125,13 @@ export async function setupViteServer( // and pass to this function async fetchModule(id) { // console.log('fetch module', id); - return node.fetchModule(id); + return viteNodeServer.fetchModule(id); }, async resolveId(id, importer) { // console.log('resolve id', id, importer); - return node.resolveId(id, importer); + return viteNodeServer.resolveId(id, importer); }, }); - return { viteRunner }; + return { viteNodeRunner }; } diff --git a/packages/plugins/1password/src/plugin.ts b/packages/plugins/1password/src/plugin.ts index 99dab8e6..9caa2469 100644 --- a/packages/plugins/1password/src/plugin.ts +++ b/packages/plugins/1password/src/plugin.ts @@ -82,22 +82,25 @@ export class OnePasswordDmnoPlugin extends DmnoPlugin { ].join(' ')).toString(); }); const envItemsObj = JSON.parse(envItemJsonStr); + // console.log(envItemsObj); const loadedEnvByService: typeof this.envItemsByService = {}; _.each(envItemsObj.fields, (field) => { + if (field.purpose === 'NOTES') return; // the "default" items on a secure note get added to an invisible "add more" section // we could force users to only add in there? but it might get confusing...? const serviceName = field.label; // make sure we dont have a duplicate if (loadedEnvByService[serviceName]) { - throw new ResolutionError(`Duplicate env item found - ${serviceName} `); + throw new ResolutionError(`Duplicate service entries found in 1pass item - ${serviceName} `); } const dotEnvObj = loadDotEnvIntoObject(field.value); loadedEnvByService[serviceName] = dotEnvObj; // TODO: deal with nested objects -- are paths "." or "__"? // TODO: do we want to allow other formats? }); + // console.log(loadedEnvByService); this.envItemsByService = loadedEnvByService; } item() { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55a262d2..5cafab42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,15 @@ importers: '@inquirer/prompts': specifier: ^5.0.1 version: 5.0.1 + '@rollup/plugin-commonjs': + specifier: ^26.0.1 + version: 26.0.1(rollup@4.20.0) + '@rollup/plugin-node-resolve': + specifier: ^15.2.3 + version: 15.2.3(rollup@4.20.0) + '@rollup/plugin-sucrase': + specifier: ^5.0.2 + version: 5.0.2(rollup@4.20.0) acorn: specifier: ^8.11.3 version: 8.11.3 @@ -107,21 +116,27 @@ importers: read-yaml-file: specifier: ^2.1.0 version: 2.1.0 + rollup: + specifier: ^4.20.0 + version: 4.20.0 svgo: specifier: ^3.2.0 version: 3.2.0 + tslib: + specifier: ^2.6.3 + version: 2.6.3 typescript: specifier: ^5.4.5 version: 5.4.5 validate-npm-package-name: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^5.0.1 + version: 5.0.1 vite: - specifier: ^5.2.10 - version: 5.2.10(@types/node@20.12.7)(less@4.2.0) + specifier: ^5.3.5 + version: 5.3.5(@types/node@20.12.7)(less@4.2.0) vite-node: - specifier: ^1.5.0 - version: 1.5.2(@types/node@20.12.7)(less@4.2.0) + specifier: ^2.0.5 + version: 2.0.5(@types/node@20.12.7)(less@4.2.0) which: specifier: ^4.0.0 version: 4.0.0 @@ -188,7 +203,7 @@ importers: version: 0.24.4(astro@4.11.1(@types/node@20.14.12)(less@4.2.0)(typescript@5.5.2)) '@astrojs/vue': specifier: ^4.5.0 - version: 4.5.0(astro@4.11.1(@types/node@20.14.12)(less@4.2.0)(typescript@5.5.2))(rollup@4.19.0)(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) + version: 4.5.0(astro@4.11.1(@types/node@20.14.12)(less@4.2.0)(typescript@5.5.2))(rollup@4.20.0)(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) '@dmno/astro-integration': specifier: workspace:* version: link:../integrations/astro @@ -685,7 +700,7 @@ importers: version: 17.23.0(@types/node@20.14.12)(picomatch@3.0.1) tsup: specifier: ^8.0.2 - version: 8.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5))(typescript@5.4.5) + version: 8.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5))(typescript@5.4.5) typescript: specifier: ^5.4.5 version: 5.4.5 @@ -2256,6 +2271,7 @@ packages: '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -2267,6 +2283,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} @@ -3165,6 +3182,33 @@ packages: '@remix-run/web-stream@1.1.0': resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} + '@rollup/plugin-commonjs@26.0.1': + resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@15.2.3': + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-sucrase@5.0.2': + resolution: {integrity: sha512-4MhIVH9Dy2Hwose1/x5QMs0XF7yn9jDd/yozHqzdIrMWIolgFpGnrnVhQkqTaK1RALY/fpyrEKmwH/04vr1THA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.53.1||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -3178,19 +3222,14 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.16.4': - resolution: {integrity: sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.19.0': resolution: {integrity: sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.16.4': - resolution: {integrity: sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==} - cpu: [arm64] + '@rollup/rollup-android-arm-eabi@4.20.0': + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.19.0': @@ -3198,19 +3237,19 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.16.4': - resolution: {integrity: sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==} + '@rollup/rollup-android-arm64@4.20.0': + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} cpu: [arm64] - os: [darwin] + os: [android] '@rollup/rollup-darwin-arm64@4.19.0': resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.16.4': - resolution: {integrity: sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==} - cpu: [x64] + '@rollup/rollup-darwin-arm64@4.20.0': + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.19.0': @@ -3218,18 +3257,18 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.16.4': - resolution: {integrity: sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==} - cpu: [arm] - os: [linux] + '@rollup/rollup-darwin-x64@4.20.0': + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + cpu: [x64] + os: [darwin] '@rollup/rollup-linux-arm-gnueabihf@4.19.0': resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.16.4': - resolution: {integrity: sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==} + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} cpu: [arm] os: [linux] @@ -3238,9 +3277,9 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.16.4': - resolution: {integrity: sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==} - cpu: [arm64] + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.19.0': @@ -3248,8 +3287,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.16.4': - resolution: {integrity: sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==} + '@rollup/rollup-linux-arm64-gnu@4.20.0': + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} cpu: [arm64] os: [linux] @@ -3258,9 +3297,9 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.16.4': - resolution: {integrity: sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==} - cpu: [ppc64] + '@rollup/rollup-linux-arm64-musl@4.20.0': + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} + cpu: [arm64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': @@ -3268,9 +3307,9 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.16.4': - resolution: {integrity: sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==} - cpu: [riscv64] + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.19.0': @@ -3278,9 +3317,9 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.16.4': - resolution: {integrity: sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==} - cpu: [s390x] + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.19.0': @@ -3288,9 +3327,9 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.16.4': - resolution: {integrity: sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==} - cpu: [x64] + '@rollup/rollup-linux-s390x-gnu@4.20.0': + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.19.0': @@ -3298,8 +3337,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.16.4': - resolution: {integrity: sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==} + '@rollup/rollup-linux-x64-gnu@4.20.0': + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} cpu: [x64] os: [linux] @@ -3308,19 +3347,19 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.16.4': - resolution: {integrity: sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==} - cpu: [arm64] - os: [win32] + '@rollup/rollup-linux-x64-musl@4.20.0': + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + cpu: [x64] + os: [linux] '@rollup/rollup-win32-arm64-msvc@4.19.0': resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.16.4': - resolution: {integrity: sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==} - cpu: [ia32] + '@rollup/rollup-win32-arm64-msvc@4.20.0': + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.19.0': @@ -3328,9 +3367,9 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.16.4': - resolution: {integrity: sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==} - cpu: [x64] + '@rollup/rollup-win32-ia32-msvc@4.20.0': + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.19.0': @@ -3338,6 +3377,11 @@ packages: cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.20.0': + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + cpu: [x64] + os: [win32] + '@shikijs/core@1.3.0': resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} @@ -3511,6 +3555,9 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/retry@0.12.1': resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} @@ -4111,6 +4158,7 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -4785,6 +4833,9 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + component-emitter@1.3.1: resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} @@ -6085,6 +6136,7 @@ packages: gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} + deprecated: This package is no longer supported. gaxios@6.5.0: resolution: {integrity: sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==} @@ -6192,12 +6244,18 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported global-cache-dir@4.4.0: resolution: {integrity: sha512-bk0gI6IbbphRjAaCJJn5H+T/CcEck5B3a5KBO2BXSDzjFSV+API17w8GA7YPJ6IXJiasW8M0VsEIig1PCHdfOQ==} @@ -6569,6 +6627,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -6793,6 +6852,9 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -6858,6 +6920,9 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} @@ -6973,6 +7038,9 @@ packages: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} @@ -7858,6 +7926,10 @@ packages: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -8171,6 +8243,7 @@ packages: npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -8410,6 +8483,9 @@ packages: resolution: {integrity: sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==} engines: {node: '>=12'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-json@8.1.1: resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} @@ -8514,6 +8590,10 @@ packages: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -9238,15 +9318,16 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.16.4: - resolution: {integrity: sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==} + rollup@4.19.0: + resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.19.0: - resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==} + rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -9915,6 +9996,10 @@ packages: resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + tinyspy@2.2.1: resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} @@ -10056,6 +10141,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tsup@8.0.2: resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} @@ -10563,8 +10651,8 @@ packages: resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} vary@1.1.2: @@ -10600,13 +10688,13 @@ packages: peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 - vite-node@1.5.2: - resolution: {integrity: sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + vite-node@2.0.5: + resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -10659,34 +10747,6 @@ packages: terser: optional: true - vite@5.3.1: - resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - 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 - vite@5.3.5: resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11317,13 +11377,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vue@4.5.0(astro@4.11.1(@types/node@20.14.12)(less@4.2.0)(typescript@5.5.2))(rollup@4.19.0)(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': + '@astrojs/vue@4.5.0(astro@4.11.1(@types/node@20.14.12)(less@4.2.0)(typescript@5.5.2))(rollup@4.20.0)(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': dependencies: - '@vitejs/plugin-vue': 5.0.5(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) - '@vitejs/plugin-vue-jsx': 4.0.0(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) + '@vitejs/plugin-vue': 5.0.5(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) + '@vitejs/plugin-vue-jsx': 4.0.0(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) '@vue/compiler-sfc': 3.4.30 astro: 4.11.1(@types/node@20.14.12)(less@4.2.0)(typescript@5.5.2) - vite-plugin-vue-devtools: 7.3.4(rollup@4.19.0)(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) + vite-plugin-vue-devtools: 7.3.4(rollup@4.20.0)(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) vue: 3.4.30(typescript@5.5.2) transitivePeerDependencies: - '@nuxt/kit' @@ -11334,7 +11394,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/code-frame@7.24.7': dependencies: @@ -11539,14 +11599,14 @@ snapshots: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/parser@7.24.4': dependencies: @@ -12459,8 +12519,8 @@ snapshots: hast-util-to-html: 9.0.1 hast-util-to-text: 4.0.2 hastscript: 9.0.0 - postcss: 8.4.38 - postcss-nested: 6.0.1(postcss@8.4.38) + postcss: 8.4.40 + postcss-nested: 6.0.1(postcss@8.4.40) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 @@ -13926,115 +13986,144 @@ snapshots: dependencies: web-streams-polyfill: 3.3.3 + '@rollup/plugin-commonjs@26.0.1(rollup@4.20.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 10.4.5 + is-reference: 1.2.1 + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.20.0 + + '@rollup/plugin-node-resolve@15.2.3(rollup@4.20.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.20.0 + + '@rollup/plugin-sucrase@5.0.2(rollup@4.20.0)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + sucrase: 3.35.0 + optionalDependencies: + rollup: 4.20.0 + '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.19.0)': + '@rollup/pluginutils@5.1.0(rollup@4.20.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.19.0 - - '@rollup/rollup-android-arm-eabi@4.16.4': - optional: true + rollup: 4.20.0 '@rollup/rollup-android-arm-eabi@4.19.0': optional: true - '@rollup/rollup-android-arm64@4.16.4': + '@rollup/rollup-android-arm-eabi@4.20.0': optional: true '@rollup/rollup-android-arm64@4.19.0': optional: true - '@rollup/rollup-darwin-arm64@4.16.4': + '@rollup/rollup-android-arm64@4.20.0': optional: true '@rollup/rollup-darwin-arm64@4.19.0': optional: true - '@rollup/rollup-darwin-x64@4.16.4': + '@rollup/rollup-darwin-arm64@4.20.0': optional: true '@rollup/rollup-darwin-x64@4.19.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.16.4': + '@rollup/rollup-darwin-x64@4.20.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.19.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.16.4': + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': optional: true '@rollup/rollup-linux-arm-musleabihf@4.19.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.16.4': + '@rollup/rollup-linux-arm-musleabihf@4.20.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.19.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.16.4': + '@rollup/rollup-linux-arm64-gnu@4.20.0': optional: true '@rollup/rollup-linux-arm64-musl@4.19.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.16.4': + '@rollup/rollup-linux-arm64-musl@4.20.0': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.16.4': + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.19.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.16.4': + '@rollup/rollup-linux-riscv64-gnu@4.20.0': optional: true '@rollup/rollup-linux-s390x-gnu@4.19.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.16.4': + '@rollup/rollup-linux-s390x-gnu@4.20.0': optional: true '@rollup/rollup-linux-x64-gnu@4.19.0': optional: true - '@rollup/rollup-linux-x64-musl@4.16.4': + '@rollup/rollup-linux-x64-gnu@4.20.0': optional: true '@rollup/rollup-linux-x64-musl@4.19.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.16.4': + '@rollup/rollup-linux-x64-musl@4.20.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.19.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.16.4': + '@rollup/rollup-win32-arm64-msvc@4.20.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.19.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.16.4': + '@rollup/rollup-win32-ia32-msvc@4.20.0': optional: true '@rollup/rollup-win32-x64-msvc@4.19.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.20.0': + optional: true + '@shikijs/core@1.3.0': {} '@shikijs/core@1.9.1': {} @@ -14212,6 +14301,8 @@ snapshots: '@types/normalize-package-data@2.4.4': {} + '@types/resolve@1.20.2': {} + '@types/retry@0.12.1': {} '@types/sax@1.2.7': @@ -14484,7 +14575,7 @@ snapshots: deepmerge: 4.3.1 media-query-parser: 2.0.2 modern-ahocorasick: 1.0.1 - picocolors: 1.0.0 + picocolors: 1.0.1 transitivePeerDependencies: - babel-plugin-macros @@ -14569,19 +14660,19 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': + '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) vue: 3.4.30(typescript@5.5.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.5(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': + '@vitejs/plugin-vue@5.0.5(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': dependencies: - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) vue: 3.4.30(typescript@5.5.2) '@vitest/expect@1.6.0': @@ -14762,14 +14853,14 @@ snapshots: '@vue/compiler-dom': 3.4.30 '@vue/shared': 3.4.30 - '@vue/devtools-core@7.3.4(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': + '@vue/devtools-core@7.3.4(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2))': dependencies: '@vue/devtools-kit': 7.3.4 '@vue/devtools-shared': 7.3.4 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)) + vite-hot-client: 0.2.3(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)) vue: 3.4.30(typescript@5.5.2) transitivePeerDependencies: - vite @@ -15312,8 +15403,8 @@ snapshots: tsconfck: 3.1.0(typescript@5.5.2) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) - vitefu: 0.2.5(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) + vitefu: 0.2.5(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)) which-pm: 2.2.0 yargs-parser: 21.1.1 zod: 3.23.8 @@ -15390,8 +15481,8 @@ snapshots: tsconfck: 3.1.0(typescript@5.5.2) unist-util-visit: 5.0.0 vfile: 6.0.1 - vite: 5.3.1(@types/node@20.14.8)(less@4.2.0) - vitefu: 0.2.5(vite@5.3.1(@types/node@20.14.8)(less@4.2.0)) + vite: 5.3.5(@types/node@20.14.8)(less@4.2.0) + vitefu: 0.2.5(vite@5.3.5(@types/node@20.14.8)(less@4.2.0)) which-pm: 2.2.0 yargs-parser: 21.1.1 zod: 3.23.8 @@ -16028,6 +16119,8 @@ snapshots: common-path-prefix@3.0.0: {} + commondir@1.0.1: {} + component-emitter@1.3.1: {} compress-commons@5.0.3: @@ -16414,8 +16507,8 @@ snapshots: detective-postcss@6.1.3: dependencies: is-url: 1.2.4 - postcss: 8.4.38 - postcss-values-parser: 6.0.2(postcss@8.4.38) + postcss: 8.4.40 + postcss-values-parser: 6.0.2(postcss@8.4.40) detective-sass@5.0.3: dependencies: @@ -17814,6 +17907,15 @@ snapshots: minipass: 7.0.4 path-scurry: 1.10.2 + glob@10.4.5: + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.4.3 + minimatch: 9.0.4 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -18603,6 +18705,8 @@ snapshots: is-interactive@2.0.0: {} + is-module@1.0.0: {} + is-negative-zero@2.0.3: {} is-node-process@1.2.0: {} @@ -18643,6 +18747,10 @@ snapshots: is-promise@4.0.0: {} + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 + is-reference@3.0.2: dependencies: '@types/estree': 1.0.5 @@ -18734,6 +18842,12 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + javascript-stringify@2.1.0: {} jest-get-type@27.5.1: {} @@ -20117,6 +20231,8 @@ snapshots: minipass@7.0.4: {} + minipass@7.1.2: {} + minizlib@2.1.2: dependencies: minipass: 3.3.6 @@ -20703,7 +20819,7 @@ snapshots: hosted-git-info: 6.1.1 proc-log: 3.0.0 semver: 7.6.2 - validate-npm-package-name: 5.0.0 + validate-npm-package-name: 5.0.1 npm-pick-manifest@8.0.2: dependencies: @@ -20990,6 +21106,8 @@ snapshots: dependencies: p-timeout: 6.1.2 + package-json-from-dist@1.0.0: {} + package-json@8.1.1: dependencies: got: 12.6.1 @@ -21109,6 +21227,11 @@ snapshots: lru-cache: 10.2.1 minipass: 7.0.4 + path-scurry@1.11.1: + dependencies: + lru-cache: 10.2.1 + minipass: 7.1.2 + path-to-regexp@0.1.7: {} path-to-regexp@6.2.2: {} @@ -21214,14 +21337,6 @@ snapshots: dependencies: postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5)): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.1 - optionalDependencies: - postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.14.12)(typescript@5.4.5) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.8)(typescript@5.5.4)): dependencies: lilconfig: 3.1.1 @@ -21246,6 +21361,14 @@ snapshots: postcss: 8.4.40 ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) + postcss-load-config@4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5)): + dependencies: + lilconfig: 3.1.1 + yaml: 2.4.1 + optionalDependencies: + postcss: 8.4.40 + ts-node: 10.9.2(@types/node@20.14.12)(typescript@5.4.5) + postcss-load-config@4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.14.8)(typescript@5.5.2)): dependencies: lilconfig: 3.1.1 @@ -21294,9 +21417,9 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.38) string-hash: 1.1.3 - postcss-nested@6.0.1(postcss@8.4.38): + postcss-nested@6.0.1(postcss@8.4.40): dependencies: - postcss: 8.4.38 + postcss: 8.4.40 postcss-selector-parser: 6.0.16 postcss-selector-parser@6.0.16: @@ -21306,11 +21429,11 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss-values-parser@6.0.2(postcss@8.4.38): + postcss-values-parser@6.0.2(postcss@8.4.40): dependencies: color-name: 1.1.4 is-url-superb: 4.0.0 - postcss: 8.4.38 + postcss: 8.4.40 quote-unquote: 1.0.0 postcss@8.4.31: @@ -21994,28 +22117,6 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.16.4: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.16.4 - '@rollup/rollup-android-arm64': 4.16.4 - '@rollup/rollup-darwin-arm64': 4.16.4 - '@rollup/rollup-darwin-x64': 4.16.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.16.4 - '@rollup/rollup-linux-arm-musleabihf': 4.16.4 - '@rollup/rollup-linux-arm64-gnu': 4.16.4 - '@rollup/rollup-linux-arm64-musl': 4.16.4 - '@rollup/rollup-linux-powerpc64le-gnu': 4.16.4 - '@rollup/rollup-linux-riscv64-gnu': 4.16.4 - '@rollup/rollup-linux-s390x-gnu': 4.16.4 - '@rollup/rollup-linux-x64-gnu': 4.16.4 - '@rollup/rollup-linux-x64-musl': 4.16.4 - '@rollup/rollup-win32-arm64-msvc': 4.16.4 - '@rollup/rollup-win32-ia32-msvc': 4.16.4 - '@rollup/rollup-win32-x64-msvc': 4.16.4 - fsevents: 2.3.3 - rollup@4.19.0: dependencies: '@types/estree': 1.0.5 @@ -22038,6 +22139,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.19.0 fsevents: 2.3.3 + rollup@4.20.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 + fsevents: 2.3.3 + run-applescript@7.0.0: {} run-async@2.4.1: {} @@ -22799,6 +22922,8 @@ snapshots: tinypool@0.8.4: {} + tinyrainbow@1.2.0: {} + tinyspy@2.2.1: {} tmp-promise@3.0.3: @@ -23018,7 +23143,9 @@ snapshots: tslib@2.6.2: {} - tsup@8.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5))(typescript@5.4.5): + tslib@2.6.3: {} + + tsup@8.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5))(typescript@5.4.5): dependencies: bundle-require: 4.0.3(esbuild@0.19.12) cac: 6.7.14 @@ -23028,20 +23155,20 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) resolve-from: 5.0.0 - rollup: 4.16.4 + rollup: 4.20.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.4.38 + postcss: 8.4.40 typescript: 5.4.5 transitivePeerDependencies: - supports-color - ts-node - tsup@8.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5))(typescript@5.4.5): + tsup@8.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5): dependencies: bundle-require: 4.0.3(esbuild@0.19.12) cac: 6.7.14 @@ -23051,9 +23178,9 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) resolve-from: 5.0.0 - rollup: 4.16.4 + rollup: 4.20.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -23064,7 +23191,7 @@ snapshots: - supports-color - ts-node - tsup@8.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5): + tsup@8.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5))(typescript@5.4.5): dependencies: bundle-require: 4.0.3(esbuild@0.19.12) cac: 6.7.14 @@ -23074,9 +23201,9 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.14.12)(typescript@5.4.5)) resolve-from: 5.0.0 - rollup: 4.16.4 + rollup: 4.20.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -23099,7 +23226,7 @@ snapshots: joycon: 3.1.1 postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.8)(typescript@5.5.4)) resolve-from: 5.0.0 - rollup: 4.16.4 + rollup: 4.19.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -23122,7 +23249,7 @@ snapshots: joycon: 3.1.1 postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@types/node@20.14.8)(typescript@5.5.2)) resolve-from: 5.0.0 - rollup: 4.16.4 + rollup: 4.19.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -23585,7 +23712,7 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 update-notifier@6.0.2: dependencies: @@ -23652,9 +23779,7 @@ snapshots: dependencies: builtins: 5.1.0 - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.1.0 + validate-npm-package-name@5.0.1: {} vary@1.1.2: {} @@ -23707,17 +23832,17 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)): + vite-hot-client@0.2.3(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)): dependencies: - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) - vite-node@1.5.2(@types/node@20.12.7)(less@4.2.0): + vite-node@1.6.0(@types/node@20.12.7)(less@4.2.0): dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.5(supports-color@9.4.0) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.3.1(@types/node@20.12.7)(less@4.2.0) + vite: 5.3.5(@types/node@20.12.7)(less@4.2.0) transitivePeerDependencies: - '@types/node' - less @@ -23728,13 +23853,13 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.12.7)(less@4.2.0): + vite-node@1.6.0(@types/node@20.14.8)(less@4.2.0): dependencies: cac: 6.7.14 debug: 4.3.5(supports-color@9.4.0) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.3.5(@types/node@20.12.7)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.8)(less@4.2.0) transitivePeerDependencies: - '@types/node' - less @@ -23745,13 +23870,13 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.14.8)(less@4.2.0): + vite-node@2.0.5(@types/node@20.12.7)(less@4.2.0): dependencies: cac: 6.7.14 debug: 4.3.5(supports-color@9.4.0) pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.3.5(@types/node@20.14.8)(less@4.2.0) + tinyrainbow: 1.2.0 + vite: 5.3.5(@types/node@20.12.7)(less@4.2.0) transitivePeerDependencies: - '@types/node' - less @@ -23762,10 +23887,10 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.8.4(rollup@4.19.0)(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)): + vite-plugin-inspect@0.8.4(rollup@4.20.0)(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)): dependencies: '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.19.0) + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) debug: 4.3.5(supports-color@9.4.0) error-stack-parser-es: 0.1.4 fs-extra: 11.2.0 @@ -23773,28 +23898,28 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-devtools@7.3.4(rollup@4.19.0)(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)): + vite-plugin-vue-devtools@7.3.4(rollup@4.20.0)(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)): dependencies: - '@vue/devtools-core': 7.3.4(vite@5.3.1(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) + '@vue/devtools-core': 7.3.4(vite@5.3.5(@types/node@20.14.12)(less@4.2.0))(vue@3.4.30(typescript@5.5.2)) '@vue/devtools-kit': 7.3.4 '@vue/devtools-shared': 7.3.4 execa: 8.0.1 sirv: 2.0.4 - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) - vite-plugin-inspect: 0.8.4(rollup@4.19.0)(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)) - vite-plugin-vue-inspector: 5.1.2(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) + vite-plugin-inspect: 0.8.4(rollup@4.20.0)(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)) + vite-plugin-vue-inspector: 5.1.2(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)) transitivePeerDependencies: - '@nuxt/kit' - rollup - supports-color - vue - vite-plugin-vue-inspector@5.1.2(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)): + vite-plugin-vue-inspector@5.1.2(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)): dependencies: '@babel/core': 7.24.7 '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.7) @@ -23805,7 +23930,7 @@ snapshots: '@vue/compiler-dom': 3.4.30 kolorist: 1.8.0 magic-string: 0.30.10 - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) transitivePeerDependencies: - supports-color @@ -23813,49 +23938,29 @@ snapshots: dependencies: esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.16.4 + rollup: 4.19.0 optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 less: 4.2.0 - vite@5.3.1(@types/node@20.12.7)(less@4.2.0): + vite@5.3.5(@types/node@20.12.7)(less@4.2.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.38 - rollup: 4.16.4 + postcss: 8.4.40 + rollup: 4.20.0 optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 less: 4.2.0 - vite@5.3.1(@types/node@20.14.12)(less@4.2.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.38 - rollup: 4.16.4 - optionalDependencies: - '@types/node': 20.14.12 - fsevents: 2.3.3 - less: 4.2.0 - - vite@5.3.1(@types/node@20.14.8)(less@4.2.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.38 - rollup: 4.16.4 - optionalDependencies: - '@types/node': 20.14.8 - fsevents: 2.3.3 - less: 4.2.0 - - vite@5.3.5(@types/node@20.12.7)(less@4.2.0): + vite@5.3.5(@types/node@20.14.12)(less@4.2.0): dependencies: esbuild: 0.21.5 postcss: 8.4.40 - rollup: 4.19.0 + rollup: 4.20.0 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.14.12 fsevents: 2.3.3 less: 4.2.0 @@ -23863,19 +23968,19 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.40 - rollup: 4.19.0 + rollup: 4.20.0 optionalDependencies: '@types/node': 20.14.8 fsevents: 2.3.3 less: 4.2.0 - vitefu@0.2.5(vite@5.3.1(@types/node@20.14.12)(less@4.2.0)): + vitefu@0.2.5(vite@5.3.5(@types/node@20.14.12)(less@4.2.0)): optionalDependencies: - vite: 5.3.1(@types/node@20.14.12)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.12)(less@4.2.0) - vitefu@0.2.5(vite@5.3.1(@types/node@20.14.8)(less@4.2.0)): + vitefu@0.2.5(vite@5.3.5(@types/node@20.14.8)(less@4.2.0)): optionalDependencies: - vite: 5.3.1(@types/node@20.14.8)(less@4.2.0) + vite: 5.3.5(@types/node@20.14.8)(less@4.2.0) vitest@1.6.0(@types/node@20.12.7)(less@4.2.0): dependencies: @@ -23896,7 +24001,7 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.1(@types/node@20.12.7)(less@4.2.0) + vite: 5.3.5(@types/node@20.12.7)(less@4.2.0) vite-node: 1.6.0(@types/node@20.12.7)(less@4.2.0) why-is-node-running: 2.2.2 optionalDependencies: