From 63cc133d768ddb69f9b3c00a150f970be4c52e62 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 16:09:38 +0200 Subject: [PATCH 01/32] refactor(core)!: remove deprecated exports --- src/core/index.ts | 43 ------------------------------------------- 1 file changed, 43 deletions(-) diff --git a/src/core/index.ts b/src/core/index.ts index f1e25e60af..20043fe6ec 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -20,46 +20,3 @@ export { build } from "./build/build"; export { copyPublicAssets } from "./build/assets"; export { prepare } from "./build/prepare"; export { writeTypes } from "./build/types"; - -// ----------- Backward compatibility ----------- - -/** - * @deprecated Please import `defineNitroConfig` from nitropack/config instead - */ -export function defineNitroConfig(config: NitroConfig): NitroConfig { - return config; -} - -/** @deprecated Please import `defineNitroPreset` from nitropack/kit instead */ -export { defineNitroPreset } from "nitropack/kit"; - -/** @deprecated Avoid depending on GLOB_SCAN_PATTERN */ -export { GLOB_SCAN_PATTERN } from "./scan"; - -/** @deprecated Directly import { runtimeDependencies } from "nitropack/runtime/meta"; */ -export { runtimeDependencies as nitroRuntimeDependencies } from "nitropack/runtime/meta"; - -/** @deprecated Avoid depending on scan utils */ -export { - scanHandlers, - scanMiddleware, - scanModules, - scanPlugins, - scanServerRoutes, - scanTasks, -} from "./scan"; - -/** @deprecated Directly import type { ... } from "nitropack/types"; */ -export type { - Nitro, - NitroConfig, - NitroDevServer, - NitroOptions, - NitroPreset, - NitroWorker, - LoadConfigOptions, - Serialize, - SerializeObject, - SerializeTuple, - Simplify, -} from "nitropack/types"; From 23c715aa10903de6142e9f7f31af6e542b625e3e Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 16:10:52 +0200 Subject: [PATCH 02/32] refactor(runtime)!: remove `runtime/*` compatibility exports --- src/core/index.ts | 2 -- src/runtime/app.ts | 4 ---- src/runtime/cache.ts | 8 -------- src/runtime/config.ts | 3 --- src/runtime/context.ts | 3 --- src/runtime/database.ts | 3 --- src/runtime/error.ts | 3 --- src/runtime/plugin.ts | 3 --- src/runtime/storage.ts | 3 --- src/runtime/task.ts | 3 --- src/runtime/utils.ts | 2 -- 11 files changed, 37 deletions(-) delete mode 100644 src/runtime/app.ts delete mode 100644 src/runtime/cache.ts delete mode 100644 src/runtime/config.ts delete mode 100644 src/runtime/context.ts delete mode 100644 src/runtime/database.ts delete mode 100644 src/runtime/error.ts delete mode 100644 src/runtime/plugin.ts delete mode 100644 src/runtime/storage.ts delete mode 100644 src/runtime/task.ts delete mode 100644 src/runtime/utils.ts diff --git a/src/core/index.ts b/src/core/index.ts index 20043fe6ec..a6e3a23c65 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -1,5 +1,3 @@ -import type { NitroConfig } from "nitropack/types"; - // Core export { createNitro } from "./nitro"; diff --git a/src/runtime/app.ts b/src/runtime/app.ts deleted file mode 100644 index cc26a2bb7f..0000000000 --- a/src/runtime/app.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { useNitroApp } from "./internal/app"; -export type { NitroApp } from "nitropack/types"; diff --git a/src/runtime/cache.ts b/src/runtime/cache.ts deleted file mode 100644 index ff0b9f1a25..0000000000 --- a/src/runtime/cache.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { - cachedEventHandler, - cachedFunction, - defineCachedEventHandler, - defineCachedFunction, -} from "./internal/cache"; diff --git a/src/runtime/config.ts b/src/runtime/config.ts deleted file mode 100644 index 5c8d6f5b13..0000000000 --- a/src/runtime/config.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { useAppConfig, useRuntimeConfig } from "./internal/config"; diff --git a/src/runtime/context.ts b/src/runtime/context.ts deleted file mode 100644 index 9d5f35ef03..0000000000 --- a/src/runtime/context.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { useEvent } from "./internal/context"; diff --git a/src/runtime/database.ts b/src/runtime/database.ts deleted file mode 100644 index 7a38c43cf4..0000000000 --- a/src/runtime/database.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { useDatabase } from "./internal/database"; diff --git a/src/runtime/error.ts b/src/runtime/error.ts deleted file mode 100644 index c08fefcf35..0000000000 --- a/src/runtime/error.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { default } from "./internal/error"; diff --git a/src/runtime/plugin.ts b/src/runtime/plugin.ts deleted file mode 100644 index 88821df27c..0000000000 --- a/src/runtime/plugin.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { defineNitroPlugin, nitroPlugin } from "./internal/plugin"; diff --git a/src/runtime/storage.ts b/src/runtime/storage.ts deleted file mode 100644 index bf822b763a..0000000000 --- a/src/runtime/storage.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { useStorage } from "./internal/storage"; diff --git a/src/runtime/task.ts b/src/runtime/task.ts deleted file mode 100644 index 6e7cce97b2..0000000000 --- a/src/runtime/task.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" - -export { defineTask, runTask } from "./internal/task"; diff --git a/src/runtime/utils.ts b/src/runtime/utils.ts deleted file mode 100644 index 2b7ecfb52c..0000000000 --- a/src/runtime/utils.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Backward compatibility for imports from "#internal/nitro/*" or "nitropack/runtime/*" -export { isJsonRequest, normalizeError } from "./internal/utils"; From 9bdce707cbf1731495c29adc91251b8e6287f832 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 17:00:09 +0200 Subject: [PATCH 03/32] refactor!: use `nitro` as canonical name --- build.config.ts | 13 ++++++------- examples/graceful-shutdown/nitro.config.ts | 2 +- package.json | 4 ++-- playground/nitro.config.ts | 2 +- scripts/gen-presets.ts | 6 +++--- src/cli/commands/build.ts | 2 +- src/cli/commands/dev.ts | 4 ++-- src/cli/commands/prepare.ts | 2 +- src/cli/commands/task/list.ts | 2 +- src/cli/commands/task/run.ts | 2 +- src/cli/index.ts | 2 +- src/config/index.ts | 4 ++-- src/core/build/assets.ts | 4 ++-- src/core/build/build.ts | 4 ++-- src/core/build/dev.ts | 2 +- src/core/build/prepare.ts | 2 +- src/core/build/prod.ts | 6 +++--- src/core/build/types.ts | 18 +++++++++--------- src/core/config/defaults.ts | 8 ++++---- src/core/config/loader.ts | 12 ++++++------ src/core/config/resolvers/assets.ts | 2 +- src/core/config/resolvers/compatibility.ts | 4 ++-- src/core/config/resolvers/database.ts | 4 ++-- src/core/config/resolvers/export-conditions.ts | 2 +- src/core/config/resolvers/fetch.ts | 2 +- src/core/config/resolvers/imports.ts | 4 ++-- src/core/config/resolvers/open-api.ts | 8 ++++---- src/core/config/resolvers/paths.ts | 6 +++--- src/core/config/resolvers/route-rules.ts | 2 +- src/core/config/resolvers/runtime-config.ts | 2 +- src/core/config/resolvers/storage.ts | 2 +- src/core/config/resolvers/url.ts | 2 +- src/core/config/update.ts | 2 +- src/core/dev-server/error.ts | 2 +- src/core/dev-server/server.ts | 4 ++-- src/core/dev-server/vfs.ts | 2 +- src/core/module.ts | 2 +- src/core/nitro.ts | 6 +++--- src/core/prerender/prerender.ts | 4 ++-- src/core/prerender/utils.ts | 2 +- src/core/scan.ts | 2 +- src/core/task.ts | 2 +- src/core/utils/compress.ts | 2 +- src/core/utils/nitro.ts | 2 +- src/core/utils/storage.ts | 2 +- src/kit/path.ts | 2 +- src/kit/preset.ts | 2 +- src/presets/_nitro/base-worker.ts | 2 +- src/presets/_nitro/nitro-dev.ts | 2 +- src/presets/_nitro/nitro-prerender.ts | 2 +- src/presets/_nitro/runtime/nitro-dev.ts | 8 ++++---- .../_nitro/runtime/nitro-prerenderer.ts | 4 ++-- src/presets/_nitro/runtime/service-worker.ts | 2 +- src/presets/_nitro/service-worker.ts | 4 ++-- src/presets/_resolve.ts | 2 +- src/presets/_static/preset.ts | 2 +- src/presets/alwaysdata/preset.ts | 2 +- src/presets/aws-amplify/preset.ts | 2 +- src/presets/aws-amplify/runtime/aws-amplify.ts | 2 +- src/presets/aws-amplify/utils.ts | 2 +- src/presets/aws-lambda/preset.ts | 2 +- .../aws-lambda/runtime/aws-lambda-streaming.ts | 4 ++-- src/presets/aws-lambda/runtime/aws-lambda.ts | 6 +++--- src/presets/azure/preset.ts | 4 ++-- src/presets/azure/runtime/azure-functions.ts | 6 +++--- src/presets/azure/runtime/azure-swa.ts | 6 +++--- src/presets/azure/utils.ts | 4 ++-- src/presets/bun/preset.ts | 2 +- src/presets/bun/runtime/bun.ts | 4 ++-- src/presets/cleavr/preset.ts | 2 +- src/presets/cloudflare/preset.ts | 6 +++--- .../cloudflare/runtime/cloudflare-module.ts | 8 ++++---- .../cloudflare/runtime/cloudflare-pages.ts | 6 +++--- .../cloudflare/runtime/cloudflare-worker.ts | 6 +++--- src/presets/cloudflare/types.ts | 2 +- src/presets/cloudflare/utils.ts | 2 +- src/presets/deno/preset.ts | 6 +++--- src/presets/deno/runtime/deno-deploy.ts | 2 +- src/presets/deno/runtime/deno-server.ts | 6 +++--- src/presets/digitalocean/preset.ts | 2 +- src/presets/edgio/preset.ts | 2 +- src/presets/firebase/preset.ts | 2 +- src/presets/firebase/runtime/firebase-gen-1.ts | 4 ++-- src/presets/firebase/runtime/firebase-gen-2.ts | 4 ++-- src/presets/firebase/utils.ts | 4 ++-- src/presets/flightcontrol/preset.ts | 2 +- src/presets/heroku/preset.ts | 2 +- src/presets/iis/preset.ts | 4 ++-- src/presets/iis/utils.ts | 4 ++-- src/presets/koyeb/preset.ts | 2 +- src/presets/netlify/legacy/preset.ts | 6 +++--- .../netlify/legacy/runtime/netlify-edge.ts | 2 +- .../netlify/legacy/runtime/netlify-lambda.ts | 6 +++--- src/presets/netlify/legacy/runtime/netlify.ts | 2 +- src/presets/netlify/legacy/utils.ts | 2 +- src/presets/netlify/preset.ts | 6 +++--- src/presets/netlify/runtime/netlify-edge.ts | 2 +- src/presets/netlify/runtime/netlify.ts | 6 +++--- src/presets/netlify/utils.ts | 2 +- src/presets/node/preset.ts | 2 +- src/presets/node/runtime/cli.ts | 2 +- src/presets/node/runtime/cluster.ts | 4 ++-- src/presets/node/runtime/node-listener.ts | 6 +++--- src/presets/node/runtime/node-server.ts | 10 +++++----- src/presets/platform.sh/preset.ts | 2 +- src/presets/render.com/preset.ts | 2 +- src/presets/stormkit/preset.ts | 2 +- src/presets/stormkit/runtime/stormkit.ts | 4 ++-- src/presets/vercel/preset.ts | 4 ++-- src/presets/vercel/runtime/vercel-edge.ts | 2 +- src/presets/vercel/runtime/vercel.ts | 2 +- src/presets/vercel/utils.ts | 4 ++-- src/presets/winterjs/preset.ts | 2 +- src/presets/winterjs/runtime/winterjs.ts | 4 ++-- src/presets/zeabur/preset.ts | 6 +++--- src/presets/zeabur/runtime/zeabur.ts | 2 +- src/rollup/config.ts | 8 ++++---- src/rollup/plugins/app-config.ts | 2 +- src/rollup/plugins/database.ts | 2 +- src/rollup/plugins/esbuild.ts | 2 +- src/rollup/plugins/externals-legacy.ts | 2 +- src/rollup/plugins/externals.ts | 4 ++-- src/rollup/plugins/handlers-meta.ts | 2 +- src/rollup/plugins/handlers.ts | 8 ++------ src/rollup/plugins/import-meta.ts | 2 +- src/rollup/plugins/public-assets.ts | 4 ++-- src/rollup/plugins/raw.ts | 2 +- src/rollup/plugins/server-assets.ts | 2 +- src/rollup/plugins/storage.ts | 2 +- src/rollup/plugins/virtual.ts | 2 +- src/runtime/internal/app.ts | 10 +++------- src/runtime/internal/cache.ts | 2 +- src/runtime/internal/client.ts | 2 +- src/runtime/internal/config.ts | 2 +- src/runtime/internal/context.ts | 2 +- src/runtime/internal/error.ts | 2 +- src/runtime/internal/meta.ts | 2 +- src/runtime/internal/plugin.ts | 2 +- src/runtime/internal/renderer.ts | 2 +- src/runtime/internal/route-rules.ts | 2 +- src/runtime/internal/shutdown.ts | 2 +- src/runtime/internal/static.ts | 2 +- src/runtime/internal/task.ts | 2 +- src/types/config.ts | 6 +----- src/types/h3.ts | 2 +- src/types/handler.ts | 2 +- src/types/nitro.ts | 2 +- src/types/virtual/error-handler.d.ts | 2 +- src/types/virtual/server-handlers-meta.d.ts | 2 +- src/types/virtual/tasks.ts | 2 +- test/fixture/nitro.config.ts | 2 +- test/fixture/routes/file.ts | 2 +- test/fixture/tsconfig.json | 12 ------------ test/fixture/types.ts | 6 +++--- test/scripts/gen-fixture-types.ts | 3 ++- test/tests.ts | 4 ++-- tsconfig.json | 13 ------------- 157 files changed, 263 insertions(+), 300 deletions(-) diff --git a/build.config.ts b/build.config.ts index 46fa8d8db1..f644c5abea 100644 --- a/build.config.ts +++ b/build.config.ts @@ -42,12 +42,11 @@ export default defineBuildConfig({ { input: "src/types/index.ts" }, ], alias: { - nitropack: "nitropack", - "nitropack/meta": resolve(srcDir, "../meta.ts"), - "nitropack/runtime/meta": resolve(srcDir, "../runtime-meta.mjs"), + "nitro/meta": resolve(srcDir, "../meta.ts"), + "nitro/runtime/meta": resolve(srcDir, "../runtime-meta.mjs"), ...Object.fromEntries( subpaths.map((subpath) => [ - `nitropack/${subpath}`, + `nitro/${subpath}`, resolve(srcDir, `${subpath}/index.ts`), ]) ), @@ -63,9 +62,9 @@ export default defineBuildConfig({ }, }, externals: [ - "nitropack", - "nitropack/runtime/meta", - ...subpaths.map((subpath) => `nitropack/${subpath}`), + "nitro", + "nitro/runtime/meta", + ...subpaths.map((subpath) => `nitro/${subpath}`), "firebase-functions", "@scalar/api-reference", ], diff --git a/examples/graceful-shutdown/nitro.config.ts b/examples/graceful-shutdown/nitro.config.ts index c19a01864d..cdb7c35d19 100644 --- a/examples/graceful-shutdown/nitro.config.ts +++ b/examples/graceful-shutdown/nitro.config.ts @@ -1,3 +1,3 @@ -import { defineNitroConfig } from "nitropack/config"; +import { defineNitroConfig } from "nitro/config"; export default defineNitroConfig({}); diff --git a/package.json b/package.json index 0e72da811e..11a3d66f34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "nitropack", - "version": "2.9.6", + "name": "nitro", + "version": "3.0.0", "description": "Build and Deploy Universal JavaScript Servers", "repository": "unjs/nitro", "license": "MIT", diff --git a/playground/nitro.config.ts b/playground/nitro.config.ts index b56bcebd47..42a5b5fde6 100644 --- a/playground/nitro.config.ts +++ b/playground/nitro.config.ts @@ -1,4 +1,4 @@ -import { defineNitroConfig } from "nitropack/config"; +import { defineNitroConfig } from "nitro/config"; export default defineNitroConfig({ compatibilityDate: "2024-06-12", diff --git a/scripts/gen-presets.ts b/scripts/gen-presets.ts index 930d065ac3..412c4cc6cd 100644 --- a/scripts/gen-presets.ts +++ b/scripts/gen-presets.ts @@ -4,7 +4,7 @@ import { kebabCase, camelCase, pascalCase, snakeCase } from "scule"; import { readdirSync, existsSync, writeFileSync, readFileSync } from "node:fs"; import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; -import type { NitroPreset, NitroPresetMeta } from "nitropack/types"; +import type { NitroPreset, NitroPresetMeta } from "nitro/types"; import { findTypeExports } from "mlly"; import { subpaths } from "../build.config"; @@ -25,10 +25,10 @@ const jitiRequire = createJITI(presetsDir, { esmResolve: true, interopDefault: true, alias: { - nitropack: fileURLToPath(new URL("../src/core/index.ts", import.meta.url)), + nitro: fileURLToPath(new URL("../src/core/index.ts", import.meta.url)), ...Object.fromEntries( subpaths.map((pkg) => [ - `nitropack/${pkg}`, + `nitro/${pkg}`, fileURLToPath(new URL(`../src/${pkg}/index.ts`, import.meta.url)), ]) ), diff --git a/src/cli/commands/build.ts b/src/cli/commands/build.ts index 6c4c6365bb..50ec214d37 100644 --- a/src/cli/commands/build.ts +++ b/src/cli/commands/build.ts @@ -6,7 +6,7 @@ import { build, prepare, copyPublicAssets, -} from "nitropack/core"; +} from "nitro/core"; import { commonArgs } from "../common"; import type { DateString } from "compatx"; diff --git a/src/cli/commands/dev.ts b/src/cli/commands/dev.ts index 191db56e90..2ff5d68d5e 100644 --- a/src/cli/commands/dev.ts +++ b/src/cli/commands/dev.ts @@ -2,9 +2,9 @@ import { defineCommand } from "citty"; import { resolve } from "pathe"; import { consola } from "consola"; import { getArgs, parseArgs } from "listhen/cli"; -import { createNitro, build, prepare, createDevServer } from "nitropack/core"; +import { createNitro, build, prepare, createDevServer } from "nitro/core"; import { commonArgs } from "../common"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; const hmrKeyRe = /^runtimeConfig\.|routeRules\./; diff --git a/src/cli/commands/prepare.ts b/src/cli/commands/prepare.ts index 6d812590bd..529759115e 100644 --- a/src/cli/commands/prepare.ts +++ b/src/cli/commands/prepare.ts @@ -1,6 +1,6 @@ import { defineCommand } from "citty"; import { resolve } from "pathe"; -import { createNitro, writeTypes } from "nitropack/core"; +import { createNitro, writeTypes } from "nitro/core"; import { commonArgs } from "../common"; export default defineCommand({ diff --git a/src/cli/commands/task/list.ts b/src/cli/commands/task/list.ts index 6aab75d967..1e9177c463 100644 --- a/src/cli/commands/task/list.ts +++ b/src/cli/commands/task/list.ts @@ -1,7 +1,7 @@ import { defineCommand } from "citty"; import { resolve } from "pathe"; import { consola } from "consola"; -import { listTasks } from "nitropack/core"; +import { listTasks } from "nitro/core"; export default defineCommand({ meta: { diff --git a/src/cli/commands/task/run.ts b/src/cli/commands/task/run.ts index e01440f2ee..2d1bbcafcd 100644 --- a/src/cli/commands/task/run.ts +++ b/src/cli/commands/task/run.ts @@ -2,7 +2,7 @@ import { defineCommand } from "citty"; import { resolve } from "pathe"; import destr from "destr"; import { consola } from "consola"; -import { runTask } from "nitropack/core"; +import { runTask } from "nitro/core"; export default defineCommand({ meta: { diff --git a/src/cli/index.ts b/src/cli/index.ts index 6859e5e960..bc3f21d7bb 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node import { defineCommand, runMain } from "citty"; -import { version as nitroVersion } from "nitropack/meta"; +import { version as nitroVersion } from "nitro/meta"; const main = defineCommand({ meta: { diff --git a/src/config/index.ts b/src/config/index.ts index 4e591e5a59..97307d0289 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,6 +1,6 @@ -import type { NitroConfig } from "nitropack/types"; +import type { NitroConfig } from "nitro/types"; -export type { NitroConfig } from "nitropack/types"; +export type { NitroConfig } from "nitro/types"; export function defineNitroConfig(config: NitroConfig): NitroConfig { return config; diff --git a/src/core/build/assets.ts b/src/core/build/assets.ts index 1d622ee693..44f83a7c91 100644 --- a/src/core/build/assets.ts +++ b/src/core/build/assets.ts @@ -1,8 +1,8 @@ import { existsSync, promises as fsp } from "node:fs"; import { relative, resolve, join } from "pathe"; import { globby } from "globby"; -import { prettyPath, isDirectory } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { prettyPath, isDirectory } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { compressPublicAssets } from "../utils/compress"; const NEGATION_RE = /^(!?)(.*)$/; diff --git a/src/core/build/build.ts b/src/core/build/build.ts index 6a75e4b8c0..87a5d8a800 100644 --- a/src/core/build/build.ts +++ b/src/core/build/build.ts @@ -1,5 +1,5 @@ -import { getRollupConfig } from "nitropack/rollup"; -import type { Nitro } from "nitropack/types"; +import { getRollupConfig } from "nitro/rollup"; +import type { Nitro } from "nitro/types"; import { watchDev } from "./dev"; import { buildProduction } from "./prod"; diff --git a/src/core/build/dev.ts b/src/core/build/dev.ts index 817f3da03a..d4c4ae20a9 100644 --- a/src/core/build/dev.ts +++ b/src/core/build/dev.ts @@ -3,7 +3,7 @@ import * as rollup from "rollup"; import { watch } from "chokidar"; import { debounce } from "perfect-debounce"; import { GLOB_SCAN_PATTERN, scanHandlers } from "../scan"; -import type { Nitro, RollupConfig } from "nitropack/types"; +import type { Nitro, RollupConfig } from "nitro/types"; import { writeTypes } from "./types"; import defu from "defu"; import { formatRollupError } from "./error"; diff --git a/src/core/build/prepare.ts b/src/core/build/prepare.ts index 107d9e4ce2..c34a596b7f 100644 --- a/src/core/build/prepare.ts +++ b/src/core/build/prepare.ts @@ -1,6 +1,6 @@ import fsp from "node:fs/promises"; import fse from "fs-extra"; -import type { Nitro } from "nitropack"; +import type { Nitro } from "nitro/types"; export async function prepare(nitro: Nitro) { await prepareDir(nitro.options.output.dir); diff --git a/src/core/build/prod.ts b/src/core/build/prod.ts index 8db1ddec27..0dd63be85a 100644 --- a/src/core/build/prod.ts +++ b/src/core/build/prod.ts @@ -2,10 +2,10 @@ import { promises as fsp } from "node:fs"; import { relative, resolve, join, dirname } from "pathe"; import * as rollup from "rollup"; import { generateFSTree } from "../utils/fs-tree"; -import { writeFile } from "nitropack/kit"; +import { writeFile } from "nitro/kit"; import { scanHandlers } from "../scan"; -import type { Nitro, NitroBuildInfo, RollupConfig } from "nitropack/types"; -import { version as nitroVersion } from "nitropack/meta"; +import type { Nitro, NitroBuildInfo, RollupConfig } from "nitro/types"; +import { version as nitroVersion } from "nitro/meta"; import { snapshotStorage } from "../utils/storage"; import { formatRollupError } from "./error"; import { writeTypes } from "./types"; diff --git a/src/core/build/types.ts b/src/core/build/types.ts index 2527a20d75..bc748a2876 100644 --- a/src/core/build/types.ts +++ b/src/core/build/types.ts @@ -10,9 +10,9 @@ import { resolvePath, } from "mlly"; import { JSValue, generateTypes, resolveSchema } from "untyped"; -import { writeFile, isDirectory, resolveNitroPath } from "nitropack/kit"; -import type { Nitro, NitroTypes } from "nitropack/types"; -import { runtimeDir } from "nitropack/runtime/meta"; +import { writeFile, isDirectory, resolveNitroPath } from "nitro/kit"; +import type { Nitro, NitroTypes } from "nitro/types"; +import { runtimeDir } from "nitro/runtime/meta"; import { relative } from "pathe"; export async function writeTypes(nitro: Nitro) { @@ -103,8 +103,8 @@ export async function writeTypes(nitro: Nitro) { const routes = [ "// Generated by nitro", - 'import type { Serialize, Simplify } from "nitropack/types";', - 'declare module "nitropack/types" {', + 'import type { Serialize, Simplify } from "nitro/types";', + 'declare module "nitro/types" {', " type Awaited = T extends PromiseLike ? Awaited : T", " interface InternalApi {", ...Object.entries(types.routes).map(([path, methods]) => @@ -140,7 +140,7 @@ type UserAppConfig = Defu<{}, [${nitro.options.appConfigFiles .map((_, index: number) => `typeof appConfig${index}`) .join(", ")}]> -declare module "nitropack/types" { +declare module "nitro/types" { interface AppConfig extends UserAppConfig {}`, nitro.options.typescript.generateRuntimeConfigTypes ? generateTypes( @@ -166,7 +166,7 @@ declare module "nitropack/types" { ]; const declarations = [ - // local nitropack augmentations + // local nitro augmentations '/// ', '/// ', // global server auto-imports @@ -250,13 +250,13 @@ declare module "nitropack/types" { ], ...(nitro.options.typescript.internalPaths ? { - "nitropack/runtime": [ + "nitro/runtime": [ relativeWithDot(tsconfigDir, join(runtimeDir, "index")), ], "#internal/nitro": [ relativeWithDot(tsconfigDir, join(runtimeDir, "index")), ], - "nitropack/runtime/*": [ + "nitro/runtime/*": [ relativeWithDot(tsconfigDir, join(runtimeDir, "*")), ], "#internal/nitro/*": [ diff --git a/src/core/config/defaults.ts b/src/core/config/defaults.ts index f9e5edb24c..1278e207dc 100644 --- a/src/core/config/defaults.ts +++ b/src/core/config/defaults.ts @@ -1,7 +1,7 @@ import { isTest, isDebug } from "std-env"; -import type { NitroConfig } from "nitropack/types"; +import type { NitroConfig } from "nitro/types"; import { resolve } from "pathe"; -import { runtimeDir } from "nitropack/runtime/meta"; +import { runtimeDir } from "nitro/runtime/meta"; export const NitroDefaults: NitroConfig = { // General @@ -58,8 +58,8 @@ export const NitroDefaults: NitroConfig = { baseURL: process.env.NITRO_APP_BASE_URL || "/", handlers: [], devHandlers: [], - // errorHandler: "nitropack/runtime/internal/error", - errorHandler: "#internal/nitro/error", + // errorHandler: "nitro/runtime/internal/error", + errorHandler: "#internal/nitro/internal/error", routeRules: {}, prerender: { autoSubfolderIndex: true, diff --git a/src/core/config/loader.ts b/src/core/config/loader.ts index 3aef437c56..a63a5d965c 100644 --- a/src/core/config/loader.ts +++ b/src/core/config/loader.ts @@ -6,8 +6,8 @@ import type { NitroConfig, NitroOptions, NitroPresetMeta, -} from "nitropack/types"; -import type { PresetName } from "nitropack/presets"; +} from "nitro/types"; +import type { PresetName } from "nitro/presets"; import { NitroDefaults } from "./defaults"; @@ -81,8 +81,8 @@ async function _loadUserConfig( // Preset resolver const { resolvePreset } = (await import( - "nitropack/" + "presets" - )) as typeof import("nitropack/presets"); + "nitro/" + "presets" + )) as typeof import("nitro/presets"); const loadedConfig = await (opts.watch ? watchConfig @@ -114,8 +114,8 @@ async function _loadUserConfig( defaults: NitroDefaults, jitiOptions: { alias: { - nitropack: "nitropack/config", - "nitropack/config": "nitropack/config", + nitropack: "nitro/config", + "nitro/config": "nitro/config", }, }, async resolve(id: string) { diff --git a/src/core/config/resolvers/assets.ts b/src/core/config/resolvers/assets.ts index 9ca4560025..31911db724 100644 --- a/src/core/config/resolvers/assets.ts +++ b/src/core/config/resolvers/assets.ts @@ -2,7 +2,7 @@ import { resolve } from "pathe"; import { existsSync } from "node:fs"; import { withLeadingSlash, withoutTrailingSlash } from "ufo"; import { defu } from "defu"; -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; export async function resolveAssetsOptions(options: NitroOptions) { // Public Assets diff --git a/src/core/config/resolvers/compatibility.ts b/src/core/config/resolvers/compatibility.ts index 019f0f4063..b62f2ed587 100644 --- a/src/core/config/resolvers/compatibility.ts +++ b/src/core/config/resolvers/compatibility.ts @@ -5,7 +5,7 @@ import { } from "compatx"; import _consola from "consola"; import { colorize } from "consola/utils"; -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; import { relative } from "pathe"; // Nitro v2.9.6 release @@ -104,7 +104,7 @@ async function _resolveDefault(options: NitroOptions): Promise { function _getDefaultNitroConfig() { return /* js */ ` -import { defineNitroConfig } from 'nitropack/config' +import { defineNitroConfig } from 'nitro/config' export default defineNitroConfig({}) `; diff --git a/src/core/config/resolvers/database.ts b/src/core/config/resolvers/database.ts index cbe1c5e66d..b6df4c4677 100644 --- a/src/core/config/resolvers/database.ts +++ b/src/core/config/resolvers/database.ts @@ -1,9 +1,9 @@ -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; export async function resolveDatabaseOptions(options: NitroOptions) { if (options.experimental.database && options.imports) { options.imports.presets.push({ - from: "nitropack/runtime", + from: "nitro/runtime", imports: ["useDatabase"], }); if (options.dev && !options.database && !options.devDatabase) { diff --git a/src/core/config/resolvers/export-conditions.ts b/src/core/config/resolvers/export-conditions.ts index e88d8f6af7..056b0a40ae 100644 --- a/src/core/config/resolvers/export-conditions.ts +++ b/src/core/config/resolvers/export-conditions.ts @@ -1,4 +1,4 @@ -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; export async function resolveExportConditionsOptions(options: NitroOptions) { options.exportConditions = _resolveExportConditions( diff --git a/src/core/config/resolvers/fetch.ts b/src/core/config/resolvers/fetch.ts index 6406c9e308..ad2bbc5e59 100644 --- a/src/core/config/resolvers/fetch.ts +++ b/src/core/config/resolvers/fetch.ts @@ -1,5 +1,5 @@ import consola from "consola"; -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; import { nodeMajorVersion, provider } from "std-env"; export async function resolveFetchOptions(options: NitroOptions) { diff --git a/src/core/config/resolvers/imports.ts b/src/core/config/resolvers/imports.ts index 4dd2566f22..9c8e7fe249 100644 --- a/src/core/config/resolvers/imports.ts +++ b/src/core/config/resolvers/imports.ts @@ -1,4 +1,4 @@ -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; import escapeRE from "escape-string-regexp"; import { resolveModuleExportNames } from "mlly"; import { join } from "pathe"; @@ -58,7 +58,7 @@ export async function resolveImportsOptions(options: NitroOptions) { function getNitroImportsPreset(): Preset[] { return [ { - from: "nitropack/runtime", + from: "nitro/runtime", imports: [ "defineCachedFunction", "defineCachedEventHandler", diff --git a/src/core/config/resolvers/open-api.ts b/src/core/config/resolvers/open-api.ts index 281f801a8d..7d406f2ade 100644 --- a/src/core/config/resolvers/open-api.ts +++ b/src/core/config/resolvers/open-api.ts @@ -1,18 +1,18 @@ -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; export async function resolveOpenAPIOptions(options: NitroOptions) { if (options.dev && options.experimental.openAPI) { options.handlers.push({ route: "/_nitro/openapi.json", - handler: "nitropack/runtime/internal/routes/openapi", + handler: "nitro/runtime/internal/routes/openapi", }); options.handlers.push({ route: "/_nitro/scalar", - handler: "nitropack/runtime/internal/routes/scalar", + handler: "nitro/runtime/internal/routes/scalar", }); options.handlers.push({ route: "/_nitro/swagger", - handler: "nitropack/runtime/internal/routes/swagger", + handler: "nitro/runtime/internal/routes/swagger", }); } } diff --git a/src/core/config/resolvers/paths.ts b/src/core/config/resolvers/paths.ts index 8f71d784d1..e53707cd45 100644 --- a/src/core/config/resolvers/paths.ts +++ b/src/core/config/resolvers/paths.ts @@ -1,9 +1,9 @@ import { findWorkspaceDir } from "pkg-types"; -import { resolveNitroPath } from "nitropack/kit"; -import type { NitroOptions } from "nitropack/types"; +import { resolveNitroPath } from "nitro/kit"; +import type { NitroOptions } from "nitro/types"; import { resolve, join } from "pathe"; import { NitroDefaults } from "../defaults"; -import { pkgDir } from "nitropack/runtime/meta"; +import { pkgDir } from "nitro/runtime/meta"; import { existsSync } from "node:fs"; export async function resolvePathOptions(options: NitroOptions) { diff --git a/src/core/config/resolvers/route-rules.ts b/src/core/config/resolvers/route-rules.ts index 2071b42ca3..0489630d7d 100644 --- a/src/core/config/resolvers/route-rules.ts +++ b/src/core/config/resolvers/route-rules.ts @@ -4,7 +4,7 @@ import type { NitroOptions, NitroRouteConfig, NitroRouteRules, -} from "nitropack/types"; +} from "nitro/types"; export async function resolveRouteRulesOptions(options: NitroOptions) { // Backward compatibility for options.routes diff --git a/src/core/config/resolvers/runtime-config.ts b/src/core/config/resolvers/runtime-config.ts index aaa385ad58..6654573322 100644 --- a/src/core/config/resolvers/runtime-config.ts +++ b/src/core/config/resolvers/runtime-config.ts @@ -3,7 +3,7 @@ import type { NitroOptions, NitroConfig, NitroRuntimeConfig, -} from "nitropack/types"; +} from "nitro/types"; export async function resolveRuntimeConfigOptions(options: NitroOptions) { options.runtimeConfig = normalizeRuntimeConfig(options); diff --git a/src/core/config/resolvers/storage.ts b/src/core/config/resolvers/storage.ts index 93e351cdf4..683db78536 100644 --- a/src/core/config/resolvers/storage.ts +++ b/src/core/config/resolvers/storage.ts @@ -1,4 +1,4 @@ -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; import { resolve } from "pathe"; export async function resolveStorageOptions(options: NitroOptions) { diff --git a/src/core/config/resolvers/url.ts b/src/core/config/resolvers/url.ts index 3ed92147d8..1025de9554 100644 --- a/src/core/config/resolvers/url.ts +++ b/src/core/config/resolvers/url.ts @@ -1,4 +1,4 @@ -import type { NitroOptions } from "nitropack/types"; +import type { NitroOptions } from "nitro/types"; import { withLeadingSlash, withTrailingSlash } from "ufo"; export async function resolveURLOptions(options: NitroOptions) { diff --git a/src/core/config/update.ts b/src/core/config/update.ts index 42d3093e5c..2b4d7f05c8 100644 --- a/src/core/config/update.ts +++ b/src/core/config/update.ts @@ -1,4 +1,4 @@ -import type { Nitro, NitroDynamicConfig } from "nitropack/types"; +import type { Nitro, NitroDynamicConfig } from "nitro/types"; import { normalizeRouteRules } from "./resolvers/route-rules"; import { normalizeRuntimeConfig } from "./resolvers/runtime-config"; import consola from "consola"; diff --git a/src/core/dev-server/error.ts b/src/core/dev-server/error.ts index 1b60610fe1..dbdfce8bb3 100644 --- a/src/core/dev-server/error.ts +++ b/src/core/dev-server/error.ts @@ -6,7 +6,7 @@ import { getResponseStatusText, send, } from "h3"; -import { NitroErrorHandler } from "nitropack/types"; +import { NitroErrorHandler } from "nitro/types"; function errorHandler(error: any, event: H3Event) { setResponseHeader(event, "Content-Type", "text/html; charset=UTF-8"); diff --git a/src/core/dev-server/server.ts b/src/core/dev-server/server.ts index 55bc7d45ed..c29e360ac3 100644 --- a/src/core/dev-server/server.ts +++ b/src/core/dev-server/server.ts @@ -24,12 +24,12 @@ import type { NitroBuildInfo, NitroDevServer, NitroWorker, -} from "nitropack/types"; +} from "nitro/types"; import { createVFSHandler } from "./vfs"; import defaultErrorHandler from "./error"; import type { IncomingMessage, OutgoingMessage } from "node:http"; import type { Duplex } from "node:stream"; -import { version as nitroVersion } from "nitropack/meta"; +import { version as nitroVersion } from "nitro/meta"; function initWorker(filename: string): Promise | undefined { if (!existsSync(filename)) { diff --git a/src/core/dev-server/vfs.ts b/src/core/dev-server/vfs.ts index 1c4a6da28d..a004c80f36 100644 --- a/src/core/dev-server/vfs.ts +++ b/src/core/dev-server/vfs.ts @@ -1,5 +1,5 @@ import { createError, eventHandler, getRequestHeader } from "h3"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; export function createVFSHandler(nitro: Nitro) { return eventHandler(async (event) => { diff --git a/src/core/module.ts b/src/core/module.ts index 4579c5fa90..da6c1ab8a1 100644 --- a/src/core/module.ts +++ b/src/core/module.ts @@ -1,5 +1,5 @@ import jiti from "jiti"; -import type { Nitro, NitroModule, NitroModuleInput } from "nitropack/types"; +import type { Nitro, NitroModule, NitroModuleInput } from "nitro/types"; export async function installModules(nitro: Nitro) { const _modules = [...(nitro.options.modules || [])]; diff --git a/src/core/nitro.ts b/src/core/nitro.ts index 94ee053f6d..ba7667ecbf 100644 --- a/src/core/nitro.ts +++ b/src/core/nitro.ts @@ -6,7 +6,7 @@ import type { NitroDynamicConfig, Nitro, LoadConfigOptions, -} from "nitropack/types"; +} from "nitro/types"; import { loadOptions } from "./config/loader"; import { createStorage } from "./utils/storage"; import { installModules } from "./module"; @@ -48,10 +48,10 @@ export async function createNitro( // Debug and timing if (nitro.options.debug) { createDebugger(nitro.hooks, { tag: "nitro" }); - nitro.options.plugins.push("nitropack/runtime/internal/debug"); + nitro.options.plugins.push("nitro/runtime/internal/debug"); } if (nitro.options.timing) { - nitro.options.plugins.push("nitropack/runtime/internal/timing"); + nitro.options.plugins.push("nitro/runtime/internal/timing"); } // Logger diff --git a/src/core/prerender/prerender.ts b/src/core/prerender/prerender.ts index 40d5372f32..fa61305de1 100644 --- a/src/core/prerender/prerender.ts +++ b/src/core/prerender/prerender.ts @@ -8,8 +8,8 @@ import mime from "mime"; import type { $Fetch } from "ofetch"; import { createNitro } from "../nitro"; import { build } from "../build/build"; -import type { Nitro, NitroRouteRules, PrerenderRoute } from "nitropack/types"; -import { writeFile } from "nitropack/kit"; +import type { Nitro, NitroRouteRules, PrerenderRoute } from "nitro/types"; +import { writeFile } from "nitro/kit"; import { compressPublicAssets } from "../utils/compress"; import { extractLinks, diff --git a/src/core/prerender/utils.ts b/src/core/prerender/utils.ts index a2ca04e212..e75d4b5404 100644 --- a/src/core/prerender/utils.ts +++ b/src/core/prerender/utils.ts @@ -1,6 +1,6 @@ import { parseURL } from "ufo"; import chalk from "chalk"; -import type { PrerenderRoute } from "nitropack/types"; +import type { PrerenderRoute } from "nitro/types"; const allowedExtensions = new Set(["", ".json"]); diff --git a/src/core/scan.ts b/src/core/scan.ts index dcae4024c5..8d5555f5c2 100644 --- a/src/core/scan.ts +++ b/src/core/scan.ts @@ -1,7 +1,7 @@ import { relative, join } from "pathe"; import { globby } from "globby"; import { withBase, withLeadingSlash, withoutTrailingSlash } from "ufo"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; export const GLOB_SCAN_PATTERN = "**/*.{js,mjs,cjs,ts,mts,cts,tsx,jsx}"; type FileInfo = { path: string; fullPath: string }; diff --git a/src/core/task.ts b/src/core/task.ts index bf1528724c..d08e02deb2 100644 --- a/src/core/task.ts +++ b/src/core/task.ts @@ -7,7 +7,7 @@ import type { TaskRunnerOptions, TaskEvent, Nitro, -} from "nitropack/types"; +} from "nitro/types"; /** @experimental */ export async function runTask( diff --git a/src/core/utils/compress.ts b/src/core/utils/compress.ts index a9d96d4a87..729155f204 100644 --- a/src/core/utils/compress.ts +++ b/src/core/utils/compress.ts @@ -4,7 +4,7 @@ import { existsSync } from "node:fs"; import { globby } from "globby"; import { resolve } from "pathe"; import mime from "mime"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; export async function compressPublicAssets(nitro: Nitro) { const publicFiles = await globby("**", { diff --git a/src/core/utils/nitro.ts b/src/core/utils/nitro.ts index 1240a6cea8..2c1ac7943f 100644 --- a/src/core/utils/nitro.ts +++ b/src/core/utils/nitro.ts @@ -1,5 +1,5 @@ import { upperFirst } from "scule"; -import { Nitro } from "nitropack/types"; +import { Nitro } from "nitro/types"; export function nitroServerName(nitro: Nitro) { return nitro.options.framework.name === "nitro" diff --git a/src/core/utils/storage.ts b/src/core/utils/storage.ts index e7f796de6b..d4ae635a88 100644 --- a/src/core/utils/storage.ts +++ b/src/core/utils/storage.ts @@ -1,5 +1,5 @@ import { createStorage as _createStorage, builtinDrivers } from "unstorage"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; export async function createStorage(nitro: Nitro) { const storage = _createStorage(); diff --git a/src/kit/path.ts b/src/kit/path.ts index 4ca7dfde0d..3a063341b1 100644 --- a/src/kit/path.ts +++ b/src/kit/path.ts @@ -1,5 +1,5 @@ import { relative, resolve } from "pathe"; -import { Nitro } from "nitropack/types"; +import { Nitro } from "nitro/types"; import { getProperty } from "dot-prop"; import consola from "consola"; import { colorize } from "consola/utils"; diff --git a/src/kit/preset.ts b/src/kit/preset.ts index 427f75cdb7..342e53d121 100644 --- a/src/kit/preset.ts +++ b/src/kit/preset.ts @@ -1,4 +1,4 @@ -import type { NitroPreset, NitroPresetMeta } from "nitropack/types"; +import type { NitroPreset, NitroPresetMeta } from "nitro/types"; import { fileURLToPath } from "node:url"; export function defineNitroPreset< diff --git a/src/presets/_nitro/base-worker.ts b/src/presets/_nitro/base-worker.ts index 51a6cca061..4a37a68c6d 100644 --- a/src/presets/_nitro/base-worker.ts +++ b/src/presets/_nitro/base-worker.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const baseWorker = defineNitroPreset( { diff --git a/src/presets/_nitro/nitro-dev.ts b/src/presets/_nitro/nitro-dev.ts index cc36847369..dbd32fbc11 100644 --- a/src/presets/_nitro/nitro-dev.ts +++ b/src/presets/_nitro/nitro-dev.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const nitroDev = defineNitroPreset( { diff --git a/src/presets/_nitro/nitro-prerender.ts b/src/presets/_nitro/nitro-prerender.ts index d51147bfcf..34e75c24e9 100644 --- a/src/presets/_nitro/nitro-prerender.ts +++ b/src/presets/_nitro/nitro-prerender.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const nitroPrerender = defineNitroPreset( { diff --git a/src/presets/_nitro/runtime/nitro-dev.ts b/src/presets/_nitro/runtime/nitro-dev.ts index 334799bfb6..cb8bb21af1 100644 --- a/src/presets/_nitro/runtime/nitro-dev.ts +++ b/src/presets/_nitro/runtime/nitro-dev.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { trapUnhandledNodeErrors } from "nitropack/runtime/internal/utils"; -import { runTask } from "nitropack/runtime/internal/task"; -import { startScheduleRunner } from "nitropack/runtime/internal/task"; +import { useNitroApp } from "nitro/runtime"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { runTask } from "nitro/runtime/internal/task"; +import { startScheduleRunner } from "nitro/runtime/internal/task"; import { tasks, scheduledTasks } from "#nitro-internal-virtual/tasks"; import { Server } from "node:http"; diff --git a/src/presets/_nitro/runtime/nitro-prerenderer.ts b/src/presets/_nitro/runtime/nitro-prerenderer.ts index dc9a55b72a..dd2330f41d 100644 --- a/src/presets/_nitro/runtime/nitro-prerenderer.ts +++ b/src/presets/_nitro/runtime/nitro-prerenderer.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { trapUnhandledNodeErrors } from "nitropack/runtime/internal/utils"; +import { useNitroApp } from "nitro/runtime"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; const nitroApp = useNitroApp(); diff --git a/src/presets/_nitro/runtime/service-worker.ts b/src/presets/_nitro/runtime/service-worker.ts index 045e63e8a1..cf192b9672 100644 --- a/src/presets/_nitro/runtime/service-worker.ts +++ b/src/presets/_nitro/runtime/service-worker.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets"; const nitroApp = useNitroApp(); diff --git a/src/presets/_nitro/service-worker.ts b/src/presets/_nitro/service-worker.ts index 5206d4962a..bdb1c02f32 100644 --- a/src/presets/_nitro/service-worker.ts +++ b/src/presets/_nitro/service-worker.ts @@ -1,8 +1,8 @@ import { existsSync, promises as fsp } from "node:fs"; import { resolve } from "pathe"; import { joinURL } from "ufo"; -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; const serviceWorker = defineNitroPreset( () => { diff --git a/src/presets/_resolve.ts b/src/presets/_resolve.ts index 2fa31421bf..4dc5470614 100644 --- a/src/presets/_resolve.ts +++ b/src/presets/_resolve.ts @@ -1,4 +1,4 @@ -import type { NitroPreset, NitroPresetMeta } from "nitropack/types"; +import type { NitroPreset, NitroPresetMeta } from "nitro/types"; import { kebabCase } from "scule"; import { provider, type ProviderName } from "std-env"; import allPresets from "./_all.gen"; diff --git a/src/presets/_static/preset.ts b/src/presets/_static/preset.ts index b914abfbaf..7e919ea9d1 100644 --- a/src/presets/_static/preset.ts +++ b/src/presets/_static/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; import fsp from "node:fs/promises"; import { join } from "pathe"; diff --git a/src/presets/alwaysdata/preset.ts b/src/presets/alwaysdata/preset.ts index d12a47f5ce..aca9f5e340 100644 --- a/src/presets/alwaysdata/preset.ts +++ b/src/presets/alwaysdata/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const alwaysdata = defineNitroPreset( { diff --git a/src/presets/aws-amplify/preset.ts b/src/presets/aws-amplify/preset.ts index d2fc4a0bf7..b015388a3f 100644 --- a/src/presets/aws-amplify/preset.ts +++ b/src/presets/aws-amplify/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; import { writeAmplifyFiles } from "./utils"; export type { AWSAmplifyOptions as PresetOptions } from "./types"; diff --git a/src/presets/aws-amplify/runtime/aws-amplify.ts b/src/presets/aws-amplify/runtime/aws-amplify.ts index 3b28a1cfad..94848a8b37 100644 --- a/src/presets/aws-amplify/runtime/aws-amplify.ts +++ b/src/presets/aws-amplify/runtime/aws-amplify.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { Server } from "node:http"; import { toNodeListener } from "h3"; diff --git a/src/presets/aws-amplify/utils.ts b/src/presets/aws-amplify/utils.ts index 1e8f17535d..2b040fca83 100644 --- a/src/presets/aws-amplify/utils.ts +++ b/src/presets/aws-amplify/utils.ts @@ -1,7 +1,7 @@ import { resolve } from "node:path"; import { writeFile } from "node:fs/promises"; import { joinURL } from "ufo"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import type { AmplifyDeployManifest, AmplifyRoute, diff --git a/src/presets/aws-lambda/preset.ts b/src/presets/aws-lambda/preset.ts index 4d861561fb..b776338597 100644 --- a/src/presets/aws-lambda/preset.ts +++ b/src/presets/aws-lambda/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const awsLambda = defineNitroPreset( { diff --git a/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts b/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts index 161b8c12f8..12fb9f773d 100644 --- a/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts +++ b/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts @@ -5,11 +5,11 @@ import type { } from "aws-lambda"; import "#nitro-internal-pollyfills"; import { withQuery } from "ufo"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingHeaders, -} from "nitropack/runtime/internal/utils.lambda"; +} from "nitro/runtime/internal/utils.lambda"; declare global { // eslint-disable-next-line @typescript-eslint/no-namespace diff --git a/src/presets/aws-lambda/runtime/aws-lambda.ts b/src/presets/aws-lambda/runtime/aws-lambda.ts index 106fa5c928..59845cb0f7 100644 --- a/src/presets/aws-lambda/runtime/aws-lambda.ts +++ b/src/presets/aws-lambda/runtime/aws-lambda.ts @@ -7,13 +7,13 @@ import type { } from "aws-lambda"; import "#nitro-internal-pollyfills"; import { withQuery } from "ufo"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingBody, normalizeLambdaOutgoingHeaders, -} from "nitropack/runtime/internal/utils.lambda"; -import { normalizeCookieHeader } from "nitropack/runtime/internal/utils"; +} from "nitro/runtime/internal/utils.lambda"; +import { normalizeCookieHeader } from "nitro/runtime/internal/utils"; const nitroApp = useNitroApp(); diff --git a/src/presets/azure/preset.ts b/src/presets/azure/preset.ts index e1e3c0380a..9be4ba6268 100644 --- a/src/presets/azure/preset.ts +++ b/src/presets/azure/preset.ts @@ -1,5 +1,5 @@ -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { writeFunctionsRoutes, writeSWARoutes } from "./utils"; export type { AzureOptions as PresetOptions } from "./types"; diff --git a/src/presets/azure/runtime/azure-functions.ts b/src/presets/azure/runtime/azure-functions.ts index 71aa40eec1..71be2849eb 100644 --- a/src/presets/azure/runtime/azure-functions.ts +++ b/src/presets/azure/runtime/azure-functions.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { getAzureParsedCookiesFromHeaders } from "nitropack/runtime/internal/utils.azure"; -import { normalizeLambdaOutgoingHeaders } from "nitropack/runtime/internal/utils.lambda"; +import { useNitroApp } from "nitro/runtime"; +import { getAzureParsedCookiesFromHeaders } from "nitro/runtime/internal/utils.azure"; +import { normalizeLambdaOutgoingHeaders } from "nitro/runtime/internal/utils.lambda"; import type { HttpRequest, HttpResponse } from "@azure/functions"; diff --git a/src/presets/azure/runtime/azure-swa.ts b/src/presets/azure/runtime/azure-swa.ts index 3d4e02c1e7..9932121e1a 100644 --- a/src/presets/azure/runtime/azure-swa.ts +++ b/src/presets/azure/runtime/azure-swa.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { getAzureParsedCookiesFromHeaders } from "nitropack/runtime/internal/utils.azure"; -import { normalizeLambdaOutgoingHeaders } from "nitropack/runtime/internal/utils.lambda"; +import { useNitroApp } from "nitro/runtime"; +import { getAzureParsedCookiesFromHeaders } from "nitro/runtime/internal/utils.azure"; +import { normalizeLambdaOutgoingHeaders } from "nitro/runtime/internal/utils.lambda"; import type { HttpResponse, HttpRequest } from "@azure/functions"; import { parseURL } from "ufo"; diff --git a/src/presets/azure/utils.ts b/src/presets/azure/utils.ts index 83e869966e..f01ce015e9 100644 --- a/src/presets/azure/utils.ts +++ b/src/presets/azure/utils.ts @@ -1,8 +1,8 @@ import { createWriteStream } from "node:fs"; import archiver from "archiver"; import { join, resolve } from "pathe"; -import { writeFile } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { writeFile } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import fsp from "node:fs/promises"; export async function writeFunctionsRoutes(nitro: Nitro) { diff --git a/src/presets/bun/preset.ts b/src/presets/bun/preset.ts index ed6250b3cd..e8a444b201 100644 --- a/src/presets/bun/preset.ts +++ b/src/presets/bun/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const bun = defineNitroPreset( { diff --git a/src/presets/bun/runtime/bun.ts b/src/presets/bun/runtime/bun.ts index d8822b8121..cf4b04b70c 100644 --- a/src/presets/bun/runtime/bun.ts +++ b/src/presets/bun/runtime/bun.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { startScheduleRunner } from "nitropack/runtime/internal/task"; +import { useNitroApp } from "nitro/runtime"; +import { startScheduleRunner } from "nitro/runtime/internal/task"; import type {} from "bun"; import wsAdapter from "crossws/adapters/bun"; diff --git a/src/presets/cleavr/preset.ts b/src/presets/cleavr/preset.ts index 75dbbea3f3..eaa4463219 100644 --- a/src/presets/cleavr/preset.ts +++ b/src/presets/cleavr/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const cleavr = defineNitroPreset( { diff --git a/src/presets/cloudflare/preset.ts b/src/presets/cloudflare/preset.ts index 8a2f44a175..d9bc79237f 100644 --- a/src/presets/cloudflare/preset.ts +++ b/src/presets/cloudflare/preset.ts @@ -1,7 +1,7 @@ -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { writeCFPagesFiles, writeCFPagesStaticFiles } from "./utils"; -import { writeFile } from "nitropack/kit"; +import { writeFile } from "nitro/kit"; import { resolve } from "pathe"; export type { CloudflareOptions as PresetOptions } from "./types"; diff --git a/src/presets/cloudflare/runtime/cloudflare-module.ts b/src/presets/cloudflare/runtime/cloudflare-module.ts index 910f21fc93..c4fdebc8fc 100644 --- a/src/presets/cloudflare/runtime/cloudflare-module.ts +++ b/src/presets/cloudflare/runtime/cloudflare-module.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; -import { requestHasBody } from "nitropack/runtime/internal/utils"; -import { useNitroApp } from "nitropack/runtime"; -import { useRuntimeConfig } from "nitropack/runtime"; -import { runCronTasks } from "nitropack/runtime/internal/task"; +import { requestHasBody } from "nitro/runtime/internal/utils"; +import { useNitroApp } from "nitro/runtime"; +import { useRuntimeConfig } from "nitro/runtime"; +import { runCronTasks } from "nitro/runtime/internal/task"; import { getPublicAssetMeta } from "#nitro-internal-virtual/public-assets"; import { withoutBase } from "ufo"; diff --git a/src/presets/cloudflare/runtime/cloudflare-pages.ts b/src/presets/cloudflare/runtime/cloudflare-pages.ts index 2835b2b913..913d59facd 100644 --- a/src/presets/cloudflare/runtime/cloudflare-pages.ts +++ b/src/presets/cloudflare/runtime/cloudflare-pages.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; -import { runCronTasks } from "nitropack/runtime/internal/task"; -import { requestHasBody } from "nitropack/runtime/internal/utils"; -import { useNitroApp } from "nitropack/runtime"; +import { runCronTasks } from "nitro/runtime/internal/task"; +import { requestHasBody } from "nitro/runtime/internal/utils"; +import { useNitroApp } from "nitro/runtime"; import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets"; import wsAdapter from "crossws/adapters/cloudflare"; diff --git a/src/presets/cloudflare/runtime/cloudflare-worker.ts b/src/presets/cloudflare/runtime/cloudflare-worker.ts index 84f28a733c..6961f4f552 100644 --- a/src/presets/cloudflare/runtime/cloudflare-worker.ts +++ b/src/presets/cloudflare/runtime/cloudflare-worker.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; -import { requestHasBody } from "nitropack/runtime/internal/utils"; -import { useNitroApp } from "nitropack/runtime"; -import { useRuntimeConfig } from "nitropack/runtime"; +import { requestHasBody } from "nitro/runtime/internal/utils"; +import { useNitroApp } from "nitro/runtime"; +import { useRuntimeConfig } from "nitro/runtime"; import { getPublicAssetMeta } from "#nitro-internal-virtual/public-assets"; import { withoutBase } from "ufo"; diff --git a/src/presets/cloudflare/types.ts b/src/presets/cloudflare/types.ts index b8176c30e0..4a47057e29 100644 --- a/src/presets/cloudflare/types.ts +++ b/src/presets/cloudflare/types.ts @@ -84,7 +84,7 @@ export interface CloudflareMessageBatch { retryAll(options?: CloudflareQueueRetryOptions): void; } -declare module "nitropack/types" { +declare module "nitro/types" { export interface NitroRuntimeHooks { "cloudflare:email": (_: { event: CloudflareEmailContext; diff --git a/src/presets/cloudflare/utils.ts b/src/presets/cloudflare/utils.ts index 38f45207d5..d09c62ee43 100644 --- a/src/presets/cloudflare/utils.ts +++ b/src/presets/cloudflare/utils.ts @@ -8,7 +8,7 @@ import { } from "ufo"; import { parseTOML, stringifyTOML } from "confbox"; import { globby } from "globby"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import defu from "defu"; import { isCI } from "std-env"; import type { CloudflarePagesRoutes } from "./types"; diff --git a/src/presets/deno/preset.ts b/src/presets/deno/preset.ts index 0a5a52c4cb..6c40df87b6 100644 --- a/src/presets/deno/preset.ts +++ b/src/presets/deno/preset.ts @@ -2,8 +2,8 @@ import { builtinModules } from "node:module"; import { isAbsolute, resolve } from "pathe"; import MagicString from "magic-string"; import { findStaticImports } from "mlly"; -import { defineNitroPreset } from "nitropack/kit"; -import { writeFile } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; +import { writeFile } from "nitro/kit"; // nitro/src/rollup/plugin/import-meta.ts const ImportMetaRe = /import\.meta|globalThis._importMeta_/; @@ -21,7 +21,7 @@ const denoDeploy = defineNitroPreset( "cd ./ && deployctl deploy --project= server/index.ts", }, unenv: { - polyfill: ["nitropack/runtime/internal/polyfill/deno-env"], + polyfill: ["nitro/runtime/internal/polyfill/deno-env"], }, rollupConfig: { preserveEntrySignatures: false, diff --git a/src/presets/deno/runtime/deno-deploy.ts b/src/presets/deno/runtime/deno-deploy.ts index 502b024419..1da39d5128 100644 --- a/src/presets/deno/runtime/deno-deploy.ts +++ b/src/presets/deno/runtime/deno-deploy.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import wsAdapter from "crossws/adapters/deno"; import type { Deno as _Deno } from "@deno/types"; diff --git a/src/presets/deno/runtime/deno-server.ts b/src/presets/deno/runtime/deno-server.ts index 0bebf67b88..5ef990745b 100644 --- a/src/presets/deno/runtime/deno-server.ts +++ b/src/presets/deno/runtime/deno-server.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { useRuntimeConfig } from "nitropack/runtime"; -import { startScheduleRunner } from "nitropack/runtime/internal/task"; +import { useNitroApp } from "nitro/runtime"; +import { useRuntimeConfig } from "nitro/runtime"; +import { startScheduleRunner } from "nitro/runtime/internal/task"; import destr from "destr"; import wsAdapter from "crossws/adapters/deno"; diff --git a/src/presets/digitalocean/preset.ts b/src/presets/digitalocean/preset.ts index 5d96755f58..c01a83f9ce 100644 --- a/src/presets/digitalocean/preset.ts +++ b/src/presets/digitalocean/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const digitalOcean = defineNitroPreset( { diff --git a/src/presets/edgio/preset.ts b/src/presets/edgio/preset.ts index f3c8a5fa8d..f804164413 100644 --- a/src/presets/edgio/preset.ts +++ b/src/presets/edgio/preset.ts @@ -1,7 +1,7 @@ import { promises as fsp } from "node:fs"; import { resolve, dirname } from "pathe"; import type { PackageJson } from "pkg-types"; -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const edgio = defineNitroPreset( { diff --git a/src/presets/firebase/preset.ts b/src/presets/firebase/preset.ts index 9c19b254d8..4a1189c04e 100644 --- a/src/presets/firebase/preset.ts +++ b/src/presets/firebase/preset.ts @@ -1,6 +1,6 @@ import { basename } from "pathe"; import type { Plugin } from "rollup"; -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; import { updatePackageJSON, writeFirebaseConfig } from "./utils"; export type { FirebaseOptions as PresetOptions } from "./types"; diff --git a/src/presets/firebase/runtime/firebase-gen-1.ts b/src/presets/firebase/runtime/firebase-gen-1.ts index 0b95edbdfe..fb15c53330 100644 --- a/src/presets/firebase/runtime/firebase-gen-1.ts +++ b/src/presets/firebase/runtime/firebase-gen-1.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { useAppConfig } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; +import { useAppConfig } from "nitro/runtime"; import functions from "firebase-functions"; import { toNodeListener } from "h3"; diff --git a/src/presets/firebase/runtime/firebase-gen-2.ts b/src/presets/firebase/runtime/firebase-gen-2.ts index 1babf921bc..74dc3ba48f 100644 --- a/src/presets/firebase/runtime/firebase-gen-2.ts +++ b/src/presets/firebase/runtime/firebase-gen-2.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { useAppConfig } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; +import { useAppConfig } from "nitro/runtime"; import { onRequest } from "firebase-functions/v2/https"; import { toNodeListener } from "h3"; diff --git a/src/presets/firebase/utils.ts b/src/presets/firebase/utils.ts index 2c47b526b7..0ce143b5b0 100644 --- a/src/presets/firebase/utils.ts +++ b/src/presets/firebase/utils.ts @@ -1,8 +1,8 @@ import { existsSync } from "node:fs"; import { join, relative } from "pathe"; import { readPackageJSON, writePackageJSON } from "pkg-types"; -import { writeFile } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { writeFile } from "nitro/kit"; +import type { Nitro } from "nitro/types"; export async function writeFirebaseConfig(nitro: Nitro) { const firebaseConfigPath = join(nitro.options.rootDir, "firebase.json"); diff --git a/src/presets/flightcontrol/preset.ts b/src/presets/flightcontrol/preset.ts index 72f78478d5..199bf85b06 100644 --- a/src/presets/flightcontrol/preset.ts +++ b/src/presets/flightcontrol/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const flightControl = defineNitroPreset( { diff --git a/src/presets/heroku/preset.ts b/src/presets/heroku/preset.ts index 0dd1346fb0..e9f54aa544 100644 --- a/src/presets/heroku/preset.ts +++ b/src/presets/heroku/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const heroku = defineNitroPreset( { diff --git a/src/presets/iis/preset.ts b/src/presets/iis/preset.ts index ef883cba3d..f63b1f649b 100644 --- a/src/presets/iis/preset.ts +++ b/src/presets/iis/preset.ts @@ -1,5 +1,5 @@ -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { writeIISFiles, writeIISNodeFiles } from "./utils"; const iisHandler = defineNitroPreset( diff --git a/src/presets/iis/utils.ts b/src/presets/iis/utils.ts index 7cb5a408d0..42ceab0ccd 100644 --- a/src/presets/iis/utils.ts +++ b/src/presets/iis/utils.ts @@ -1,7 +1,7 @@ import { readFile } from "node:fs/promises"; import { defu } from "defu"; -import type { Nitro } from "nitropack/types"; -import { writeFile } from "nitropack/kit"; +import type { Nitro } from "nitro/types"; +import { writeFile } from "nitro/kit"; import { resolve } from "pathe"; import { existsSync } from "node:fs"; diff --git a/src/presets/koyeb/preset.ts b/src/presets/koyeb/preset.ts index 000194927e..73493378ad 100644 --- a/src/presets/koyeb/preset.ts +++ b/src/presets/koyeb/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const koyeb = defineNitroPreset( { diff --git a/src/presets/netlify/legacy/preset.ts b/src/presets/netlify/legacy/preset.ts index 2e27053284..d98c79963e 100644 --- a/src/presets/netlify/legacy/preset.ts +++ b/src/presets/netlify/legacy/preset.ts @@ -1,7 +1,7 @@ import { existsSync, promises as fsp } from "node:fs"; import { join, dirname } from "pathe"; -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { deprecateSWR, writeHeaders, writeRedirects } from "./utils"; // Netlify functions @@ -92,7 +92,7 @@ const netlifyEdge = defineNitroPreset( }, }, unenv: { - polyfill: ["nitropack/runtime/internal/polyfill/deno-env"], + polyfill: ["nitro/runtime/internal/polyfill/deno-env"], }, hooks: { "rollup:before": (nitro: Nitro) => { diff --git a/src/presets/netlify/legacy/runtime/netlify-edge.ts b/src/presets/netlify/legacy/runtime/netlify-edge.ts index 7d64738b20..02538281e9 100644 --- a/src/presets/netlify/legacy/runtime/netlify-edge.ts +++ b/src/presets/netlify/legacy/runtime/netlify-edge.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets"; const nitroApp = useNitroApp(); diff --git a/src/presets/netlify/legacy/runtime/netlify-lambda.ts b/src/presets/netlify/legacy/runtime/netlify-lambda.ts index cdac0caa34..23b2c18576 100644 --- a/src/presets/netlify/legacy/runtime/netlify-lambda.ts +++ b/src/presets/netlify/legacy/runtime/netlify-lambda.ts @@ -1,11 +1,11 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { normalizeCookieHeader } from "nitropack/runtime/internal/utils"; +import { useNitroApp } from "nitro/runtime"; +import { normalizeCookieHeader } from "nitro/runtime/internal/utils"; import { normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingBody, normalizeLambdaOutgoingHeaders, -} from "nitropack/runtime/internal/utils.lambda"; +} from "nitro/runtime/internal/utils.lambda"; import { withQuery } from "ufo"; import type { diff --git a/src/presets/netlify/legacy/runtime/netlify.ts b/src/presets/netlify/legacy/runtime/netlify.ts index 4a89ab2bdf..3187f681fc 100644 --- a/src/presets/netlify/legacy/runtime/netlify.ts +++ b/src/presets/netlify/legacy/runtime/netlify.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { getRouteRulesForPath } from "nitropack/runtime/internal/route-rules"; +import { getRouteRulesForPath } from "nitro/runtime/internal/route-rules"; import { withQuery } from "ufo"; import type { Handler } from "@netlify/functions/dist/main"; diff --git a/src/presets/netlify/legacy/utils.ts b/src/presets/netlify/legacy/utils.ts index f67c93ea83..89afedc651 100644 --- a/src/presets/netlify/legacy/utils.ts +++ b/src/presets/netlify/legacy/utils.ts @@ -1,6 +1,6 @@ import { existsSync, promises as fsp } from "node:fs"; import { join } from "pathe"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; export async function writeRedirects(nitro: Nitro) { const redirectsPath = join(nitro.options.output.publicDir, "_redirects"); diff --git a/src/presets/netlify/preset.ts b/src/presets/netlify/preset.ts index 0ae268be1b..60d8ea4b71 100644 --- a/src/presets/netlify/preset.ts +++ b/src/presets/netlify/preset.ts @@ -1,7 +1,7 @@ import { promises as fsp } from "node:fs"; import { join, dirname } from "pathe"; -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { generateNetlifyFunction, getGeneratorString, @@ -75,7 +75,7 @@ const netlifyEdge = defineNitroPreset( }, }, unenv: { - polyfill: ["nitropack/runtime/internal/polyfill/deno-env"], + polyfill: ["nitro/runtime/internal/polyfill/deno-env"], }, hooks: { async compiled(nitro: Nitro) { diff --git a/src/presets/netlify/runtime/netlify-edge.ts b/src/presets/netlify/runtime/netlify-edge.ts index 7d64738b20..02538281e9 100644 --- a/src/presets/netlify/runtime/netlify-edge.ts +++ b/src/presets/netlify/runtime/netlify-edge.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets"; const nitroApp = useNitroApp(); diff --git a/src/presets/netlify/runtime/netlify.ts b/src/presets/netlify/runtime/netlify.ts index b834b971c3..8e1c05fe32 100644 --- a/src/presets/netlify/runtime/netlify.ts +++ b/src/presets/netlify/runtime/netlify.ts @@ -1,10 +1,10 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { getRouteRulesForPath } from "nitropack/runtime/internal/route-rules"; +import { useNitroApp } from "nitro/runtime"; +import { getRouteRulesForPath } from "nitro/runtime/internal/route-rules"; import { joinHeaders, normalizeCookieHeader, -} from "nitropack/runtime/internal/utils"; +} from "nitro/runtime/internal/utils"; const nitroApp = useNitroApp(); diff --git a/src/presets/netlify/utils.ts b/src/presets/netlify/utils.ts index 25bfe265dc..71eaaeebd9 100644 --- a/src/presets/netlify/utils.ts +++ b/src/presets/netlify/utils.ts @@ -1,6 +1,6 @@ import { existsSync, promises as fsp } from "node:fs"; import { join } from "pathe"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; export async function writeRedirects(nitro: Nitro) { const redirectsPath = join(nitro.options.output.publicDir, "_redirects"); diff --git a/src/presets/node/preset.ts b/src/presets/node/preset.ts index b2cc1d346c..f83fbe9599 100644 --- a/src/presets/node/preset.ts +++ b/src/presets/node/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const node = defineNitroPreset( { diff --git a/src/presets/node/runtime/cli.ts b/src/presets/node/runtime/cli.ts index f643f84e6c..b2a0d19235 100644 --- a/src/presets/node/runtime/cli.ts +++ b/src/presets/node/runtime/cli.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; const nitroApp = useNitroApp(); diff --git a/src/presets/node/runtime/cluster.ts b/src/presets/node/runtime/cluster.ts index 8c5fb7e111..31469991d2 100644 --- a/src/presets/node/runtime/cluster.ts +++ b/src/presets/node/runtime/cluster.ts @@ -1,7 +1,7 @@ import os from "node:os"; import cluster from "node:cluster"; -import { getGracefulShutdownConfig } from "nitropack/runtime/internal/shutdown"; -import { trapUnhandledNodeErrors } from "nitropack/runtime/internal/utils"; +import { getGracefulShutdownConfig } from "nitro/runtime/internal/shutdown"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; function runMaster() { const numberOfWorkers = diff --git a/src/presets/node/runtime/node-listener.ts b/src/presets/node/runtime/node-listener.ts index fe6ef318e5..688275a714 100644 --- a/src/presets/node/runtime/node-listener.ts +++ b/src/presets/node/runtime/node-listener.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; import { toNodeListener } from "h3"; -import { useNitroApp } from "nitropack/runtime"; -import { trapUnhandledNodeErrors } from "nitropack/runtime/internal/utils"; -import { startScheduleRunner } from "nitropack/runtime/internal/task"; +import { useNitroApp } from "nitro/runtime"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { startScheduleRunner } from "nitro/runtime/internal/task"; const nitroApp = useNitroApp(); diff --git a/src/presets/node/runtime/node-server.ts b/src/presets/node/runtime/node-server.ts index 085a5a1e3d..5f8f0c03bf 100644 --- a/src/presets/node/runtime/node-server.ts +++ b/src/presets/node/runtime/node-server.ts @@ -5,11 +5,11 @@ import { Server as HttpsServer } from "node:https"; import destr from "destr"; import { toNodeListener } from "h3"; import wsAdapter from "crossws/adapters/node"; -import { useNitroApp } from "nitropack/runtime"; -import { setupGracefulShutdown } from "nitropack/runtime/internal/shutdown"; -import { trapUnhandledNodeErrors } from "nitropack/runtime/internal/utils"; -import { useRuntimeConfig } from "nitropack/runtime"; -import { startScheduleRunner } from "nitropack/runtime/internal/task"; +import { useNitroApp } from "nitro/runtime"; +import { setupGracefulShutdown } from "nitro/runtime/internal/shutdown"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { useRuntimeConfig } from "nitro/runtime"; +import { startScheduleRunner } from "nitro/runtime/internal/task"; const cert = process.env.NITRO_SSL_CERT; const key = process.env.NITRO_SSL_KEY; diff --git a/src/presets/platform.sh/preset.ts b/src/presets/platform.sh/preset.ts index 6311eed3da..e285ab71c6 100644 --- a/src/presets/platform.sh/preset.ts +++ b/src/presets/platform.sh/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const platformSh = defineNitroPreset( { diff --git a/src/presets/render.com/preset.ts b/src/presets/render.com/preset.ts index 6a268428c1..044d80f5a6 100644 --- a/src/presets/render.com/preset.ts +++ b/src/presets/render.com/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const renderCom = defineNitroPreset( { diff --git a/src/presets/stormkit/preset.ts b/src/presets/stormkit/preset.ts index 645c43b8a7..a76424c57f 100644 --- a/src/presets/stormkit/preset.ts +++ b/src/presets/stormkit/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const stormkit = defineNitroPreset( { diff --git a/src/presets/stormkit/runtime/stormkit.ts b/src/presets/stormkit/runtime/stormkit.ts index 8061f40c2b..df68921e38 100644 --- a/src/presets/stormkit/runtime/stormkit.ts +++ b/src/presets/stormkit/runtime/stormkit.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; -import { normalizeLambdaOutgoingBody } from "nitropack/runtime/internal/utils.lambda"; +import { useNitroApp } from "nitro/runtime"; +import { normalizeLambdaOutgoingBody } from "nitro/runtime/internal/utils.lambda"; import type { Handler } from "aws-lambda"; diff --git a/src/presets/vercel/preset.ts b/src/presets/vercel/preset.ts index 0c4e0b56e1..5f23de51b5 100644 --- a/src/presets/vercel/preset.ts +++ b/src/presets/vercel/preset.ts @@ -1,5 +1,5 @@ -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { deprecateSWR, generateEdgeFunctionFiles, diff --git a/src/presets/vercel/runtime/vercel-edge.ts b/src/presets/vercel/runtime/vercel-edge.ts index 89bcb0c6af..c298e0e1dc 100644 --- a/src/presets/vercel/runtime/vercel-edge.ts +++ b/src/presets/vercel/runtime/vercel-edge.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; const nitroApp = useNitroApp(); diff --git a/src/presets/vercel/runtime/vercel.ts b/src/presets/vercel/runtime/vercel.ts index fb9c06e005..0adfc223e7 100644 --- a/src/presets/vercel/runtime/vercel.ts +++ b/src/presets/vercel/runtime/vercel.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { toNodeListener, NodeListener } from "h3"; import { parseQuery } from "ufo"; diff --git a/src/presets/vercel/utils.ts b/src/presets/vercel/utils.ts index 10b82a17aa..a34619ab83 100644 --- a/src/presets/vercel/utils.ts +++ b/src/presets/vercel/utils.ts @@ -1,7 +1,7 @@ -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import fsp from "node:fs/promises"; import { dirname, relative, resolve } from "pathe"; -import { writeFile } from "nitropack/kit"; +import { writeFile } from "nitro/kit"; import { defu } from "defu"; import { joinURL, withoutLeadingSlash } from "ufo"; import type { diff --git a/src/presets/winterjs/preset.ts b/src/presets/winterjs/preset.ts index ba948e544a..4c220d38a5 100644 --- a/src/presets/winterjs/preset.ts +++ b/src/presets/winterjs/preset.ts @@ -1,4 +1,4 @@ -import { defineNitroPreset } from "nitropack/kit"; +import { defineNitroPreset } from "nitro/kit"; const winterjs = defineNitroPreset( { diff --git a/src/presets/winterjs/runtime/winterjs.ts b/src/presets/winterjs/runtime/winterjs.ts index e793eabfe0..7cc7acdd88 100644 --- a/src/presets/winterjs/runtime/winterjs.ts +++ b/src/presets/winterjs/runtime/winterjs.ts @@ -1,7 +1,7 @@ // @ts-nocheck TODO: Remove after removing polyfills import "#nitro-internal-pollyfills"; -import { toBuffer } from "nitropack/runtime/internal/utils"; -import { useNitroApp } from "nitropack/runtime"; +import { toBuffer } from "nitro/runtime/internal/utils"; +import { useNitroApp } from "nitro/runtime"; import { toPlainHandler } from "h3"; import { hasProtocol, joinURL } from "ufo"; diff --git a/src/presets/zeabur/preset.ts b/src/presets/zeabur/preset.ts index dfda5dacf6..4135478dc6 100644 --- a/src/presets/zeabur/preset.ts +++ b/src/presets/zeabur/preset.ts @@ -1,8 +1,8 @@ import fsp from "node:fs/promises"; import { dirname, relative, resolve } from "pathe"; -import { writeFile } from "nitropack/kit"; -import { defineNitroPreset } from "nitropack/kit"; -import type { Nitro } from "nitropack/types"; +import { writeFile } from "nitro/kit"; +import { defineNitroPreset } from "nitro/kit"; +import type { Nitro } from "nitro/types"; // https://zeabur.com/docs/advanced/serverless-output-format diff --git a/src/presets/zeabur/runtime/zeabur.ts b/src/presets/zeabur/runtime/zeabur.ts index b570e6146a..d00fb3b2c0 100644 --- a/src/presets/zeabur/runtime/zeabur.ts +++ b/src/presets/zeabur/runtime/zeabur.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitropack/runtime"; +import { useNitroApp } from "nitro/runtime"; import { NodeListener, toNodeListener } from "h3"; const handler = toNodeListener(useNitroApp().h3App); diff --git a/src/rollup/config.ts b/src/rollup/config.ts index f1c84bc3ef..0c411ad96f 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -22,7 +22,7 @@ import type { NitroStaticBuildFlags, NodeExternalsOptions, RollupConfig, -} from "nitropack/types"; +} from "nitro/types"; import { resolveAliases } from "./utils"; import { replace } from "./plugins/replace"; import { virtual } from "./plugins/virtual"; @@ -41,7 +41,7 @@ import { database } from "./plugins/database"; import { importMeta } from "./plugins/import-meta"; import { appConfig } from "./plugins/app-config"; import { sourcemapMininify } from "./plugins/sourcemap-min"; -import { runtimeDependencies, runtimeDir } from "nitropack/runtime/meta"; +import { runtimeDependencies, runtimeDir } from "nitro/runtime/meta"; export const getRollupConfig = (nitro: Nitro): RollupConfig => { const extensions: string[] = [ @@ -379,8 +379,8 @@ export const plugins = [ "#build": buildDir, "#nitro-internal-virtual/error-handler": nitro.options.errorHandler, "#internal/nitro": runtimeDir, - "nitro/runtime": runtimeDir, "nitropack/runtime": runtimeDir, + "nitro/runtime": runtimeDir, "~": nitro.options.srcDir, "@/": nitro.options.srcDir, "~~": nitro.options.rootDir, @@ -447,7 +447,7 @@ export const plugins = [ "@@/", "virtual:", "nitro/runtime", - "nitropack/runtime", + "nitro/runtime", dirname(nitro.options.entry), ...(nitro.options.experimental.wasm ? [(id: string) => id?.endsWith(".wasm")] diff --git a/src/rollup/plugins/app-config.ts b/src/rollup/plugins/app-config.ts index c5c4b48a59..c37b8175c8 100644 --- a/src/rollup/plugins/app-config.ts +++ b/src/rollup/plugins/app-config.ts @@ -1,5 +1,5 @@ import { genImport } from "knitwork"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import { virtual } from "./virtual"; export function appConfig(nitro: Nitro) { diff --git a/src/rollup/plugins/database.ts b/src/rollup/plugins/database.ts index af79f46955..6252c9a756 100644 --- a/src/rollup/plugins/database.ts +++ b/src/rollup/plugins/database.ts @@ -1,6 +1,6 @@ import { connectors } from "db0"; import { camelCase } from "scule"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import { virtual } from "./virtual"; export function database(nitro: Nitro) { diff --git a/src/rollup/plugins/esbuild.ts b/src/rollup/plugins/esbuild.ts index 71b830344b..2dd3c6ea12 100644 --- a/src/rollup/plugins/esbuild.ts +++ b/src/rollup/plugins/esbuild.ts @@ -4,7 +4,7 @@ import { extname, relative } from "pathe"; import type { Plugin, PluginContext } from "rollup"; import { Loader, TransformResult, transform } from "esbuild"; import { createFilter } from "@rollup/pluginutils"; -import { EsbuildOptions } from "nitropack/types"; +import { EsbuildOptions } from "nitro/types"; const defaultLoaders: { [ext: string]: Loader } = { ".ts": "ts", diff --git a/src/rollup/plugins/externals-legacy.ts b/src/rollup/plugins/externals-legacy.ts index 99b002fe47..e53978ac74 100644 --- a/src/rollup/plugins/externals-legacy.ts +++ b/src/rollup/plugins/externals-legacy.ts @@ -5,7 +5,7 @@ import { nodeFileTrace, NodeFileTraceOptions } from "@vercel/nft"; import type { Plugin } from "rollup"; import { resolvePath, isValidNodeImport, normalizeid } from "mlly"; import semver from "semver"; -import { isDirectory } from "nitropack/kit"; +import { isDirectory } from "nitro/kit"; import { normalizeMatcher } from "./externals"; interface NodeExternalsOptions { diff --git a/src/rollup/plugins/externals.ts b/src/rollup/plugins/externals.ts index 394e9e946a..8fa2b533fc 100644 --- a/src/rollup/plugins/externals.ts +++ b/src/rollup/plugins/externals.ts @@ -13,8 +13,8 @@ import { parseNodeModulePath, } from "mlly"; import semver from "semver"; -import { isDirectory } from "nitropack/kit"; -import type { NodeExternalsOptions } from "nitropack/types"; +import { isDirectory } from "nitro/kit"; +import type { NodeExternalsOptions } from "nitro/types"; export function externals(opts: NodeExternalsOptions): Plugin { const trackedExternals = new Set(); diff --git a/src/rollup/plugins/handlers-meta.ts b/src/rollup/plugins/handlers-meta.ts index 28eb7ed040..6519437d9e 100644 --- a/src/rollup/plugins/handlers-meta.ts +++ b/src/rollup/plugins/handlers-meta.ts @@ -3,7 +3,7 @@ import { transform } from "esbuild"; import type { Plugin } from "rollup"; import type { Literal, Expression } from "estree"; import { extname } from "pathe"; -import { Nitro, NitroEventHandler } from "nitropack/types"; +import { Nitro, NitroEventHandler } from "nitro/types"; const virtualPrefix = "\0nitro-handler-meta:"; diff --git a/src/rollup/plugins/handlers.ts b/src/rollup/plugins/handlers.ts index e8abffe332..2f5abc4a5c 100644 --- a/src/rollup/plugins/handlers.ts +++ b/src/rollup/plugins/handlers.ts @@ -1,9 +1,5 @@ import { hash } from "ohash"; -import type { - Nitro, - NitroRouteRules, - NitroEventHandler, -} from "nitropack/types"; +import type { Nitro, NitroRouteRules, NitroEventHandler } from "nitro/types"; import { virtual } from "./virtual"; export function handlers(nitro: Nitro) { @@ -36,7 +32,7 @@ export function handlers(nitro: Nitro) { if (nitro.options.serveStatic) { handlers.unshift({ middleware: true, - handler: "nitropack/runtime/internal/static", + handler: "nitro/runtime/internal/static", }); } if (nitro.options.renderer) { diff --git a/src/rollup/plugins/import-meta.ts b/src/rollup/plugins/import-meta.ts index 3638c11506..fa5dbb06a6 100644 --- a/src/rollup/plugins/import-meta.ts +++ b/src/rollup/plugins/import-meta.ts @@ -1,5 +1,5 @@ import type { Plugin } from "rollup"; -import { Nitro } from "nitropack/types"; +import { Nitro } from "nitro/types"; export const ImportMetaRe = /import\.meta|globalThis._importMeta_/; diff --git a/src/rollup/plugins/public-assets.ts b/src/rollup/plugins/public-assets.ts index dc0b9d945e..1b0bb69b55 100644 --- a/src/rollup/plugins/public-assets.ts +++ b/src/rollup/plugins/public-assets.ts @@ -5,9 +5,9 @@ import createEtag from "etag"; import mime from "mime"; import { globby } from "globby"; import type { Plugin } from "rollup"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import { virtual } from "./virtual"; -import type { PublicAsset } from "nitropack/types"; +import type { PublicAsset } from "nitro/types"; const readAssetHandler: Record< Exclude, diff --git a/src/rollup/plugins/raw.ts b/src/rollup/plugins/raw.ts index 705516b89d..53912ccd61 100644 --- a/src/rollup/plugins/raw.ts +++ b/src/rollup/plugins/raw.ts @@ -2,7 +2,7 @@ import { promises as fsp } from "node:fs"; import { extname } from "pathe"; import mime from "mime"; import type { Plugin } from "rollup"; -import { RawOptions } from "nitropack/types"; +import { RawOptions } from "nitro/types"; const HELPER_ID = "\0raw-helpers"; diff --git a/src/rollup/plugins/server-assets.ts b/src/rollup/plugins/server-assets.ts index dc5a98b3da..329dc0d4c5 100644 --- a/src/rollup/plugins/server-assets.ts +++ b/src/rollup/plugins/server-assets.ts @@ -5,7 +5,7 @@ import mime from "mime"; import { resolve } from "pathe"; import { normalizeKey } from "unstorage"; import { globby } from "globby"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import { virtual } from "./virtual"; interface ResolvedAsset { diff --git a/src/rollup/plugins/storage.ts b/src/rollup/plugins/storage.ts index e4d5f301d9..82a6fbe9bf 100644 --- a/src/rollup/plugins/storage.ts +++ b/src/rollup/plugins/storage.ts @@ -1,6 +1,6 @@ import { builtinDrivers } from "unstorage"; import { genImport, genSafeVariableName } from "knitwork"; -import type { Nitro } from "nitropack/types"; +import type { Nitro } from "nitro/types"; import { virtual } from "./virtual"; export function storage(nitro: Nitro) { diff --git a/src/rollup/plugins/virtual.ts b/src/rollup/plugins/virtual.ts index c8ed425ca8..6b52d22a54 100644 --- a/src/rollup/plugins/virtual.ts +++ b/src/rollup/plugins/virtual.ts @@ -1,6 +1,6 @@ import { resolve, dirname } from "pathe"; import type { Plugin } from "rollup"; -import type { RollupVirtualOptions, VirtualModule } from "nitropack/types"; +import type { RollupVirtualOptions, VirtualModule } from "nitro/types"; // Based on https://github.com/rollup/plugins/blob/master/packages/virtual/src/index.ts diff --git a/src/runtime/internal/app.ts b/src/runtime/internal/app.ts index 98b4761bd7..846a918cbd 100644 --- a/src/runtime/internal/app.ts +++ b/src/runtime/internal/app.ts @@ -16,18 +16,14 @@ import { createFetch as createLocalFetch, } from "unenv/runtime/fetch/index"; import { createHooks } from "hookable"; -import type { - NitroRuntimeHooks, - CaptureError, - NitroApp, -} from "nitropack/types"; +import type { NitroRuntimeHooks, CaptureError, NitroApp } from "nitro/types"; import { useRuntimeConfig } from "./config"; import { cachedEventHandler } from "./cache"; import { normalizeFetchResponse } from "./utils"; import { createRouteRulesHandler, getRouteRulesForPath } from "./route-rules"; import { nitroAsyncContext } from "./context"; -import type { NitroAsyncContext } from "nitropack/types"; -import type { $Fetch, NitroFetchRequest } from "nitropack/types"; +import type { NitroAsyncContext } from "nitro/types"; +import type { $Fetch, NitroFetchRequest } from "nitro/types"; import { plugins } from "#nitro-internal-virtual/plugins"; import errorHandler from "#nitro-internal-virtual/error-handler"; import { handlers } from "#nitro-internal-virtual/server-handlers"; diff --git a/src/runtime/internal/cache.ts b/src/runtime/internal/cache.ts index 7a63eba22e..e33ebdcb51 100644 --- a/src/runtime/internal/cache.ts +++ b/src/runtime/internal/cache.ts @@ -19,7 +19,7 @@ import type { CachedEventHandlerOptions, ResponseCacheEntry, NitroFetchRequest, -} from "nitropack/types"; +} from "nitro/types"; const defaultCacheOptions = { name: "_", diff --git a/src/runtime/internal/client.ts b/src/runtime/internal/client.ts index 1a07c1c41e..d7b9c1fc19 100644 --- a/src/runtime/internal/client.ts +++ b/src/runtime/internal/client.ts @@ -1,6 +1,6 @@ // Client polyfill import { $fetch } from "ofetch"; -import { $Fetch, NitroFetchRequest } from "nitropack/types"; +import { $Fetch, NitroFetchRequest } from "nitro/types"; if (!globalThis.$fetch) { globalThis.$fetch = $fetch as $Fetch; diff --git a/src/runtime/internal/config.ts b/src/runtime/internal/config.ts index d398a233bf..0e9aefabbb 100644 --- a/src/runtime/internal/config.ts +++ b/src/runtime/internal/config.ts @@ -2,7 +2,7 @@ import { klona } from "klona"; import { H3Event } from "h3"; import { type EnvOptions, applyEnv } from "./utils.env"; import { appConfig as _inlineAppConfig } from "#nitro-internal-virtual/app-config"; -import type { NitroRuntimeConfig } from "nitropack/types"; +import type { NitroRuntimeConfig } from "nitro/types"; // Static runtime config inlined by nitro build const _inlineRuntimeConfig = process.env.RUNTIME_CONFIG as any; diff --git a/src/runtime/internal/context.ts b/src/runtime/internal/context.ts index 11e4996e3b..4962d92360 100644 --- a/src/runtime/internal/context.ts +++ b/src/runtime/internal/context.ts @@ -1,7 +1,7 @@ import { AsyncLocalStorage } from "node:async_hooks"; import { H3Event, createError } from "h3"; import { getContext } from "unctx"; -import type { NitroAsyncContext } from "nitropack/types"; +import type { NitroAsyncContext } from "nitro/types"; export const nitroAsyncContext = getContext("nitro-app", { asyncContext: import.meta._asyncContext, diff --git a/src/runtime/internal/error.ts b/src/runtime/internal/error.ts index 0fd28150f2..e6d2e742be 100644 --- a/src/runtime/internal/error.ts +++ b/src/runtime/internal/error.ts @@ -1,6 +1,6 @@ // import ansiHTML from 'ansi-html' import { setResponseHeader, setResponseStatus, send } from "h3"; -import type { NitroErrorHandler } from "nitropack/types"; +import type { NitroErrorHandler } from "nitro/types"; import { normalizeError, isJsonRequest } from "./utils"; export function defineNitroErrorHandler( diff --git a/src/runtime/internal/meta.ts b/src/runtime/internal/meta.ts index 1cf66eaf9d..0340385d1f 100644 --- a/src/runtime/internal/meta.ts +++ b/src/runtime/internal/meta.ts @@ -1,4 +1,4 @@ -import type { NitroRouteMeta } from "nitropack/types"; +import type { NitroRouteMeta } from "nitro/types"; export function defineRouteMeta(meta: NitroRouteMeta) { return meta; diff --git a/src/runtime/internal/plugin.ts b/src/runtime/internal/plugin.ts index ff93dca004..9320bc03ac 100644 --- a/src/runtime/internal/plugin.ts +++ b/src/runtime/internal/plugin.ts @@ -1,4 +1,4 @@ -import type { NitroAppPlugin } from "nitropack/types"; +import type { NitroAppPlugin } from "nitro/types"; export function defineNitroPlugin(def: NitroAppPlugin) { return def; diff --git a/src/runtime/internal/renderer.ts b/src/runtime/internal/renderer.ts index 5cf701cba2..4bf886fc61 100644 --- a/src/runtime/internal/renderer.ts +++ b/src/runtime/internal/renderer.ts @@ -8,7 +8,7 @@ import { setResponseStatus, } from "h3"; import { useNitroApp } from "./app"; -import type { RenderHandler } from "nitropack/types"; +import type { RenderHandler } from "nitro/types"; export function defineRenderHandler(handler: RenderHandler) { return eventHandler(async (event) => { diff --git a/src/runtime/internal/route-rules.ts b/src/runtime/internal/route-rules.ts index cbbf2eadbc..6d4c1b8630 100644 --- a/src/runtime/internal/route-rules.ts +++ b/src/runtime/internal/route-rules.ts @@ -9,7 +9,7 @@ import defu from "defu"; import { createRouter as createRadixRouter, toRouteMatcher } from "radix3"; import { joinURL, withQuery, getQuery, withoutBase } from "ufo"; import { useRuntimeConfig } from "./config"; -import type { NitroRouteRules } from "nitropack/types"; +import type { NitroRouteRules } from "nitro/types"; const config = useRuntimeConfig(); const _routeRulesMatcher = toRouteMatcher( diff --git a/src/runtime/internal/shutdown.ts b/src/runtime/internal/shutdown.ts index d0a3d93fe2..4a921749ce 100644 --- a/src/runtime/internal/shutdown.ts +++ b/src/runtime/internal/shutdown.ts @@ -1,6 +1,6 @@ import type { Server as HttpServer } from "node:http"; import gracefulShutdown from "./lib/http-graceful-shutdown"; -import type { NitroApp } from "nitropack/types"; +import type { NitroApp } from "nitro/types"; export function getGracefulShutdownConfig() { return { diff --git a/src/runtime/internal/static.ts b/src/runtime/internal/static.ts index c4c10e1744..940a7d5565 100644 --- a/src/runtime/internal/static.ts +++ b/src/runtime/internal/static.ts @@ -20,7 +20,7 @@ import { readAsset, isPublicAssetURL, } from "#nitro-internal-virtual/public-assets"; -import type { PublicAsset } from "nitropack/types"; +import type { PublicAsset } from "nitro/types"; const METHODS = new Set(["HEAD", "GET"] as HTTPMethod[]); diff --git a/src/runtime/internal/task.ts b/src/runtime/internal/task.ts index fa1be52446..d4eda61a0c 100644 --- a/src/runtime/internal/task.ts +++ b/src/runtime/internal/task.ts @@ -8,7 +8,7 @@ import type { TaskPayload, TaskContext, TaskEvent, -} from "nitropack/types"; +} from "nitro/types"; /** @experimental */ export function defineTask(def: Task): Task { diff --git a/src/types/config.ts b/src/types/config.ts index 412987521b..a6bb7dedba 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -17,11 +17,7 @@ import type { NitroDevEventHandler, NitroEventHandler, } from "./handler"; -import type { - PresetName, - PresetNameInput, - PresetOptions, -} from "nitropack/presets"; +import type { PresetName, PresetNameInput, PresetOptions } from "nitro/presets"; import type { NitroModuleInput } from "./module"; import type { DeepPartial } from "./_utils"; import type { RollupConfig } from "./rollup"; diff --git a/src/types/h3.ts b/src/types/h3.ts index 651d025ace..1dc7dc63a7 100644 --- a/src/types/h3.ts +++ b/src/types/h3.ts @@ -2,7 +2,7 @@ import type { CaptureError, CapturedErrorContext, CacheOptions, -} from "nitropack/types"; +} from "nitro/types"; import type { NitroFetchRequest, $Fetch } from "./fetch/fetch"; export type H3EventFetch = ( diff --git a/src/types/handler.ts b/src/types/handler.ts index 6797656194..09af260825 100644 --- a/src/types/handler.ts +++ b/src/types/handler.ts @@ -1,6 +1,6 @@ import type { EventHandler, H3Error, H3Event, RouterMethod } from "h3"; import type { OperationObject } from "openapi-typescript"; -import type { PresetName } from "nitropack/presets"; +import type { PresetName } from "nitro/presets"; type MaybeArray = T | T[]; diff --git a/src/types/nitro.ts b/src/types/nitro.ts index 8877770ede..82eb508454 100644 --- a/src/types/nitro.ts +++ b/src/types/nitro.ts @@ -4,7 +4,7 @@ import type { ConsolaInstance } from "consola"; import type { Storage } from "unstorage"; import type { RouterMethod } from "h3"; import type { NitroEventHandler } from "./handler"; -import type { PresetName } from "nitropack/presets"; +import type { PresetName } from "nitro/presets"; import type { NitroConfig, NitroOptions } from "./config"; import type { NitroHooks } from "./hooks"; import type { PrerenderRoute } from "./prerender"; diff --git a/src/types/virtual/error-handler.d.ts b/src/types/virtual/error-handler.d.ts index 0c4d7715e9..f0c3a2be8a 100644 --- a/src/types/virtual/error-handler.d.ts +++ b/src/types/virtual/error-handler.d.ts @@ -1,4 +1,4 @@ -import type { NitroErrorHandler } from "nitropack/types"; +import type { NitroErrorHandler } from "nitro/types"; const errorHandler: NitroErrorHandler; diff --git a/src/types/virtual/server-handlers-meta.d.ts b/src/types/virtual/server-handlers-meta.d.ts index 1422da668e..92a0bf21c9 100644 --- a/src/types/virtual/server-handlers-meta.d.ts +++ b/src/types/virtual/server-handlers-meta.d.ts @@ -1,5 +1,5 @@ import type { OperationObject } from "openapi-typescript"; -import { NitroRouteMeta } from "nitropack/types"; +import { NitroRouteMeta } from "nitro/types"; export const handlersMeta: { route?: string; diff --git a/src/types/virtual/tasks.ts b/src/types/virtual/tasks.ts index dffef60f64..c1d965f163 100644 --- a/src/types/virtual/tasks.ts +++ b/src/types/virtual/tasks.ts @@ -1,4 +1,4 @@ -import type { Task, TaskMeta } from "nitropack/types"; +import type { Task, TaskMeta } from "nitro/types"; export const tasks: Record< string, diff --git a/test/fixture/nitro.config.ts b/test/fixture/nitro.config.ts index e6b9153de2..eb256e86ce 100644 --- a/test/fixture/nitro.config.ts +++ b/test/fixture/nitro.config.ts @@ -1,5 +1,5 @@ import { fileURLToPath } from "node:url"; -import { defineNitroConfig } from "nitropack/config"; +import { defineNitroConfig } from "nitro/config"; export default defineNitroConfig({ compressPublicAssets: true, diff --git a/test/fixture/routes/file.ts b/test/fixture/routes/file.ts index 698476fe34..6ff993021d 100644 --- a/test/fixture/routes/file.ts +++ b/test/fixture/routes/file.ts @@ -1,4 +1,4 @@ -import { useStorage } from "nitropack/runtime"; +import { useStorage } from "nitro/runtime"; export default defineEventHandler(async (event) => { const query = getQuery(event); diff --git a/test/fixture/tsconfig.json b/test/fixture/tsconfig.json index a54dd30b7c..9cf1697164 100644 --- a/test/fixture/tsconfig.json +++ b/test/fixture/tsconfig.json @@ -10,40 +10,28 @@ "paths": { // CLI "nitro/cli": ["../../src/cli"], - "nitropack/cli": ["../../src/cli"], // Config "nitro/config": ["../../src/config"], - "nitropack/config": ["../../src/config"], // Core "nitro/core": ["../../src/core"], - "nitropack/core": ["../../src/core"], // Core alias "nitro": ["../../src/core"], "nitropack": ["../../src/core"], // Runtime "nitro/runtime": ["../../src/runtime"], - "nitropack/runtime": ["../../src/runtime"], "nitro/runtime/meta": ["./runtime-meta"], - "nitropack/runtime/meta": ["./runtime-meta"], "nitro/runtime/*": ["../../src/runtime/*"], - "nitropack/runtime/*": ["../../src/runtime/*"], // Kit "nitro/kit": ["../../src/kit"], - "nitropack/kit": ["../../src/kit"], // Meta "nitro/meta": ["../../src/meta"], - "nitropack/meta": ["../../src/meta"], // Presets "nitro/presets": ["../../src/presets"], - "nitropack/presets": ["../../src/presets"], "nitro/presets/*": ["../../src/presets/*"], - "nitropack/presets/*": ["../../src/presets/*"], // Rollup "nitro/rollup": ["../../src/rollup"], - "nitropack/rollup": ["../../src/rollup"], // Types "nitro/types": ["../../src/types"], - "nitropack/types": ["../../src/types"], // Virtual files "#nitro-internal-virtual/*": ["../../src/types/virtual/*"], // Compatibility (#internal/nitro) diff --git a/test/fixture/types.ts b/test/fixture/types.ts index 1b55234df8..66462de947 100644 --- a/test/fixture/types.ts +++ b/test/fixture/types.ts @@ -1,9 +1,9 @@ import { expectTypeOf } from "expect-type"; import { describe, it } from "vitest"; import { EventHandler, EventHandlerRequest, defineEventHandler } from "h3"; -import type { $Fetch } from "nitropack/types"; -import { defineNitroConfig } from "nitropack/config"; -import type { Serialize, Simplify } from "nitropack/types"; +import type { $Fetch } from "nitro/types"; +import { defineNitroConfig } from "nitro/config"; +import type { Serialize, Simplify } from "nitro/types"; interface TestResponse { message: string; diff --git a/test/scripts/gen-fixture-types.ts b/test/scripts/gen-fixture-types.ts index 8a15fa8d66..80175cf642 100644 --- a/test/scripts/gen-fixture-types.ts +++ b/test/scripts/gen-fixture-types.ts @@ -1,6 +1,7 @@ import { fileURLToPath } from "mlly"; import { resolve } from "pathe"; -import { createNitro, scanHandlers, writeTypes } from "nitropack/core"; +import { createNitro, writeTypes } from "nitro/core"; +import { scanHandlers } from "../../src/core/scan"; const prepare = async () => { const fixtureDir = fileURLToPath(new URL("../fixture", import.meta.url).href); diff --git a/test/tests.ts b/test/tests.ts index 6297b947b2..e05e625568 100644 --- a/test/tests.ts +++ b/test/tests.ts @@ -16,8 +16,8 @@ import { copyPublicAssets, prerender, createDevServer, -} from "nitropack/core"; -import type { Nitro, NitroConfig } from "nitropack/types"; +} from "nitro/core"; +import type { Nitro, NitroConfig } from "nitro/types"; import { nodeMajorVersion, isWindows } from "std-env"; import { type DateString, formatDate } from "compatx"; diff --git a/tsconfig.json b/tsconfig.json index be9c410992..9e363de329 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,42 +17,29 @@ "paths": { // CLI "nitro/cli": ["./src/cli"], - "nitropack/cli": ["./src/cli"], // Config "nitro/config": ["./src/config"], - "nitropack/config": ["./src/config"], // Core "nitro/core": ["./src/core"], - "nitropack/core": ["./src/core"], // Core (alias) "nitro": ["./src/core"], - "nitropack": ["./src/core"], // Runtime "nitro/runtime": ["./src/runtime"], - "nitropack/runtime": ["./src/runtime"], // Runtime subpaths "nitro/runtime/*": ["./src/runtime/*"], - "nitropack/runtime/*": ["./src/runtime/*"], // Runtime meta "nitro/runtime/meta": ["./runtime-meta"], - "nitropack/runtime/meta": ["./runtime-meta"], // Kit "nitro/kit": ["./src/kit"], - "nitropack/kit": ["./src/kit"], // Meta "nitro/meta": ["./src/meta"], - "nitropack/meta": ["./src/meta"], // Presets "nitro/presets": ["./src/presets"], - "nitropack/presets": ["./src/presets"], "nitro/presets/*": ["./src/presets/*"], - "nitropack/presets/*": ["./src/presets/*"], // Rollup "nitro/rollup": ["./src/rollup"], - "nitropack/rollup": ["./src/rollup"], // Types "nitro/types": ["./src/types"], - "nitropack/types": ["./src/types"], // Virtual files "#nitro-internal-virtual/*": ["./src/types/virtual/*"], // Compatibility (#internal/nitro) From c453130b11fb3a7221e28a9a19cf1236db801ca4 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 17:01:17 +0200 Subject: [PATCH 04/32] chore: publish nightly with v3 tag --- scripts/release-nightly.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/release-nightly.sh b/scripts/release-nightly.sh index 84927d8774..38eb8da61a 100755 --- a/scripts/release-nightly.sh +++ b/scripts/release-nightly.sh @@ -31,8 +31,8 @@ fi # Release packages echo "Publishing main package..." -npm publish --access public --tolerate-republish +npm publish --access public --tolerate-republish --tag v3 echo "Publishing mirror package..." cd .mirror -npm publish --access public --tolerate-republish +npm publish --access public --tolerate-republish --tag v3 From 646d2f227ca1db027d104397f6b9f60286256929 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 17:04:23 +0200 Subject: [PATCH 05/32] chore: bump nightly with 3.0.0-beta --- scripts/release-nightly.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release-nightly.sh b/scripts/release-nightly.sh index 38eb8da61a..4d06005906 100755 --- a/scripts/release-nightly.sh +++ b/scripts/release-nightly.sh @@ -8,7 +8,7 @@ set -xe git restore -s@ -SW -- . # Bump according to changelog -pnpm changelogen --bump +pnpm changelogen --bump -r 3.0.0-beta # Bump versions to nightly pnpm jiti ./scripts/bump-nightly From d12305b7c9e6fb1fbcc8e6a1900b556891b5763a Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 21:36:29 +0200 Subject: [PATCH 06/32] refactor!: remove `runtime/*` subpath export --- package.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/package.json b/package.json index 11a3d66f34..d11c0eacff 100644 --- a/package.json +++ b/package.json @@ -34,10 +34,6 @@ "types": "./presets.d.ts", "import": "./dist/presets/index.mjs" }, - "./presets/*": { - "types": "./dist/presets/*.d.ts", - "import": "./dist/presets/*.mjs" - }, "./rollup": { "types": "./rollup.d.ts", "import": "./dist/rollup/index.mjs" @@ -50,14 +46,6 @@ "types": "./runtime-meta.d.ts", "import": "./runtime-meta.mjs" }, - "./runtime/*": { - "types": "./dist/runtime/*.d.ts", - "import": "./dist/runtime/*.mjs" - }, - "./dist/runtime/*": { - "types": "./dist/runtime/*.d.ts", - "import": "./dist/runtime/*.mjs" - }, "./types": { "types": "./types.d.ts", "import": "./dist/types/index.mjs" From 5d54ed1f661a528ca1983cc88543fb2963ed8e1f Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 21:38:34 +0200 Subject: [PATCH 07/32] refactor!: remove `legacy-externals` plugin --- src/rollup/config.ts | 6 +- src/rollup/plugins/externals-legacy.ts | 355 ------------------------- src/types/config.ts | 1 - 3 files changed, 1 insertion(+), 361 deletions(-) delete mode 100644 src/rollup/plugins/externals-legacy.ts diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 0c411ad96f..89f40d5070 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -28,7 +28,6 @@ import { replace } from "./plugins/replace"; import { virtual } from "./plugins/virtual"; import { dynamicRequire } from "./plugins/dynamic-require"; import { externals } from "./plugins/externals"; -import { externals as legacyExternals } from "./plugins/externals-legacy"; import { timing } from "./plugins/timing"; import { publicAssets } from "./plugins/public-assets"; import { serverAssets } from "./plugins/server-assets"; @@ -427,11 +426,8 @@ export const plugins = [ }, }); } else { - const externalsPlugin = nitro.options.experimental.legacyExternals - ? legacyExternals - : externals; rollupConfig.plugins.push( - externalsPlugin( + externals( defu(nitro.options.externals, { outDir: nitro.options.output.serverDir, moduleDirectories: nitro.options.nodeModulesDirs, diff --git a/src/rollup/plugins/externals-legacy.ts b/src/rollup/plugins/externals-legacy.ts deleted file mode 100644 index e53978ac74..0000000000 --- a/src/rollup/plugins/externals-legacy.ts +++ /dev/null @@ -1,355 +0,0 @@ -import { existsSync, promises as fsp } from "node:fs"; -import { resolve, dirname, normalize, join, isAbsolute } from "pathe"; -import { consola } from "consola"; -import { nodeFileTrace, NodeFileTraceOptions } from "@vercel/nft"; -import type { Plugin } from "rollup"; -import { resolvePath, isValidNodeImport, normalizeid } from "mlly"; -import semver from "semver"; -import { isDirectory } from "nitro/kit"; -import { normalizeMatcher } from "./externals"; - -interface NodeExternalsOptions { - inline?: Array< - | string - | RegExp - | ((id: string, importer?: string) => Promise | boolean) - >; - external?: Array< - | string - | RegExp - | ((id: string, importer?: string) => Promise | boolean) - >; - outDir?: string; - trace?: boolean; - traceOptions?: NodeFileTraceOptions; - moduleDirectories?: string[]; - exportConditions?: string[]; - traceInclude?: string[]; -} - -export function externals(opts: NodeExternalsOptions): Plugin { - const trackedExternals = new Set(); - - const _resolveCache = new Map(); - const _resolve = async (id: string) => { - let resolved = _resolveCache.get(id); - if (resolved) { - return resolved; - } - resolved = await resolvePath(id, { - conditions: opts.exportConditions, - url: opts.moduleDirectories, - }); - _resolveCache.set(id, resolved); - return resolved; - }; - - // Normalize options - const inlineMatchers = (opts.inline || []).map((p) => normalizeMatcher(p)); - const externalMatchers = (opts.external || []).map((p) => - normalizeMatcher(p) - ); - - return { - name: "node-externals", - async resolveId(originalId, importer, options) { - // Skip internals - if ( - !originalId || - originalId.startsWith("\u0000") || - originalId.includes("?") || - originalId.startsWith("#") - ) { - return null; - } - - // Skip relative paths - if (originalId.startsWith(".")) { - return null; - } - - // Normalize path (windows) - const id = normalize(originalId); - - // Check for explicit inlines - for (const matcher of inlineMatchers) { - if (matcher(id, importer)) { - return null; - } - } - - // Check for explicit externals - for (const matcher of externalMatchers) { - if (matcher(id, importer)) { - return { id, external: true }; - } - } - - // Resolve id using rollup resolver - const resolved = (await this.resolve(originalId, importer, options)) || { - id, - }; - - // Try resolving with mlly as fallback - if ( - !isAbsolute(resolved.id) || - !existsSync(resolved.id) || - (await isDirectory(resolved.id)) - ) { - resolved.id = await _resolve(resolved.id).catch(() => resolved.id); - } - - // Inline invalid node imports - if (!(await isValidNodeImport(resolved.id).catch(() => false))) { - return null; - } - - // Externalize with full path if trace is disabled - if (opts.trace === false) { - return { - ...resolved, - id: isAbsolute(resolved.id) ? normalizeid(resolved.id) : resolved.id, - external: true, - }; - } - - // -- Trace externals -- - - // Try to extract package name from path - const { pkgName, subpath } = parseNodeModulePath(resolved.id); - - // Inline if cannot detect package name - if (!pkgName) { - return null; - } - - // Normally package name should be same as originalId - // Edge cases: Subpath export and full paths - if (pkgName !== originalId) { - // Subpath export - if (!isAbsolute(originalId)) { - const fullPath = await _resolve(originalId); - trackedExternals.add(fullPath); - return { - id: originalId, - external: true, - }; - } - - // Absolute path, we are not sure about subpath to generate import statement - // Guess as main subpath export - const packageEntry = await _resolve(pkgName).catch(() => null); - if (packageEntry !== originalId) { - // Guess subpathexport - const guessedSubpath = pkgName + subpath.replace(/\.[a-z]+$/, ""); - const resolvedGuess = await _resolve(guessedSubpath).catch( - () => null - ); - if (resolvedGuess === originalId) { - trackedExternals.add(resolvedGuess); - return { - id: guessedSubpath, - external: true, - }; - } - // Inline since we cannot guess subpath - return null; - } - } - - trackedExternals.add(resolved.id); - return { - id: pkgName, - external: true, - }; - }, - async buildEnd() { - if (opts.trace === false) { - return; - } - - // Force trace paths - for (const pkgName of opts.traceInclude || []) { - const path = await this.resolve(pkgName); - if (path?.id) { - trackedExternals.add(path.id.replace(/\?.+/, "")); - } - } - - // Trace files - let tracedFiles = await nodeFileTrace( - [...trackedExternals], - opts.traceOptions - ) - .then((r) => - [...r.fileList].map((f) => resolve(opts.traceOptions!.base!, f)) - ) - .then((r) => r.filter((file) => file.includes("node_modules"))); - - // Resolve symlinks - tracedFiles = await Promise.all( - tracedFiles.map((file) => fsp.realpath(file)) - ); - - // Read package.json with cache - const packageJSONCache = new Map(); // pkgDir => contents - const getPackageJson = async (pkgDir: string) => { - if (packageJSONCache.has(pkgDir)) { - return packageJSONCache.get(pkgDir); - } - const pkgJSON = JSON.parse( - await fsp.readFile(resolve(pkgDir, "package.json"), "utf8") - ); - packageJSONCache.set(pkgDir, pkgJSON); - return pkgJSON; - }; - - // Keep track of npm packages - const tracedPackages = new Map(); // name => pkgDir - const ignoreDirs = [] as string[]; - const ignoreWarns = new Set(); - for (const file of tracedFiles) { - const { baseDir, pkgName } = parseNodeModulePath(file); - if (!pkgName) { - continue; - } - let pkgDir = resolve(baseDir, pkgName); - - // Check for duplicate versions - const existingPkgDir = tracedPackages.get(pkgName); - if (existingPkgDir && existingPkgDir !== pkgDir) { - const v1 = await getPackageJson(existingPkgDir).then( - (r) => r.version - ); - const v2 = await getPackageJson(pkgDir).then((r) => r.version); - const isNewer = semver.gt(v2, v1); - - // Warn about major version differences - const getMajor = (v: string) => v.split(".").find((s) => s !== "0"); - if (getMajor(v1) !== getMajor(v2)) { - const warn = - `Multiple major versions of package \`${pkgName}\` are being externalized. Picking latest version:\n\n` + - [ - ` ${isNewer ? "-" : "+"} ` + existingPkgDir + "@" + v1, - ` ${isNewer ? "+" : "-"} ` + pkgDir + "@" + v2, - ].join("\n"); - if (!ignoreWarns.has(warn)) { - consola.warn(warn); - ignoreWarns.add(warn); - } - } - - const [newerDir, olderDir] = isNewer - ? [pkgDir, existingPkgDir] - : [existingPkgDir, pkgDir]; - // Try to map traced files from one package to another for minor/patch versions - if (getMajor(v1) === getMajor(v2)) { - tracedFiles = tracedFiles.map((f) => - f.startsWith(olderDir + "/") ? f.replace(olderDir, newerDir) : f - ); - } - // Exclude older version files - ignoreDirs.push(olderDir + "/"); - pkgDir = newerDir; // Update for tracedPackages - } - - // Add to traced packages - tracedPackages.set(pkgName, pkgDir); - } - - // Filter out files from ignored packages and dedup - tracedFiles = tracedFiles.filter( - (f) => !ignoreDirs.some((d) => f.startsWith(d)) - ); - tracedFiles = [...new Set(tracedFiles)]; - - // Ensure all package.json files are traced - for (const pkgDir of tracedPackages.values()) { - const pkgJSON = join(pkgDir, "package.json"); - if (!tracedFiles.includes(pkgJSON)) { - tracedFiles.push(pkgJSON); - } - } - - const writeFile = async (file: string) => { - if (!(await isFile(file))) { - return; - } - const src = resolve(opts.traceOptions!.base!, file); - const { pkgName, subpath } = parseNodeModulePath(file); - const dst = resolve(opts.outDir!, `node_modules/${pkgName! + subpath}`); - await fsp.mkdir(dirname(dst), { recursive: true }); - try { - await fsp.copyFile(src, dst); - } catch { - consola.warn(`Could not resolve \`${src}\`. Skipping.`); - } - }; - - // Write traced files - await Promise.all( - tracedFiles.map((file) => retry(() => writeFile(file), 3)) - ); - - // Write an informative package.json - await fsp.writeFile( - resolve(opts.outDir!, "package.json"), - JSON.stringify( - { - name: "nitro-output", - version: "0.0.0", - private: true, - bundledDependencies: [...tracedPackages.keys()].sort(), - }, - null, - 2 - ), - "utf8" - ); - }, - }; -} - -function parseNodeModulePath(path: string) { - if (!path) { - return {}; - } - const match = /^(.+\/node_modules\/)([^/@]+|@[^/]+\/[^/]+)(\/?.*?)?$/.exec( - normalize(path) - ); - if (!match) { - return {}; - } - const [, baseDir, pkgName, subpath] = match; - return { - baseDir, - pkgName, - subpath, - }; -} - -async function isFile(file: string) { - try { - const stat = await fsp.stat(file); - return stat.isFile(); - } catch (error: any) { - if (error.code === "ENOENT") { - return false; - } - throw error; - } -} - -async function retry(fn: () => Promise, retries: number) { - let retry = 0; - let lastError: any; - while (retry++ < retries) { - try { - return await fn(); - } catch (error) { - lastError = error; - await new Promise((resolve) => setTimeout(resolve, 2)); - } - } - throw lastError; -} diff --git a/src/types/config.ts b/src/types/config.ts index a6bb7dedba..454712910d 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -95,7 +95,6 @@ export interface NitroOptions extends PresetOptions { }; }; experimental: { - legacyExternals?: boolean; openAPI?: boolean; /** * See https://github.com/microsoft/TypeScript/pull/51669 From f094c66340fe5d8a24ac7e39318b52d9f55f36c9 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 21:46:53 +0200 Subject: [PATCH 08/32] refactor: remove types for`nitro/runtime/*` subpath exports --- src/core/build/types.ts | 6 ------ test/fixture/tsconfig.json | 6 +----- tsconfig.json | 2 -- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/core/build/types.ts b/src/core/build/types.ts index bc748a2876..02e1f88b2a 100644 --- a/src/core/build/types.ts +++ b/src/core/build/types.ts @@ -256,12 +256,6 @@ declare module "nitro/types" { "#internal/nitro": [ relativeWithDot(tsconfigDir, join(runtimeDir, "index")), ], - "nitro/runtime/*": [ - relativeWithDot(tsconfigDir, join(runtimeDir, "*")), - ], - "#internal/nitro/*": [ - relativeWithDot(tsconfigDir, join(runtimeDir, "*")), - ], } : {}), }, diff --git a/test/fixture/tsconfig.json b/test/fixture/tsconfig.json index 9cf1697164..7b4c344897 100644 --- a/test/fixture/tsconfig.json +++ b/test/fixture/tsconfig.json @@ -20,7 +20,6 @@ // Runtime "nitro/runtime": ["../../src/runtime"], "nitro/runtime/meta": ["./runtime-meta"], - "nitro/runtime/*": ["../../src/runtime/*"], // Kit "nitro/kit": ["../../src/kit"], // Meta @@ -33,10 +32,7 @@ // Types "nitro/types": ["../../src/types"], // Virtual files - "#nitro-internal-virtual/*": ["../../src/types/virtual/*"], - // Compatibility (#internal/nitro) - "#internal/nitro": ["../../src/runtime/_compat"], - "#internal/nitro/*": ["../../src/runtime/_compat/*"] + "#nitro-internal-virtual/*": ["../../src/types/virtual/*"] } } } diff --git a/tsconfig.json b/tsconfig.json index 9e363de329..c0c37afcef 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,8 +25,6 @@ "nitro": ["./src/core"], // Runtime "nitro/runtime": ["./src/runtime"], - // Runtime subpaths - "nitro/runtime/*": ["./src/runtime/*"], // Runtime meta "nitro/runtime/meta": ["./runtime-meta"], // Kit From 25df63e29867c0d467543444051dd9679ea31692 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:13:45 +0200 Subject: [PATCH 09/32] chore: lint with biome --- biome.json | 29 ++++++++++- build.config.ts | 6 +-- scripts/bump-nightly.ts | 2 +- scripts/gen-mirror.ts | 8 +-- scripts/gen-presets.ts | 10 ++-- src/cli/commands/build.ts | 10 ++-- src/cli/commands/dev.ts | 6 +-- src/cli/commands/prepare.ts | 2 +- src/cli/commands/task/list.ts | 2 +- src/cli/commands/task/run.ts | 4 +- src/core/build/assets.ts | 4 +- src/core/build/dev.ts | 12 ++--- src/core/build/prod.ts | 14 ++--- src/core/build/types.ts | 14 ++--- src/core/config/defaults.ts | 4 +- src/core/config/loader.ts | 16 +++--- src/core/config/resolvers/assets.ts | 4 +- src/core/config/resolvers/compatibility.ts | 8 +-- .../config/resolvers/export-conditions.ts | 4 +- src/core/config/resolvers/imports.ts | 2 +- src/core/config/resolvers/paths.ts | 8 +-- src/core/config/resolvers/runtime-config.ts | 2 +- src/core/config/update.ts | 2 +- src/core/dev-server/error.ts | 8 +-- src/core/dev-server/server.ts | 34 ++++++------ src/core/nitro.ts | 14 ++--- src/core/prerender/prerender.ts | 12 ++--- src/core/prerender/utils.ts | 2 +- src/core/scan.ts | 4 +- src/core/task.ts | 8 +-- src/core/utils/compress.ts | 6 +-- src/core/utils/fs-tree.ts | 6 +-- src/core/utils/nitro.ts | 2 +- src/core/utils/storage.ts | 2 +- src/kit/fs.ts | 2 +- src/kit/module.ts | 2 +- src/kit/path.ts | 6 +-- src/kit/preset.ts | 2 +- src/presets/_nitro/runtime/nitro-dev.ts | 21 ++++---- src/presets/_nitro/service-worker.ts | 4 +- src/presets/_resolve.ts | 10 ++-- src/presets/_static/preset.ts | 2 +- src/presets/_types.gen.ts | 12 ++--- src/presets/aws-amplify/utils.ts | 4 +- .../runtime/aws-lambda-streaming.ts | 4 +- src/presets/aws-lambda/runtime/aws-lambda.ts | 4 +- src/presets/azure/runtime/azure-swa.ts | 2 +- src/presets/azure/utils.ts | 4 +- src/presets/cloudflare/preset.ts | 4 +- .../cloudflare/runtime/cloudflare-module.ts | 8 +-- .../cloudflare/runtime/cloudflare-pages.ts | 4 +- .../cloudflare/runtime/cloudflare-worker.ts | 6 +-- src/presets/cloudflare/types.ts | 2 +- src/presets/cloudflare/utils.ts | 12 ++--- src/presets/deno/preset.ts | 2 +- src/presets/deno/runtime/deno-deploy.ts | 2 +- src/presets/deno/runtime/deno-server.ts | 4 +- src/presets/edgio/preset.ts | 4 +- src/presets/firebase/preset.ts | 2 +- src/presets/firebase/types.ts | 2 +- src/presets/firebase/utils.ts | 4 +- src/presets/iis/utils.ts | 10 ++-- src/presets/netlify/legacy/preset.ts | 2 +- .../netlify/legacy/runtime/netlify-lambda.ts | 4 +- src/presets/netlify/legacy/runtime/netlify.ts | 2 +- src/presets/netlify/legacy/utils.ts | 4 +- src/presets/netlify/preset.ts | 4 +- src/presets/netlify/utils.ts | 2 +- src/presets/node/runtime/cluster.ts | 2 +- src/presets/node/runtime/node-listener.ts | 2 +- src/presets/node/runtime/node-server.ts | 8 +-- src/presets/vercel/runtime/vercel.ts | 2 +- src/presets/vercel/utils.ts | 6 +-- src/presets/winterjs/runtime/winterjs.ts | 4 +- src/presets/zeabur/preset.ts | 2 +- src/presets/zeabur/runtime/zeabur.ts | 2 +- src/rollup/config.ts | 52 +++++++++---------- src/rollup/plugins/database.ts | 2 +- src/rollup/plugins/dynamic-require.ts | 4 +- src/rollup/plugins/esbuild.ts | 6 +-- src/rollup/plugins/externals.ts | 14 ++--- src/rollup/plugins/handlers-meta.ts | 6 +-- src/rollup/plugins/handlers.ts | 2 +- src/rollup/plugins/import-meta.ts | 2 +- src/rollup/plugins/public-assets.ts | 10 ++-- src/rollup/plugins/raw.ts | 15 +++--- src/rollup/plugins/server-assets.ts | 6 +-- src/rollup/plugins/sourcemap-min.ts | 2 +- src/rollup/plugins/storage.ts | 2 +- src/rollup/plugins/virtual.ts | 4 +- src/runtime/internal/app.ts | 32 ++++++------ src/runtime/internal/cache.ts | 22 ++++---- src/runtime/internal/client.ts | 2 +- src/runtime/internal/config.ts | 6 +-- src/runtime/internal/context.ts | 4 +- src/runtime/internal/error.ts | 9 ++-- src/runtime/internal/renderer.ts | 2 +- src/runtime/internal/route-rules.ts | 10 ++-- src/runtime/internal/routes/openapi.ts | 4 +- src/runtime/internal/routes/scalar.ts | 2 +- src/runtime/internal/shutdown.ts | 2 +- src/runtime/internal/static.ts | 10 ++-- src/runtime/internal/task.ts | 10 ++-- src/runtime/internal/utils.ts | 11 ++-- src/types/config.ts | 42 +++++++-------- src/types/dev.ts | 8 +-- src/types/fetch/fetch.ts | 4 +- src/types/global.ts | 2 +- src/types/h3.ts | 6 +-- src/types/handler.ts | 2 +- src/types/hooks.ts | 2 +- src/types/nitro.ts | 8 +-- src/types/preset.ts | 2 +- src/types/rollup.ts | 4 +- src/types/route-rules.ts | 2 +- src/types/runtime/nitro.ts | 2 +- test/fixture/types.ts | 10 ++-- test/presets/aws-lambda.test.ts | 4 +- test/presets/azure.test.ts | 6 +-- test/presets/bun.test.ts | 4 +- test/presets/cloudflare-module.test.ts | 4 +- test/presets/cloudflare-pages.test.ts | 4 +- test/presets/cloudflare-worker.test.ts | 2 +- test/presets/deno-server.test.ts | 4 +- test/presets/netlify-legacy.test.ts | 6 +-- test/presets/netlify.test.ts | 4 +- test/presets/nitro-dev.test.ts | 4 +- test/presets/node.test.ts | 4 +- test/presets/static.test.ts | 2 +- test/presets/vercel-edge.test.ts | 2 +- test/presets/vercel.test.ts | 2 +- test/presets/winterjs.test.ts | 4 +- test/scripts/gen-fixture-types.ts | 2 +- test/tests.ts | 26 +++++----- test/unit/azure.utils.test.ts | 2 +- test/unit/externals.test.ts | 2 +- test/unit/utils.env.test.ts | 2 +- 137 files changed, 463 insertions(+), 436 deletions(-) diff --git a/biome.json b/biome.json index 5df67f43a2..76b29540c8 100644 --- a/biome.json +++ b/biome.json @@ -5,10 +5,35 @@ "ignore": ["**/*.gen.ts", "./package.json"] }, "linter": { - "enabled": false + "enabled": true, + "rules": { + "suspicious": { + "noExplicitAny": "off", + "noImplicitAnyLet": "off", + "noAssignInExpressions": "off", + "noConfusingVoidType": "off", + "noEmptyInterface": "off" + }, + "style": { + "noNonNullAssertion": "off", + "noArguments": "off", + "useTemplate": "off", + "noUnusedTemplateLiteral": "off", + "noParameterAssign": "off", + "useShorthandFunctionType": "off" + }, + "complexity": { + "noBannedTypes": "off", + "useArrowFunction": "off", + "noUselessEmptyExport": "off" + }, + "performance": { + "noDelete": "off" + } + } }, "organizeImports": { - "enabled": false + "enabled": true }, "javascript": { "formatter": { diff --git a/build.config.ts b/build.config.ts index f644c5abea..6e0f4ccbdf 100644 --- a/build.config.ts +++ b/build.config.ts @@ -1,8 +1,8 @@ -import { defineBuildConfig } from "unbuild"; -import { resolve } from "pathe"; +import { writeFile } from "node:fs/promises"; import { fileURLToPath } from "node:url"; +import { resolve } from "pathe"; import { normalize } from "pathe"; -import { writeFile } from "node:fs/promises"; +import { defineBuildConfig } from "unbuild"; const srcDir = fileURLToPath(new URL("src", import.meta.url)); diff --git a/scripts/bump-nightly.ts b/scripts/bump-nightly.ts index fa77357f1b..7e7be26a3d 100755 --- a/scripts/bump-nightly.ts +++ b/scripts/bump-nightly.ts @@ -1,7 +1,7 @@ import { promises as fsp } from "node:fs"; import { execaCommand } from "execa"; -import { resolve } from "pathe"; import { globby } from "globby"; +import { resolve } from "pathe"; const nightlyPackages = { h3: "h3-nightly", diff --git a/scripts/gen-mirror.ts b/scripts/gen-mirror.ts index 49e105a3b3..50c1081852 100644 --- a/scripts/gen-mirror.ts +++ b/scripts/gen-mirror.ts @@ -1,9 +1,9 @@ -import { subpaths } from "../build.config"; +import { cp, mkdir, rm, writeFile } from "node:fs/promises"; +import { e } from "crossws/dist/shared/crossws.381454fe"; import { fileURLToPath } from "mlly"; -import { PackageJson, readPackageJSON } from "pkg-types"; -import { writeFile, mkdir, rm, cp } from "node:fs/promises"; import { join } from "pathe"; -import { e } from "crossws/dist/shared/crossws.381454fe"; +import { type PackageJson, readPackageJSON } from "pkg-types"; +import { subpaths } from "../build.config"; const copyPkgFields = [ "description", diff --git a/scripts/gen-presets.ts b/scripts/gen-presets.ts index 412c4cc6cd..de6cedf617 100644 --- a/scripts/gen-presets.ts +++ b/scripts/gen-presets.ts @@ -1,11 +1,11 @@ -import createJITI from "jiti"; -import { consola } from "consola"; -import { kebabCase, camelCase, pascalCase, snakeCase } from "scule"; -import { readdirSync, existsSync, writeFileSync, readFileSync } from "node:fs"; +import { existsSync, readFileSync, readdirSync, writeFileSync } from "node:fs"; import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; -import type { NitroPreset, NitroPresetMeta } from "nitro/types"; +import { consola } from "consola"; +import createJITI from "jiti"; import { findTypeExports } from "mlly"; +import type { NitroPreset, NitroPresetMeta } from "nitro/types"; +import { camelCase, kebabCase, pascalCase, snakeCase } from "scule"; import { subpaths } from "../build.config"; const autoGenHeader = /* ts */ `// Auto-generated using gen-presets script\n`; diff --git a/src/cli/commands/build.ts b/src/cli/commands/build.ts index 50ec214d37..4a299e8135 100644 --- a/src/cli/commands/build.ts +++ b/src/cli/commands/build.ts @@ -1,14 +1,14 @@ import { defineCommand } from "citty"; -import { resolve } from "pathe"; +import type { DateString } from "compatx"; import { - createNitro, - prerender, build, - prepare, copyPublicAssets, + createNitro, + prepare, + prerender, } from "nitro/core"; +import { resolve } from "pathe"; import { commonArgs } from "../common"; -import type { DateString } from "compatx"; export default defineCommand({ meta: { diff --git a/src/cli/commands/dev.ts b/src/cli/commands/dev.ts index 2ff5d68d5e..a0e3595222 100644 --- a/src/cli/commands/dev.ts +++ b/src/cli/commands/dev.ts @@ -1,10 +1,10 @@ import { defineCommand } from "citty"; -import { resolve } from "pathe"; import { consola } from "consola"; import { getArgs, parseArgs } from "listhen/cli"; -import { createNitro, build, prepare, createDevServer } from "nitro/core"; -import { commonArgs } from "../common"; +import { build, createDevServer, createNitro, prepare } from "nitro/core"; import type { Nitro } from "nitro/types"; +import { resolve } from "pathe"; +import { commonArgs } from "../common"; const hmrKeyRe = /^runtimeConfig\.|routeRules\./; diff --git a/src/cli/commands/prepare.ts b/src/cli/commands/prepare.ts index 529759115e..985e4d4922 100644 --- a/src/cli/commands/prepare.ts +++ b/src/cli/commands/prepare.ts @@ -1,6 +1,6 @@ import { defineCommand } from "citty"; -import { resolve } from "pathe"; import { createNitro, writeTypes } from "nitro/core"; +import { resolve } from "pathe"; import { commonArgs } from "../common"; export default defineCommand({ diff --git a/src/cli/commands/task/list.ts b/src/cli/commands/task/list.ts index 1e9177c463..4e2e0d134b 100644 --- a/src/cli/commands/task/list.ts +++ b/src/cli/commands/task/list.ts @@ -1,7 +1,7 @@ import { defineCommand } from "citty"; -import { resolve } from "pathe"; import { consola } from "consola"; import { listTasks } from "nitro/core"; +import { resolve } from "pathe"; export default defineCommand({ meta: { diff --git a/src/cli/commands/task/run.ts b/src/cli/commands/task/run.ts index 2d1bbcafcd..afb9770405 100644 --- a/src/cli/commands/task/run.ts +++ b/src/cli/commands/task/run.ts @@ -1,8 +1,8 @@ import { defineCommand } from "citty"; -import { resolve } from "pathe"; -import destr from "destr"; import { consola } from "consola"; +import destr from "destr"; import { runTask } from "nitro/core"; +import { resolve } from "pathe"; export default defineCommand({ meta: { diff --git a/src/core/build/assets.ts b/src/core/build/assets.ts index 44f83a7c91..8ca98aaeb8 100644 --- a/src/core/build/assets.ts +++ b/src/core/build/assets.ts @@ -1,8 +1,8 @@ import { existsSync, promises as fsp } from "node:fs"; -import { relative, resolve, join } from "pathe"; import { globby } from "globby"; -import { prettyPath, isDirectory } from "nitro/kit"; +import { isDirectory, prettyPath } from "nitro/kit"; import type { Nitro } from "nitro/types"; +import { join, relative, resolve } from "pathe"; import { compressPublicAssets } from "../utils/compress"; const NEGATION_RE = /^(!?)(.*)$/; diff --git a/src/core/build/dev.ts b/src/core/build/dev.ts index d4c4ae20a9..f5bf3586ef 100644 --- a/src/core/build/dev.ts +++ b/src/core/build/dev.ts @@ -1,13 +1,13 @@ -import { join } from "pathe"; -import * as rollup from "rollup"; import { watch } from "chokidar"; +import defu from "defu"; +import type { Nitro, RollupConfig } from "nitro/types"; +import { join } from "pathe"; import { debounce } from "perfect-debounce"; +import * as rollup from "rollup"; import { GLOB_SCAN_PATTERN, scanHandlers } from "../scan"; -import type { Nitro, RollupConfig } from "nitro/types"; -import { writeTypes } from "./types"; -import defu from "defu"; -import { formatRollupError } from "./error"; import { nitroServerName } from "../utils/nitro"; +import { formatRollupError } from "./error"; +import { writeTypes } from "./types"; export async function watchDev(nitro: Nitro, rollupConfig: RollupConfig) { let rollupWatcher: rollup.RollupWatcher; diff --git a/src/core/build/prod.ts b/src/core/build/prod.ts index 0dd63be85a..6c46691b19 100644 --- a/src/core/build/prod.ts +++ b/src/core/build/prod.ts @@ -1,16 +1,16 @@ import { promises as fsp } from "node:fs"; -import { relative, resolve, join, dirname } from "pathe"; -import * as rollup from "rollup"; -import { generateFSTree } from "../utils/fs-tree"; +import { formatCompatibilityDate } from "compatx"; import { writeFile } from "nitro/kit"; -import { scanHandlers } from "../scan"; -import type { Nitro, NitroBuildInfo, RollupConfig } from "nitro/types"; import { version as nitroVersion } from "nitro/meta"; +import type { Nitro, NitroBuildInfo, RollupConfig } from "nitro/types"; +import { dirname, join, relative, resolve } from "pathe"; +import * as rollup from "rollup"; +import { scanHandlers } from "../scan"; +import { generateFSTree } from "../utils/fs-tree"; +import { nitroServerName } from "../utils/nitro"; import { snapshotStorage } from "../utils/storage"; import { formatRollupError } from "./error"; import { writeTypes } from "./types"; -import { nitroServerName } from "../utils/nitro"; -import { formatCompatibilityDate } from "compatx"; export async function buildProduction( nitro: Nitro, diff --git a/src/core/build/types.ts b/src/core/build/types.ts index 02e1f88b2a..95465b6f36 100644 --- a/src/core/build/types.ts +++ b/src/core/build/types.ts @@ -1,19 +1,19 @@ import { existsSync, promises as fsp } from "node:fs"; -import { resolve, join, dirname, isAbsolute } from "pathe"; -import { resolveAlias } from "pathe/utils"; import { defu } from "defu"; import { genTypeImport } from "knitwork"; -import type { TSConfig } from "pkg-types"; import { lookupNodeModuleSubpath, parseNodeModulePath, resolvePath, } from "mlly"; -import { JSValue, generateTypes, resolveSchema } from "untyped"; -import { writeFile, isDirectory, resolveNitroPath } from "nitro/kit"; -import type { Nitro, NitroTypes } from "nitro/types"; +import { isDirectory, resolveNitroPath, writeFile } from "nitro/kit"; import { runtimeDir } from "nitro/runtime/meta"; +import type { Nitro, NitroTypes } from "nitro/types"; +import { dirname, isAbsolute, join, resolve } from "pathe"; import { relative } from "pathe"; +import { resolveAlias } from "pathe/utils"; +import type { TSConfig } from "pkg-types"; +import { type JSValue, generateTypes, resolveSchema } from "untyped"; export async function writeTypes(nitro: Nitro) { const types: NitroTypes = { @@ -43,7 +43,7 @@ export async function writeTypes(nitro: Nitro) { } let autoImportedTypes: string[] = []; - let autoImportExports: string = ""; + let autoImportExports = ""; if (nitro.unimport) { await nitro.unimport.init(); diff --git a/src/core/config/defaults.ts b/src/core/config/defaults.ts index 1278e207dc..47e178e840 100644 --- a/src/core/config/defaults.ts +++ b/src/core/config/defaults.ts @@ -1,7 +1,7 @@ -import { isTest, isDebug } from "std-env"; +import { runtimeDir } from "nitro/runtime/meta"; import type { NitroConfig } from "nitro/types"; import { resolve } from "pathe"; -import { runtimeDir } from "nitro/runtime/meta"; +import { isDebug, isTest } from "std-env"; export const NitroDefaults: NitroConfig = { // General diff --git a/src/core/config/loader.ts b/src/core/config/loader.ts index a63a5d965c..59854e6113 100644 --- a/src/core/config/loader.ts +++ b/src/core/config/loader.ts @@ -1,30 +1,30 @@ import { loadConfig, watchConfig } from "c12"; +import { type CompatibilityDateSpec, resolveCompatibilityDates } from "compatx"; import { klona } from "klona/full"; -import { CompatibilityDateSpec, resolveCompatibilityDates } from "compatx"; +import type { PresetName } from "nitro/presets"; import type { LoadConfigOptions, NitroConfig, NitroOptions, NitroPresetMeta, } from "nitro/types"; -import type { PresetName } from "nitro/presets"; import { NitroDefaults } from "./defaults"; +import { resolveAssetsOptions } from "./resolvers/assets"; // Resolvers import { fallbackCompatibilityDate, resolveCompatibilityOptions, } from "./resolvers/compatibility"; -import { resolvePathOptions } from "./resolvers/paths"; -import { resolveImportsOptions } from "./resolvers/imports"; -import { resolveRouteRulesOptions } from "./resolvers/route-rules"; import { resolveDatabaseOptions } from "./resolvers/database"; -import { resolveFetchOptions } from "./resolvers/fetch"; import { resolveExportConditionsOptions } from "./resolvers/export-conditions"; -import { resolveRuntimeConfigOptions } from "./resolvers/runtime-config"; +import { resolveFetchOptions } from "./resolvers/fetch"; +import { resolveImportsOptions } from "./resolvers/imports"; import { resolveOpenAPIOptions } from "./resolvers/open-api"; -import { resolveAssetsOptions } from "./resolvers/assets"; +import { resolvePathOptions } from "./resolvers/paths"; +import { resolveRouteRulesOptions } from "./resolvers/route-rules"; +import { resolveRuntimeConfigOptions } from "./resolvers/runtime-config"; import { resolveURLOptions } from "./resolvers/url"; const configResolvers = [ diff --git a/src/core/config/resolvers/assets.ts b/src/core/config/resolvers/assets.ts index 31911db724..43a9c440d3 100644 --- a/src/core/config/resolvers/assets.ts +++ b/src/core/config/resolvers/assets.ts @@ -1,8 +1,8 @@ -import { resolve } from "pathe"; import { existsSync } from "node:fs"; -import { withLeadingSlash, withoutTrailingSlash } from "ufo"; import { defu } from "defu"; import type { NitroOptions } from "nitro/types"; +import { resolve } from "pathe"; +import { withLeadingSlash, withoutTrailingSlash } from "ufo"; export async function resolveAssetsOptions(options: NitroOptions) { // Public Assets diff --git a/src/core/config/resolvers/compatibility.ts b/src/core/config/resolvers/compatibility.ts index b62f2ed587..d997bdb6ab 100644 --- a/src/core/config/resolvers/compatibility.ts +++ b/src/core/config/resolvers/compatibility.ts @@ -1,7 +1,7 @@ import { - resolveCompatibilityDatesFromEnv, + type DateString, formatDate, - DateString, + resolveCompatibilityDatesFromEnv, } from "compatx"; import _consola from "consola"; import { colorize } from "consola/utils"; @@ -26,8 +26,8 @@ export async function resolveCompatibilityOptions(options: NitroOptions) { } } -let _fallbackInfoShown: boolean = false; -let _promptedUserToUpdate: boolean = false; +let _fallbackInfoShown = false; +let _promptedUserToUpdate = false; async function _resolveDefault(options: NitroOptions): Promise { const _todayDate = formatDate(new Date()); diff --git a/src/core/config/resolvers/export-conditions.ts b/src/core/config/resolvers/export-conditions.ts index 056b0a40ae..6a6a63e804 100644 --- a/src/core/config/resolvers/export-conditions.ts +++ b/src/core/config/resolvers/export-conditions.ts @@ -2,13 +2,13 @@ import type { NitroOptions } from "nitro/types"; export async function resolveExportConditionsOptions(options: NitroOptions) { options.exportConditions = _resolveExportConditions( - options.exportConditions, + options.exportConditions || [], { dev: options.dev, node: options.node, wasm: options.experimental.wasm } ); } function _resolveExportConditions( - conditions: string[] = [], + conditions: string[], opts: { dev: boolean; node: boolean; wasm?: boolean } ) { const resolvedConditions: string[] = []; diff --git a/src/core/config/resolvers/imports.ts b/src/core/config/resolvers/imports.ts index 9c8e7fe249..c2cc5159ef 100644 --- a/src/core/config/resolvers/imports.ts +++ b/src/core/config/resolvers/imports.ts @@ -1,6 +1,6 @@ -import type { NitroOptions } from "nitro/types"; import escapeRE from "escape-string-regexp"; import { resolveModuleExportNames } from "mlly"; +import type { NitroOptions } from "nitro/types"; import { join } from "pathe"; import type { Preset } from "unimport"; diff --git a/src/core/config/resolvers/paths.ts b/src/core/config/resolvers/paths.ts index e53707cd45..9154a1829f 100644 --- a/src/core/config/resolvers/paths.ts +++ b/src/core/config/resolvers/paths.ts @@ -1,10 +1,10 @@ -import { findWorkspaceDir } from "pkg-types"; +import { existsSync } from "node:fs"; import { resolveNitroPath } from "nitro/kit"; +import { pkgDir } from "nitro/runtime/meta"; import type { NitroOptions } from "nitro/types"; -import { resolve, join } from "pathe"; +import { join, resolve } from "pathe"; +import { findWorkspaceDir } from "pkg-types"; import { NitroDefaults } from "../defaults"; -import { pkgDir } from "nitro/runtime/meta"; -import { existsSync } from "node:fs"; export async function resolvePathOptions(options: NitroOptions) { options.rootDir = resolve(options.rootDir || "."); diff --git a/src/core/config/resolvers/runtime-config.ts b/src/core/config/resolvers/runtime-config.ts index 6654573322..4714f058f4 100644 --- a/src/core/config/resolvers/runtime-config.ts +++ b/src/core/config/resolvers/runtime-config.ts @@ -1,7 +1,7 @@ import defu from "defu"; import type { - NitroOptions, NitroConfig, + NitroOptions, NitroRuntimeConfig, } from "nitro/types"; diff --git a/src/core/config/update.ts b/src/core/config/update.ts index 2b4d7f05c8..38de79fa13 100644 --- a/src/core/config/update.ts +++ b/src/core/config/update.ts @@ -1,7 +1,7 @@ +import consola from "consola"; import type { Nitro, NitroDynamicConfig } from "nitro/types"; import { normalizeRouteRules } from "./resolvers/route-rules"; import { normalizeRuntimeConfig } from "./resolvers/runtime-config"; -import consola from "consola"; export async function updateNitroConfig( nitro: Nitro, diff --git a/src/core/dev-server/error.ts b/src/core/dev-server/error.ts index dbdfce8bb3..4326a8c35d 100644 --- a/src/core/dev-server/error.ts +++ b/src/core/dev-server/error.ts @@ -1,12 +1,12 @@ import { - H3Event, - setResponseHeader, - setResponseStatus, + type H3Event, getResponseStatus, getResponseStatusText, send, + setResponseHeader, + setResponseStatus, } from "h3"; -import { NitroErrorHandler } from "nitro/types"; +import type { NitroErrorHandler } from "nitro/types"; function errorHandler(error: any, event: H3Event) { setResponseHeader(event, "Content-Type", "text/html; charset=UTF-8"); diff --git a/src/core/dev-server/server.ts b/src/core/dev-server/server.ts index c29e360ac3..eb7ce302d0 100644 --- a/src/core/dev-server/server.ts +++ b/src/core/dev-server/server.ts @@ -1,35 +1,35 @@ -import { Worker } from "node:worker_threads"; -import { existsSync, accessSync, promises as fsp } from "node:fs"; +import { accessSync, existsSync, promises as fsp } from "node:fs"; import { writeFile } from "node:fs/promises"; -import { TLSSocket } from "node:tls"; -import { debounce } from "perfect-debounce"; +import type { IncomingMessage, OutgoingMessage } from "node:http"; +import type { Duplex } from "node:stream"; +import type { TLSSocket } from "node:tls"; +import { Worker } from "node:worker_threads"; +import { type FSWatcher, watch } from "chokidar"; import { + type H3Error, + type H3Event, createApp, createError, eventHandler, fromNodeMiddleware, - H3Error, - H3Event, toNodeListener, } from "h3"; -import { createProxyServer, ProxyServerOptions } from "httpxy"; -import { listen, Listener } from "listhen"; -import { servePlaceholder } from "serve-placeholder"; -import serveStatic from "serve-static"; -import { resolve } from "pathe"; -import { joinURL } from "ufo"; -import { FSWatcher, watch } from "chokidar"; +import { type ProxyServerOptions, createProxyServer } from "httpxy"; +import { type Listener, listen } from "listhen"; +import { version as nitroVersion } from "nitro/meta"; import type { Nitro, NitroBuildInfo, NitroDevServer, NitroWorker, } from "nitro/types"; -import { createVFSHandler } from "./vfs"; +import { resolve } from "pathe"; +import { debounce } from "perfect-debounce"; +import { servePlaceholder } from "serve-placeholder"; +import serveStatic from "serve-static"; +import { joinURL } from "ufo"; import defaultErrorHandler from "./error"; -import type { IncomingMessage, OutgoingMessage } from "node:http"; -import type { Duplex } from "node:stream"; -import { version as nitroVersion } from "nitro/meta"; +import { createVFSHandler } from "./vfs"; function initWorker(filename: string): Promise | undefined { if (!existsSync(filename)) { diff --git a/src/core/nitro.ts b/src/core/nitro.ts index ba7667ecbf..372680a6cd 100644 --- a/src/core/nitro.ts +++ b/src/core/nitro.ts @@ -1,18 +1,18 @@ -import { createHooks, createDebugger } from "hookable"; -import { createUnimport } from "unimport"; import { consola } from "consola"; +import { createDebugger, createHooks } from "hookable"; import type { + LoadConfigOptions, + Nitro, NitroConfig, NitroDynamicConfig, - Nitro, - LoadConfigOptions, } from "nitro/types"; +import { createUnimport } from "unimport"; import { loadOptions } from "./config/loader"; -import { createStorage } from "./utils/storage"; -import { installModules } from "./module"; import { updateNitroConfig } from "./config/update"; -import { addNitroTasksVirtualFile } from "./task"; +import { installModules } from "./module"; import { scanAndSyncOptions } from "./scan"; +import { addNitroTasksVirtualFile } from "./task"; +import { createStorage } from "./utils/storage"; export async function createNitro( config: NitroConfig = {}, diff --git a/src/core/prerender/prerender.ts b/src/core/prerender/prerender.ts index fa61305de1..b766f6e8c8 100644 --- a/src/core/prerender/prerender.ts +++ b/src/core/prerender/prerender.ts @@ -1,15 +1,15 @@ import { pathToFileURL } from "node:url"; -import { resolve, join, relative } from "pathe"; -import { joinURL, withBase, withoutBase } from "ufo"; import chalk from "chalk"; -import { createRouter as createRadixRouter, toRouteMatcher } from "radix3"; import { defu } from "defu"; import mime from "mime"; +import { writeFile } from "nitro/kit"; +import type { Nitro, NitroRouteRules, PrerenderRoute } from "nitro/types"; import type { $Fetch } from "ofetch"; -import { createNitro } from "../nitro"; +import { join, relative, resolve } from "pathe"; +import { createRouter as createRadixRouter, toRouteMatcher } from "radix3"; +import { joinURL, withBase, withoutBase } from "ufo"; import { build } from "../build/build"; -import type { Nitro, NitroRouteRules, PrerenderRoute } from "nitro/types"; -import { writeFile } from "nitro/kit"; +import { createNitro } from "../nitro"; import { compressPublicAssets } from "../utils/compress"; import { extractLinks, diff --git a/src/core/prerender/utils.ts b/src/core/prerender/utils.ts index e75d4b5404..15c10b5945 100644 --- a/src/core/prerender/utils.ts +++ b/src/core/prerender/utils.ts @@ -1,6 +1,6 @@ -import { parseURL } from "ufo"; import chalk from "chalk"; import type { PrerenderRoute } from "nitro/types"; +import { parseURL } from "ufo"; const allowedExtensions = new Set(["", ".json"]); diff --git a/src/core/scan.ts b/src/core/scan.ts index 8d5555f5c2..523176896f 100644 --- a/src/core/scan.ts +++ b/src/core/scan.ts @@ -1,7 +1,7 @@ -import { relative, join } from "pathe"; import { globby } from "globby"; -import { withBase, withLeadingSlash, withoutTrailingSlash } from "ufo"; import type { Nitro } from "nitro/types"; +import { join, relative } from "pathe"; +import { withBase, withLeadingSlash, withoutTrailingSlash } from "ufo"; export const GLOB_SCAN_PATTERN = "**/*.{js,mjs,cjs,ts,mts,cts,tsx,jsx}"; type FileInfo = { path: string; fullPath: string }; diff --git a/src/core/task.ts b/src/core/task.ts index d08e02deb2..b0c9e5c1c9 100644 --- a/src/core/task.ts +++ b/src/core/task.ts @@ -1,13 +1,13 @@ import { existsSync } from "node:fs"; import { readFile } from "node:fs/promises"; -import { resolve, normalize } from "pathe"; -import { ofetch } from "ofetch"; import type { + Nitro, NitroBuildInfo, - TaskRunnerOptions, TaskEvent, - Nitro, + TaskRunnerOptions, } from "nitro/types"; +import { ofetch } from "ofetch"; +import { normalize, resolve } from "pathe"; /** @experimental */ export async function runTask( diff --git a/src/core/utils/compress.ts b/src/core/utils/compress.ts index 729155f204..eee5e51ca5 100644 --- a/src/core/utils/compress.ts +++ b/src/core/utils/compress.ts @@ -1,10 +1,10 @@ -import zlib from "node:zlib"; -import fsp from "node:fs/promises"; import { existsSync } from "node:fs"; +import fsp from "node:fs/promises"; +import zlib from "node:zlib"; import { globby } from "globby"; -import { resolve } from "pathe"; import mime from "mime"; import type { Nitro } from "nitro/types"; +import { resolve } from "pathe"; export async function compressPublicAssets(nitro: Nitro) { const publicFiles = await globby("**", { diff --git a/src/core/utils/fs-tree.ts b/src/core/utils/fs-tree.ts index a2f3391e9d..55d24c33a7 100644 --- a/src/core/utils/fs-tree.ts +++ b/src/core/utils/fs-tree.ts @@ -1,9 +1,9 @@ import { promises as fsp } from "node:fs"; -import { resolve, dirname, relative } from "pathe"; +import chalk from "chalk"; import { globby } from "globby"; -import prettyBytes from "pretty-bytes"; import { gzipSize } from "gzip-size"; -import chalk from "chalk"; +import { dirname, relative, resolve } from "pathe"; +import prettyBytes from "pretty-bytes"; import { isTest } from "std-env"; export async function generateFSTree( diff --git a/src/core/utils/nitro.ts b/src/core/utils/nitro.ts index 2c1ac7943f..413b7adf63 100644 --- a/src/core/utils/nitro.ts +++ b/src/core/utils/nitro.ts @@ -1,5 +1,5 @@ +import type { Nitro } from "nitro/types"; import { upperFirst } from "scule"; -import { Nitro } from "nitro/types"; export function nitroServerName(nitro: Nitro) { return nitro.options.framework.name === "nitro" diff --git a/src/core/utils/storage.ts b/src/core/utils/storage.ts index d4ae635a88..55b42f6fa6 100644 --- a/src/core/utils/storage.ts +++ b/src/core/utils/storage.ts @@ -1,5 +1,5 @@ -import { createStorage as _createStorage, builtinDrivers } from "unstorage"; import type { Nitro } from "nitro/types"; +import { createStorage as _createStorage, builtinDrivers } from "unstorage"; export async function createStorage(nitro: Nitro) { const storage = _createStorage(); diff --git a/src/kit/fs.ts b/src/kit/fs.ts index 4b6c0a3b2d..7d3d50ce8a 100644 --- a/src/kit/fs.ts +++ b/src/kit/fs.ts @@ -1,6 +1,6 @@ import fsp from "node:fs/promises"; -import { dirname } from "pathe"; import { consola } from "consola"; +import { dirname } from "pathe"; import { prettyPath } from "./path"; export async function writeFile( diff --git a/src/kit/module.ts b/src/kit/module.ts index a6a8cdfa8e..76f524975c 100644 --- a/src/kit/module.ts +++ b/src/kit/module.ts @@ -1,4 +1,4 @@ -import { NitroModule } from "../types/module"; +import type { NitroModule } from "../types/module"; export function defineNitroModule(def: NitroModule): NitroModule { if (typeof def?.setup !== "function") { diff --git a/src/kit/path.ts b/src/kit/path.ts index 3a063341b1..ec5c8997b3 100644 --- a/src/kit/path.ts +++ b/src/kit/path.ts @@ -1,8 +1,8 @@ -import { relative, resolve } from "pathe"; -import { Nitro } from "nitro/types"; -import { getProperty } from "dot-prop"; import consola from "consola"; import { colorize } from "consola/utils"; +import { getProperty } from "dot-prop"; +import type { Nitro } from "nitro/types"; +import { relative, resolve } from "pathe"; export function prettyPath(p: string, highlight = true) { p = relative(process.cwd(), p); diff --git a/src/kit/preset.ts b/src/kit/preset.ts index 342e53d121..a0438bbc7e 100644 --- a/src/kit/preset.ts +++ b/src/kit/preset.ts @@ -1,5 +1,5 @@ -import type { NitroPreset, NitroPresetMeta } from "nitro/types"; import { fileURLToPath } from "node:url"; +import type { NitroPreset, NitroPresetMeta } from "nitro/types"; export function defineNitroPreset< P extends NitroPreset, diff --git a/src/presets/_nitro/runtime/nitro-dev.ts b/src/presets/_nitro/runtime/nitro-dev.ts index cb8bb21af1..a778f3b7d9 100644 --- a/src/presets/_nitro/runtime/nitro-dev.ts +++ b/src/presets/_nitro/runtime/nitro-dev.ts @@ -1,24 +1,24 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; import { runTask } from "nitro/runtime/internal/task"; import { startScheduleRunner } from "nitro/runtime/internal/task"; -import { tasks, scheduledTasks } from "#nitro-internal-virtual/tasks"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { scheduledTasks, tasks } from "#nitro-internal-virtual/tasks"; +import { mkdirSync } from "node:fs"; import { Server } from "node:http"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { mkdirSync } from "node:fs"; -import { threadId, parentPort } from "node:worker_threads"; -import { isWindows, provider } from "std-env"; +import { parentPort, threadId } from "node:worker_threads"; +import wsAdapter from "crossws/adapters/node"; import { defineEventHandler, getQuery, getRouterParam, - toNodeListener, readBody, + toNodeListener, } from "h3"; -import wsAdapter from "crossws/adapters/node"; +import { isWindows, provider } from "std-env"; const nitroApp = useNitroApp(); @@ -40,11 +40,10 @@ function getAddress() { const socketName = `worker-${process.pid}-${threadId}.sock`; if (isWindows) { return join(String.raw`\\.\pipe\nitro`, socketName); - } else { - const socketDir = join(tmpdir(), "nitro"); - mkdirSync(socketDir, { recursive: true }); - return join(socketDir, socketName); } + const socketDir = join(tmpdir(), "nitro"); + mkdirSync(socketDir, { recursive: true }); + return join(socketDir, socketName); } const listenAddress = getAddress(); diff --git a/src/presets/_nitro/service-worker.ts b/src/presets/_nitro/service-worker.ts index bdb1c02f32..086e01ff4f 100644 --- a/src/presets/_nitro/service-worker.ts +++ b/src/presets/_nitro/service-worker.ts @@ -1,8 +1,8 @@ import { existsSync, promises as fsp } from "node:fs"; -import { resolve } from "pathe"; -import { joinURL } from "ufo"; import { defineNitroPreset } from "nitro/kit"; import type { Nitro } from "nitro/types"; +import { resolve } from "pathe"; +import { joinURL } from "ufo"; const serviceWorker = defineNitroPreset( () => { diff --git a/src/presets/_resolve.ts b/src/presets/_resolve.ts index 4dc5470614..2e0b18f3a6 100644 --- a/src/presets/_resolve.ts +++ b/src/presets/_resolve.ts @@ -1,12 +1,12 @@ -import type { NitroPreset, NitroPresetMeta } from "nitro/types"; -import { kebabCase } from "scule"; -import { provider, type ProviderName } from "std-env"; -import allPresets from "./_all.gen"; import { - resolveCompatibilityDatesFromEnv, type CompatibilityDateSpec, type PlatformName, + resolveCompatibilityDatesFromEnv, } from "compatx"; +import type { NitroPreset, NitroPresetMeta } from "nitro/types"; +import { kebabCase } from "scule"; +import { type ProviderName, provider } from "std-env"; +import allPresets from "./_all.gen"; // std-env has more specific keys for providers than compatx const _stdProviderMap: Partial> = { diff --git a/src/presets/_static/preset.ts b/src/presets/_static/preset.ts index 7e919ea9d1..94bf61acae 100644 --- a/src/presets/_static/preset.ts +++ b/src/presets/_static/preset.ts @@ -1,5 +1,5 @@ -import { defineNitroPreset } from "nitro/kit"; import fsp from "node:fs/promises"; +import { defineNitroPreset } from "nitro/kit"; import { join } from "pathe"; const _static = defineNitroPreset( diff --git a/src/presets/_types.gen.ts b/src/presets/_types.gen.ts index c63dde81d4..3ee32c8a66 100644 --- a/src/presets/_types.gen.ts +++ b/src/presets/_types.gen.ts @@ -1,11 +1,11 @@ // Auto-generated using gen-presets script -import { PresetOptions as AwsAmplifyOptions } from "./aws-amplify/preset"; -import { PresetOptions as AzureOptions } from "./azure/preset"; -import { PresetOptions as CloudflareOptions } from "./cloudflare/preset"; -import { PresetOptions as FirebaseOptions } from "./firebase/preset"; -import { PresetOptions as NetlifyOptions } from "./netlify/preset"; -import { PresetOptions as VercelOptions } from "./vercel/preset"; +import type { PresetOptions as AwsAmplifyOptions } from "./aws-amplify/preset"; +import type { PresetOptions as AzureOptions } from "./azure/preset"; +import type { PresetOptions as CloudflareOptions } from "./cloudflare/preset"; +import type { PresetOptions as FirebaseOptions } from "./firebase/preset"; +import type { PresetOptions as NetlifyOptions } from "./netlify/preset"; +import type { PresetOptions as VercelOptions } from "./vercel/preset"; export interface PresetOptions { awsAmplify: AwsAmplifyOptions; diff --git a/src/presets/aws-amplify/utils.ts b/src/presets/aws-amplify/utils.ts index 2b040fca83..df8047b828 100644 --- a/src/presets/aws-amplify/utils.ts +++ b/src/presets/aws-amplify/utils.ts @@ -1,7 +1,7 @@ -import { resolve } from "node:path"; import { writeFile } from "node:fs/promises"; -import { joinURL } from "ufo"; +import { resolve } from "node:path"; import type { Nitro } from "nitro/types"; +import { joinURL } from "ufo"; import type { AmplifyDeployManifest, AmplifyRoute, diff --git a/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts b/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts index 12fb9f773d..4e9965480e 100644 --- a/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts +++ b/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts @@ -1,15 +1,15 @@ import type { APIGatewayProxyEventV2, - Context, APIGatewayProxyStructuredResultV2, + Context, } from "aws-lambda"; import "#nitro-internal-pollyfills"; -import { withQuery } from "ufo"; import { useNitroApp } from "nitro/runtime"; import { normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingHeaders, } from "nitro/runtime/internal/utils.lambda"; +import { withQuery } from "ufo"; declare global { // eslint-disable-next-line @typescript-eslint/no-namespace diff --git a/src/presets/aws-lambda/runtime/aws-lambda.ts b/src/presets/aws-lambda/runtime/aws-lambda.ts index 59845cb0f7..c9b0aa99a2 100644 --- a/src/presets/aws-lambda/runtime/aws-lambda.ts +++ b/src/presets/aws-lambda/runtime/aws-lambda.ts @@ -6,14 +6,14 @@ import type { Context, } from "aws-lambda"; import "#nitro-internal-pollyfills"; -import { withQuery } from "ufo"; import { useNitroApp } from "nitro/runtime"; +import { normalizeCookieHeader } from "nitro/runtime/internal/utils"; import { normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingBody, normalizeLambdaOutgoingHeaders, } from "nitro/runtime/internal/utils.lambda"; -import { normalizeCookieHeader } from "nitro/runtime/internal/utils"; +import { withQuery } from "ufo"; const nitroApp = useNitroApp(); diff --git a/src/presets/azure/runtime/azure-swa.ts b/src/presets/azure/runtime/azure-swa.ts index 9932121e1a..5dc99f0a6e 100644 --- a/src/presets/azure/runtime/azure-swa.ts +++ b/src/presets/azure/runtime/azure-swa.ts @@ -3,7 +3,7 @@ import { useNitroApp } from "nitro/runtime"; import { getAzureParsedCookiesFromHeaders } from "nitro/runtime/internal/utils.azure"; import { normalizeLambdaOutgoingHeaders } from "nitro/runtime/internal/utils.lambda"; -import type { HttpResponse, HttpRequest } from "@azure/functions"; +import type { HttpRequest, HttpResponse } from "@azure/functions"; import { parseURL } from "ufo"; const nitroApp = useNitroApp(); diff --git a/src/presets/azure/utils.ts b/src/presets/azure/utils.ts index f01ce015e9..d81c06a1f0 100644 --- a/src/presets/azure/utils.ts +++ b/src/presets/azure/utils.ts @@ -1,9 +1,9 @@ import { createWriteStream } from "node:fs"; +import fsp from "node:fs/promises"; import archiver from "archiver"; -import { join, resolve } from "pathe"; import { writeFile } from "nitro/kit"; import type { Nitro } from "nitro/types"; -import fsp from "node:fs/promises"; +import { join, resolve } from "pathe"; export async function writeFunctionsRoutes(nitro: Nitro) { const host = { diff --git a/src/presets/cloudflare/preset.ts b/src/presets/cloudflare/preset.ts index d9bc79237f..491c80d845 100644 --- a/src/presets/cloudflare/preset.ts +++ b/src/presets/cloudflare/preset.ts @@ -1,8 +1,8 @@ import { defineNitroPreset } from "nitro/kit"; -import type { Nitro } from "nitro/types"; -import { writeCFPagesFiles, writeCFPagesStaticFiles } from "./utils"; import { writeFile } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { resolve } from "pathe"; +import { writeCFPagesFiles, writeCFPagesStaticFiles } from "./utils"; export type { CloudflareOptions as PresetOptions } from "./types"; diff --git a/src/presets/cloudflare/runtime/cloudflare-module.ts b/src/presets/cloudflare/runtime/cloudflare-module.ts index c4fdebc8fc..d3a0e1a628 100644 --- a/src/presets/cloudflare/runtime/cloudflare-module.ts +++ b/src/presets/cloudflare/runtime/cloudflare-module.ts @@ -1,17 +1,17 @@ import "#nitro-internal-pollyfills"; -import { requestHasBody } from "nitro/runtime/internal/utils"; import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; import { runCronTasks } from "nitro/runtime/internal/task"; +import { requestHasBody } from "nitro/runtime/internal/utils"; import { getPublicAssetMeta } from "#nitro-internal-virtual/public-assets"; -import { withoutBase } from "ufo"; -import wsAdapter from "crossws/adapters/cloudflare"; -import type { ExecutionContext } from "@cloudflare/workers-types"; import { getAssetFromKV, mapRequestToAsset, } from "@cloudflare/kv-asset-handler"; +import type { ExecutionContext } from "@cloudflare/workers-types"; +import wsAdapter from "crossws/adapters/cloudflare"; +import { withoutBase } from "ufo"; import type { CloudflareEmailContext, CloudflareMessageBatch } from "../types"; diff --git a/src/presets/cloudflare/runtime/cloudflare-pages.ts b/src/presets/cloudflare/runtime/cloudflare-pages.ts index 913d59facd..e94e81e1a7 100644 --- a/src/presets/cloudflare/runtime/cloudflare-pages.ts +++ b/src/presets/cloudflare/runtime/cloudflare-pages.ts @@ -1,15 +1,15 @@ import "#nitro-internal-pollyfills"; +import { useNitroApp } from "nitro/runtime"; import { runCronTasks } from "nitro/runtime/internal/task"; import { requestHasBody } from "nitro/runtime/internal/utils"; -import { useNitroApp } from "nitro/runtime"; import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets"; -import wsAdapter from "crossws/adapters/cloudflare"; import type { Request as CFRequest, EventContext, ExecutionContext, } from "@cloudflare/workers-types"; +import wsAdapter from "crossws/adapters/cloudflare"; /** * Reference: https://developers.cloudflare.com/workers/runtime-apis/fetch-event/#parameters diff --git a/src/presets/cloudflare/runtime/cloudflare-worker.ts b/src/presets/cloudflare/runtime/cloudflare-worker.ts index 6961f4f552..3dc7c99372 100644 --- a/src/presets/cloudflare/runtime/cloudflare-worker.ts +++ b/src/presets/cloudflare/runtime/cloudflare-worker.ts @@ -1,15 +1,15 @@ import "#nitro-internal-pollyfills"; -import { requestHasBody } from "nitro/runtime/internal/utils"; import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; +import { requestHasBody } from "nitro/runtime/internal/utils"; import { getPublicAssetMeta } from "#nitro-internal-virtual/public-assets"; -import { withoutBase } from "ufo"; -import wsAdapter from "crossws/adapters/cloudflare"; import { getAssetFromKV, mapRequestToAsset, } from "@cloudflare/kv-asset-handler"; +import wsAdapter from "crossws/adapters/cloudflare"; +import { withoutBase } from "ufo"; addEventListener("fetch", (event: any) => { event.respondWith(handleEvent(event)); diff --git a/src/presets/cloudflare/types.ts b/src/presets/cloudflare/types.ts index 4a47057e29..8ec72f9de1 100644 --- a/src/presets/cloudflare/types.ts +++ b/src/presets/cloudflare/types.ts @@ -1,5 +1,5 @@ -import type { Config as WranglerConfig } from "./types.wrangler"; import type { ExecutionContext } from "@cloudflare/workers-types"; +import type { Config as WranglerConfig } from "./types.wrangler"; /** * https://developers.cloudflare.com/pages/platform/functions/routing/#functions-invocation-routes diff --git a/src/presets/cloudflare/utils.ts b/src/presets/cloudflare/utils.ts index d09c62ee43..efa311430a 100644 --- a/src/presets/cloudflare/utils.ts +++ b/src/presets/cloudflare/utils.ts @@ -1,16 +1,16 @@ import { existsSync, promises as fsp } from "node:fs"; -import { resolve, join } from "pathe"; +import { parseTOML, stringifyTOML } from "confbox"; +import defu from "defu"; +import { globby } from "globby"; +import type { Nitro } from "nitro/types"; +import { join, resolve } from "pathe"; +import { isCI } from "std-env"; import { joinURL, withLeadingSlash, withTrailingSlash, withoutLeadingSlash, } from "ufo"; -import { parseTOML, stringifyTOML } from "confbox"; -import { globby } from "globby"; -import type { Nitro } from "nitro/types"; -import defu from "defu"; -import { isCI } from "std-env"; import type { CloudflarePagesRoutes } from "./types"; export async function writeCFPagesFiles(nitro: Nitro) { diff --git a/src/presets/deno/preset.ts b/src/presets/deno/preset.ts index 6c40df87b6..051abfec67 100644 --- a/src/presets/deno/preset.ts +++ b/src/presets/deno/preset.ts @@ -1,9 +1,9 @@ import { builtinModules } from "node:module"; -import { isAbsolute, resolve } from "pathe"; import MagicString from "magic-string"; import { findStaticImports } from "mlly"; import { defineNitroPreset } from "nitro/kit"; import { writeFile } from "nitro/kit"; +import { isAbsolute, resolve } from "pathe"; // nitro/src/rollup/plugin/import-meta.ts const ImportMetaRe = /import\.meta|globalThis._importMeta_/; diff --git a/src/presets/deno/runtime/deno-deploy.ts b/src/presets/deno/runtime/deno-deploy.ts index 1da39d5128..fb07cd2690 100644 --- a/src/presets/deno/runtime/deno-deploy.ts +++ b/src/presets/deno/runtime/deno-deploy.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import wsAdapter from "crossws/adapters/deno"; import type { Deno as _Deno } from "@deno/types"; +import wsAdapter from "crossws/adapters/deno"; const nitroApp = useNitroApp(); diff --git a/src/presets/deno/runtime/deno-server.ts b/src/presets/deno/runtime/deno-server.ts index 5ef990745b..fcbb1282d5 100644 --- a/src/presets/deno/runtime/deno-server.ts +++ b/src/presets/deno/runtime/deno-server.ts @@ -3,9 +3,9 @@ import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; import { startScheduleRunner } from "nitro/runtime/internal/task"; -import destr from "destr"; -import wsAdapter from "crossws/adapters/deno"; import type { Deno as _Deno } from "@deno/types"; +import wsAdapter from "crossws/adapters/deno"; +import destr from "destr"; // TODO: Declare conflict with crossws // declare global { diff --git a/src/presets/edgio/preset.ts b/src/presets/edgio/preset.ts index f804164413..b13658a39f 100644 --- a/src/presets/edgio/preset.ts +++ b/src/presets/edgio/preset.ts @@ -1,7 +1,7 @@ import { promises as fsp } from "node:fs"; -import { resolve, dirname } from "pathe"; -import type { PackageJson } from "pkg-types"; import { defineNitroPreset } from "nitro/kit"; +import { dirname, resolve } from "pathe"; +import type { PackageJson } from "pkg-types"; const edgio = defineNitroPreset( { diff --git a/src/presets/firebase/preset.ts b/src/presets/firebase/preset.ts index 4a1189c04e..efd582027b 100644 --- a/src/presets/firebase/preset.ts +++ b/src/presets/firebase/preset.ts @@ -1,6 +1,6 @@ +import { defineNitroPreset } from "nitro/kit"; import { basename } from "pathe"; import type { Plugin } from "rollup"; -import { defineNitroPreset } from "nitro/kit"; import { updatePackageJSON, writeFirebaseConfig } from "./utils"; export type { FirebaseOptions as PresetOptions } from "./types"; diff --git a/src/presets/firebase/types.ts b/src/presets/firebase/types.ts index 722331b946..3fe683cdd3 100644 --- a/src/presets/firebase/types.ts +++ b/src/presets/firebase/types.ts @@ -1,5 +1,5 @@ -import type { HttpsOptions } from "firebase-functions/v2/https"; import type { RuntimeOptions, region } from "firebase-functions"; +import type { HttpsOptions } from "firebase-functions/v2/https"; export type FirebaseOptions = FirebaseOptionsGen1 | FirebaseOptionsGen2; diff --git a/src/presets/firebase/utils.ts b/src/presets/firebase/utils.ts index 0ce143b5b0..edcc32f947 100644 --- a/src/presets/firebase/utils.ts +++ b/src/presets/firebase/utils.ts @@ -1,8 +1,8 @@ import { existsSync } from "node:fs"; -import { join, relative } from "pathe"; -import { readPackageJSON, writePackageJSON } from "pkg-types"; import { writeFile } from "nitro/kit"; import type { Nitro } from "nitro/types"; +import { join, relative } from "pathe"; +import { readPackageJSON, writePackageJSON } from "pkg-types"; export async function writeFirebaseConfig(nitro: Nitro) { const firebaseConfigPath = join(nitro.options.rootDir, "firebase.json"); diff --git a/src/presets/iis/utils.ts b/src/presets/iis/utils.ts index 42ceab0ccd..ad9bfedf48 100644 --- a/src/presets/iis/utils.ts +++ b/src/presets/iis/utils.ts @@ -1,9 +1,9 @@ +import { existsSync } from "node:fs"; import { readFile } from "node:fs/promises"; import { defu } from "defu"; -import type { Nitro } from "nitro/types"; import { writeFile } from "nitro/kit"; +import type { Nitro } from "nitro/types"; import { resolve } from "pathe"; -import { existsSync } from "node:fs"; export async function writeIISFiles(nitro: Nitro) { await writeFile( @@ -106,7 +106,8 @@ async function iisnodeXmlTemplate(nitro: Nitro) { if (nitro.options.iis?.mergeConfig && !nitro.options.iis.overrideConfig) { return buildNewXmlDoc(defu(fileWebConfig, originalWebConfig)); - } else if (nitro.options.iis?.overrideConfig) { + } + if (nitro.options.iis?.overrideConfig) { return buildNewXmlDoc({ ...fileWebConfig }); } } @@ -139,7 +140,8 @@ async function iisXmlTemplate(nitro: Nitro) { if (nitro.options.iis?.mergeConfig && !nitro.options.iis.overrideConfig) { return buildNewXmlDoc(defu(fileWebConfig, originalWebConfig)); - } else if (nitro.options.iis?.overrideConfig) { + } + if (nitro.options.iis?.overrideConfig) { return buildNewXmlDoc({ ...fileWebConfig }); } } diff --git a/src/presets/netlify/legacy/preset.ts b/src/presets/netlify/legacy/preset.ts index d98c79963e..62e3c2bcc3 100644 --- a/src/presets/netlify/legacy/preset.ts +++ b/src/presets/netlify/legacy/preset.ts @@ -1,7 +1,7 @@ import { existsSync, promises as fsp } from "node:fs"; -import { join, dirname } from "pathe"; import { defineNitroPreset } from "nitro/kit"; import type { Nitro } from "nitro/types"; +import { dirname, join } from "pathe"; import { deprecateSWR, writeHeaders, writeRedirects } from "./utils"; // Netlify functions diff --git a/src/presets/netlify/legacy/runtime/netlify-lambda.ts b/src/presets/netlify/legacy/runtime/netlify-lambda.ts index 23b2c18576..6b1d860a39 100644 --- a/src/presets/netlify/legacy/runtime/netlify-lambda.ts +++ b/src/presets/netlify/legacy/runtime/netlify-lambda.ts @@ -7,12 +7,12 @@ import { normalizeLambdaOutgoingHeaders, } from "nitro/runtime/internal/utils.lambda"; -import { withQuery } from "ufo"; import type { - HandlerResponse, HandlerContext, HandlerEvent, + HandlerResponse, } from "@netlify/functions"; +import { withQuery } from "ufo"; const nitroApp = useNitroApp(); diff --git a/src/presets/netlify/legacy/runtime/netlify.ts b/src/presets/netlify/legacy/runtime/netlify.ts index 3187f681fc..d7666e41c5 100644 --- a/src/presets/netlify/legacy/runtime/netlify.ts +++ b/src/presets/netlify/legacy/runtime/netlify.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; import { getRouteRulesForPath } from "nitro/runtime/internal/route-rules"; -import { withQuery } from "ufo"; import type { Handler } from "@netlify/functions/dist/main"; +import { withQuery } from "ufo"; import { lambda } from "./netlify-lambda"; export const handler: Handler = async function handler(event, context) { diff --git a/src/presets/netlify/legacy/utils.ts b/src/presets/netlify/legacy/utils.ts index 89afedc651..36b12aaa51 100644 --- a/src/presets/netlify/legacy/utils.ts +++ b/src/presets/netlify/legacy/utils.ts @@ -1,6 +1,6 @@ import { existsSync, promises as fsp } from "node:fs"; -import { join } from "pathe"; import type { Nitro } from "nitro/types"; +import { join } from "pathe"; export async function writeRedirects(nitro: Nitro) { const redirectsPath = join(nitro.options.output.publicDir, "_redirects"); @@ -119,7 +119,7 @@ export function deprecateSWR(nitro: Nitro) { value.isr = !(value as { static: boolean }).static; hasLegacyOptions = true; } - if (value && value.cache && _hasProp(value.cache, "swr")) { + if (value?.cache && _hasProp(value.cache, "swr")) { value.isr = value.cache.swr; hasLegacyOptions = true; } diff --git a/src/presets/netlify/preset.ts b/src/presets/netlify/preset.ts index 60d8ea4b71..967d004c16 100644 --- a/src/presets/netlify/preset.ts +++ b/src/presets/netlify/preset.ts @@ -1,14 +1,14 @@ import { promises as fsp } from "node:fs"; -import { join, dirname } from "pathe"; import { defineNitroPreset } from "nitro/kit"; import type { Nitro } from "nitro/types"; +import { dirname, join } from "pathe"; +import netlifyLegacyPresets from "./legacy/preset"; import { generateNetlifyFunction, getGeneratorString, writeHeaders, writeRedirects, } from "./utils"; -import netlifyLegacyPresets from "./legacy/preset"; export type { NetlifyOptions as PresetOptions } from "./types"; diff --git a/src/presets/netlify/utils.ts b/src/presets/netlify/utils.ts index 71eaaeebd9..3bd0515615 100644 --- a/src/presets/netlify/utils.ts +++ b/src/presets/netlify/utils.ts @@ -1,6 +1,6 @@ import { existsSync, promises as fsp } from "node:fs"; -import { join } from "pathe"; import type { Nitro } from "nitro/types"; +import { join } from "pathe"; export async function writeRedirects(nitro: Nitro) { const redirectsPath = join(nitro.options.output.publicDir, "_redirects"); diff --git a/src/presets/node/runtime/cluster.ts b/src/presets/node/runtime/cluster.ts index 31469991d2..29c0779177 100644 --- a/src/presets/node/runtime/cluster.ts +++ b/src/presets/node/runtime/cluster.ts @@ -1,5 +1,5 @@ -import os from "node:os"; import cluster from "node:cluster"; +import os from "node:os"; import { getGracefulShutdownConfig } from "nitro/runtime/internal/shutdown"; import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; diff --git a/src/presets/node/runtime/node-listener.ts b/src/presets/node/runtime/node-listener.ts index 688275a714..dce81fe781 100644 --- a/src/presets/node/runtime/node-listener.ts +++ b/src/presets/node/runtime/node-listener.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; import { toNodeListener } from "h3"; import { useNitroApp } from "nitro/runtime"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; import { startScheduleRunner } from "nitro/runtime/internal/task"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; const nitroApp = useNitroApp(); diff --git a/src/presets/node/runtime/node-server.ts b/src/presets/node/runtime/node-server.ts index 5f8f0c03bf..cb197908be 100644 --- a/src/presets/node/runtime/node-server.ts +++ b/src/presets/node/runtime/node-server.ts @@ -1,15 +1,15 @@ import "#nitro-internal-pollyfills"; import { Server as HttpServer } from "node:http"; -import type { AddressInfo } from "node:net"; import { Server as HttpsServer } from "node:https"; +import type { AddressInfo } from "node:net"; +import wsAdapter from "crossws/adapters/node"; import destr from "destr"; import { toNodeListener } from "h3"; -import wsAdapter from "crossws/adapters/node"; import { useNitroApp } from "nitro/runtime"; -import { setupGracefulShutdown } from "nitro/runtime/internal/shutdown"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; import { useRuntimeConfig } from "nitro/runtime"; +import { setupGracefulShutdown } from "nitro/runtime/internal/shutdown"; import { startScheduleRunner } from "nitro/runtime/internal/task"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; const cert = process.env.NITRO_SSL_CERT; const key = process.env.NITRO_SSL_KEY; diff --git a/src/presets/vercel/runtime/vercel.ts b/src/presets/vercel/runtime/vercel.ts index 0adfc223e7..509ba59226 100644 --- a/src/presets/vercel/runtime/vercel.ts +++ b/src/presets/vercel/runtime/vercel.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { toNodeListener, NodeListener } from "h3"; +import { type NodeListener, toNodeListener } from "h3"; import { parseQuery } from "ufo"; const nitroApp = useNitroApp(); diff --git a/src/presets/vercel/utils.ts b/src/presets/vercel/utils.ts index a34619ab83..21d7111ec7 100644 --- a/src/presets/vercel/utils.ts +++ b/src/presets/vercel/utils.ts @@ -1,8 +1,8 @@ -import type { Nitro } from "nitro/types"; import fsp from "node:fs/promises"; -import { dirname, relative, resolve } from "pathe"; -import { writeFile } from "nitro/kit"; import { defu } from "defu"; +import { writeFile } from "nitro/kit"; +import type { Nitro } from "nitro/types"; +import { dirname, relative, resolve } from "pathe"; import { joinURL, withoutLeadingSlash } from "ufo"; import type { VercelBuildConfigV3, diff --git a/src/presets/winterjs/runtime/winterjs.ts b/src/presets/winterjs/runtime/winterjs.ts index 7cc7acdd88..f6a680fb57 100644 --- a/src/presets/winterjs/runtime/winterjs.ts +++ b/src/presets/winterjs/runtime/winterjs.ts @@ -1,8 +1,8 @@ // @ts-nocheck TODO: Remove after removing polyfills import "#nitro-internal-pollyfills"; -import { toBuffer } from "nitro/runtime/internal/utils"; -import { useNitroApp } from "nitro/runtime"; import { toPlainHandler } from "h3"; +import { useNitroApp } from "nitro/runtime"; +import { toBuffer } from "nitro/runtime/internal/utils"; import { hasProtocol, joinURL } from "ufo"; // Types are reverse engineered from runtime diff --git a/src/presets/zeabur/preset.ts b/src/presets/zeabur/preset.ts index 4135478dc6..e27d296a5e 100644 --- a/src/presets/zeabur/preset.ts +++ b/src/presets/zeabur/preset.ts @@ -1,8 +1,8 @@ import fsp from "node:fs/promises"; -import { dirname, relative, resolve } from "pathe"; import { writeFile } from "nitro/kit"; import { defineNitroPreset } from "nitro/kit"; import type { Nitro } from "nitro/types"; +import { dirname, relative, resolve } from "pathe"; // https://zeabur.com/docs/advanced/serverless-output-format diff --git a/src/presets/zeabur/runtime/zeabur.ts b/src/presets/zeabur/runtime/zeabur.ts index d00fb3b2c0..32428e1787 100644 --- a/src/presets/zeabur/runtime/zeabur.ts +++ b/src/presets/zeabur/runtime/zeabur.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; +import { type NodeListener, toNodeListener } from "h3"; import { useNitroApp } from "nitro/runtime"; -import { NodeListener, toNodeListener } from "h3"; const handler = toNodeListener(useNitroApp().h3App); diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 89f40d5070..c332226ddf 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -1,46 +1,46 @@ +import { builtinModules, createRequire } from "node:module"; import { pathToFileURL } from "node:url"; -import { createRequire, builtinModules } from "node:module"; -import { dirname, join, normalize, resolve } from "pathe"; -import type { Plugin } from "rollup"; -import { defu } from "defu"; +import alias from "@rollup/plugin-alias"; // import terser from "@rollup/plugin-terser"; // TODO: Investigate jiti issue import commonjs from "@rollup/plugin-commonjs"; -import alias from "@rollup/plugin-alias"; -import json from "@rollup/plugin-json"; import inject from "@rollup/plugin-inject"; +import json from "@rollup/plugin-json"; import { nodeResolve } from "@rollup/plugin-node-resolve"; -import { isWindows } from "std-env"; -import { visualizer } from "rollup-plugin-visualizer"; -import * as unenv from "unenv"; -import type { Preset } from "unenv"; -import { sanitizeFilePath, resolvePath } from "mlly"; -import unimportPlugin from "unimport/unplugin"; -import { hash } from "ohash"; -import { rollup as unwasm } from "unwasm/plugin"; +import { defu } from "defu"; +import { resolvePath, sanitizeFilePath } from "mlly"; +import { runtimeDependencies, runtimeDir } from "nitro/runtime/meta"; import type { Nitro, NitroStaticBuildFlags, NodeExternalsOptions, RollupConfig, } from "nitro/types"; -import { resolveAliases } from "./utils"; -import { replace } from "./plugins/replace"; -import { virtual } from "./plugins/virtual"; +import { hash } from "ohash"; +import { dirname, join, normalize, resolve } from "pathe"; +import type { Plugin } from "rollup"; +import { visualizer } from "rollup-plugin-visualizer"; +import { isWindows } from "std-env"; +import * as unenv from "unenv"; +import type { Preset } from "unenv"; +import unimportPlugin from "unimport/unplugin"; +import { rollup as unwasm } from "unwasm/plugin"; +import { appConfig } from "./plugins/app-config"; +import { database } from "./plugins/database"; import { dynamicRequire } from "./plugins/dynamic-require"; +import { esbuild } from "./plugins/esbuild"; import { externals } from "./plugins/externals"; -import { timing } from "./plugins/timing"; -import { publicAssets } from "./plugins/public-assets"; -import { serverAssets } from "./plugins/server-assets"; import { handlers } from "./plugins/handlers"; import { handlersMeta } from "./plugins/handlers-meta"; -import { esbuild } from "./plugins/esbuild"; -import { raw } from "./plugins/raw"; -import { storage } from "./plugins/storage"; -import { database } from "./plugins/database"; import { importMeta } from "./plugins/import-meta"; -import { appConfig } from "./plugins/app-config"; +import { publicAssets } from "./plugins/public-assets"; +import { raw } from "./plugins/raw"; +import { replace } from "./plugins/replace"; +import { serverAssets } from "./plugins/server-assets"; import { sourcemapMininify } from "./plugins/sourcemap-min"; -import { runtimeDependencies, runtimeDir } from "nitro/runtime/meta"; +import { storage } from "./plugins/storage"; +import { timing } from "./plugins/timing"; +import { virtual } from "./plugins/virtual"; +import { resolveAliases } from "./utils"; export const getRollupConfig = (nitro: Nitro): RollupConfig => { const extensions: string[] = [ diff --git a/src/rollup/plugins/database.ts b/src/rollup/plugins/database.ts index 6252c9a756..ab275f1a9e 100644 --- a/src/rollup/plugins/database.ts +++ b/src/rollup/plugins/database.ts @@ -1,6 +1,6 @@ import { connectors } from "db0"; -import { camelCase } from "scule"; import type { Nitro } from "nitro/types"; +import { camelCase } from "scule"; import { virtual } from "./virtual"; export function database(nitro: Nitro) { diff --git a/src/rollup/plugins/dynamic-require.ts b/src/rollup/plugins/dynamic-require.ts index eb30e936b4..d5548c4057 100644 --- a/src/rollup/plugins/dynamic-require.ts +++ b/src/rollup/plugins/dynamic-require.ts @@ -1,8 +1,8 @@ import { pathToFileURL } from "node:url"; -import { resolve } from "pathe"; import { globby } from "globby"; -import type { Plugin } from "rollup"; import { genSafeVariableName } from "knitwork"; +import { resolve } from "pathe"; +import type { Plugin } from "rollup"; const PLUGIN_NAME = "dynamic-require"; const HELPER_DYNAMIC = `\0${PLUGIN_NAME}.mjs`; diff --git a/src/rollup/plugins/esbuild.ts b/src/rollup/plugins/esbuild.ts index 2dd3c6ea12..f686fe806e 100644 --- a/src/rollup/plugins/esbuild.ts +++ b/src/rollup/plugins/esbuild.ts @@ -1,10 +1,10 @@ // Based on https://github.com/egoist/rollup-plugin-esbuild (MIT) +import { createFilter } from "@rollup/pluginutils"; +import { type Loader, type TransformResult, transform } from "esbuild"; +import type { EsbuildOptions } from "nitro/types"; import { extname, relative } from "pathe"; import type { Plugin, PluginContext } from "rollup"; -import { Loader, TransformResult, transform } from "esbuild"; -import { createFilter } from "@rollup/pluginutils"; -import { EsbuildOptions } from "nitro/types"; const defaultLoaders: { [ext: string]: Loader } = { ".ts": "ts", diff --git a/src/rollup/plugins/externals.ts b/src/rollup/plugins/externals.ts index 8fa2b533fc..c112faefcd 100644 --- a/src/rollup/plugins/externals.ts +++ b/src/rollup/plugins/externals.ts @@ -1,20 +1,20 @@ import { existsSync, promises as fsp } from "node:fs"; import { platform } from "node:os"; -import { resolve, dirname, normalize, join, isAbsolute, relative } from "pathe"; -import type { PackageJson } from "pkg-types"; -import { readPackageJSON, writePackageJSON } from "pkg-types"; import { nodeFileTrace } from "@vercel/nft"; -import type { Plugin } from "rollup"; import { - resolvePath, isValidNodeImport, lookupNodeModuleSubpath, normalizeid, parseNodeModulePath, + resolvePath, } from "mlly"; -import semver from "semver"; import { isDirectory } from "nitro/kit"; import type { NodeExternalsOptions } from "nitro/types"; +import { dirname, isAbsolute, join, normalize, relative, resolve } from "pathe"; +import type { PackageJson } from "pkg-types"; +import { readPackageJSON, writePackageJSON } from "pkg-types"; +import type { Plugin } from "rollup"; +import semver from "semver"; export function externals(opts: NodeExternalsOptions): Plugin { const trackedExternals = new Set(); @@ -345,7 +345,7 @@ export function externals(opts: NodeExternalsOptions): Plugin { const src = join(opts.outDir, "node_modules", from); const dst = join(opts.outDir, "node_modules", to); const dstStat = await fsp.lstat(dst).catch(() => null); - const exists = dstStat && dstStat.isSymbolicLink(); + const exists = dstStat?.isSymbolicLink(); // console.log("Linking", from, "to", to, exists ? "!!!!" : ""); if (exists) { return; diff --git a/src/rollup/plugins/handlers-meta.ts b/src/rollup/plugins/handlers-meta.ts index 6519437d9e..475500baea 100644 --- a/src/rollup/plugins/handlers-meta.ts +++ b/src/rollup/plugins/handlers-meta.ts @@ -1,9 +1,9 @@ import { readFile } from "node:fs/promises"; import { transform } from "esbuild"; -import type { Plugin } from "rollup"; -import type { Literal, Expression } from "estree"; +import type { Expression, Literal } from "estree"; +import type { Nitro, NitroEventHandler } from "nitro/types"; import { extname } from "pathe"; -import { Nitro, NitroEventHandler } from "nitro/types"; +import type { Plugin } from "rollup"; const virtualPrefix = "\0nitro-handler-meta:"; diff --git a/src/rollup/plugins/handlers.ts b/src/rollup/plugins/handlers.ts index 2f5abc4a5c..bf1ea2b72c 100644 --- a/src/rollup/plugins/handlers.ts +++ b/src/rollup/plugins/handlers.ts @@ -1,5 +1,5 @@ +import type { Nitro, NitroEventHandler, NitroRouteRules } from "nitro/types"; import { hash } from "ohash"; -import type { Nitro, NitroRouteRules, NitroEventHandler } from "nitro/types"; import { virtual } from "./virtual"; export function handlers(nitro: Nitro) { diff --git a/src/rollup/plugins/import-meta.ts b/src/rollup/plugins/import-meta.ts index fa5dbb06a6..db4b2d068a 100644 --- a/src/rollup/plugins/import-meta.ts +++ b/src/rollup/plugins/import-meta.ts @@ -1,5 +1,5 @@ +import type { Nitro } from "nitro/types"; import type { Plugin } from "rollup"; -import { Nitro } from "nitro/types"; export const ImportMetaRe = /import\.meta|globalThis._importMeta_/; diff --git a/src/rollup/plugins/public-assets.ts b/src/rollup/plugins/public-assets.ts index 1b0bb69b55..4a686ca182 100644 --- a/src/rollup/plugins/public-assets.ts +++ b/src/rollup/plugins/public-assets.ts @@ -1,13 +1,13 @@ import { promises as fsp } from "node:fs"; -import { relative, resolve } from "pathe"; -import { withTrailingSlash } from "ufo"; import createEtag from "etag"; -import mime from "mime"; import { globby } from "globby"; -import type { Plugin } from "rollup"; +import mime from "mime"; import type { Nitro } from "nitro/types"; -import { virtual } from "./virtual"; import type { PublicAsset } from "nitro/types"; +import { relative, resolve } from "pathe"; +import type { Plugin } from "rollup"; +import { withTrailingSlash } from "ufo"; +import { virtual } from "./virtual"; const readAssetHandler: Record< Exclude, diff --git a/src/rollup/plugins/raw.ts b/src/rollup/plugins/raw.ts index 53912ccd61..0f55363ae9 100644 --- a/src/rollup/plugins/raw.ts +++ b/src/rollup/plugins/raw.ts @@ -1,8 +1,8 @@ import { promises as fsp } from "node:fs"; -import { extname } from "pathe"; import mime from "mime"; +import type { RawOptions } from "nitro/types"; +import { extname } from "pathe"; import type { Plugin } from "rollup"; -import { RawOptions } from "nitro/types"; const HELPER_ID = "\0raw-helpers"; @@ -67,14 +67,11 @@ export function raw(opts: RawOptions = {}): Plugin { code: `// ROLLUP_NO_REPLACE \n import {base64ToUint8Array } from "${HELPER_ID}" \n export default base64ToUint8Array("${serialized}")`, map: null, }; - } else { - return { - code: `// ROLLUP_NO_REPLACE \n export default ${JSON.stringify( - code - )}`, - map: null, - }; } + return { + code: `// ROLLUP_NO_REPLACE \n export default ${JSON.stringify(code)}`, + map: null, + }; }, }; } diff --git a/src/rollup/plugins/server-assets.ts b/src/rollup/plugins/server-assets.ts index 329dc0d4c5..3b08e4d2bb 100644 --- a/src/rollup/plugins/server-assets.ts +++ b/src/rollup/plugins/server-assets.ts @@ -1,11 +1,11 @@ import { promises as fsp } from "node:fs"; -import type { Plugin } from "rollup"; import createEtag from "etag"; +import { globby } from "globby"; import mime from "mime"; +import type { Nitro } from "nitro/types"; import { resolve } from "pathe"; +import type { Plugin } from "rollup"; import { normalizeKey } from "unstorage"; -import { globby } from "globby"; -import type { Nitro } from "nitro/types"; import { virtual } from "./virtual"; interface ResolvedAsset { diff --git a/src/rollup/plugins/sourcemap-min.ts b/src/rollup/plugins/sourcemap-min.ts index 2e2594bcb2..cf22ae88a8 100644 --- a/src/rollup/plugins/sourcemap-min.ts +++ b/src/rollup/plugins/sourcemap-min.ts @@ -1,4 +1,4 @@ -import type { Plugin, ExistingRawSourceMap } from "rollup"; +import type { ExistingRawSourceMap, Plugin } from "rollup"; export function sourcemapMininify() { return { diff --git a/src/rollup/plugins/storage.ts b/src/rollup/plugins/storage.ts index 82a6fbe9bf..c3e3417746 100644 --- a/src/rollup/plugins/storage.ts +++ b/src/rollup/plugins/storage.ts @@ -1,6 +1,6 @@ -import { builtinDrivers } from "unstorage"; import { genImport, genSafeVariableName } from "knitwork"; import type { Nitro } from "nitro/types"; +import { builtinDrivers } from "unstorage"; import { virtual } from "./virtual"; export function storage(nitro: Nitro) { diff --git a/src/rollup/plugins/virtual.ts b/src/rollup/plugins/virtual.ts index 6b52d22a54..0323505150 100644 --- a/src/rollup/plugins/virtual.ts +++ b/src/rollup/plugins/virtual.ts @@ -1,6 +1,6 @@ -import { resolve, dirname } from "pathe"; -import type { Plugin } from "rollup"; import type { RollupVirtualOptions, VirtualModule } from "nitro/types"; +import { dirname, resolve } from "pathe"; +import type { Plugin } from "rollup"; // Based on https://github.com/rollup/plugins/blob/master/packages/virtual/src/index.ts diff --git a/src/runtime/internal/app.ts b/src/runtime/internal/app.ts index 846a918cbd..4c6bc6c6c6 100644 --- a/src/runtime/internal/app.ts +++ b/src/runtime/internal/app.ts @@ -1,32 +1,32 @@ +import destr from "destr"; import { + type H3Error, + type H3Event, createApp, createRouter, eventHandler, - lazyEventHandler, - toNodeListener, fetchWithEvent, - H3Error, isEvent, - H3Event, + lazyEventHandler, + toNodeListener, } from "h3"; -import { createFetch, Headers } from "ofetch"; -import destr from "destr"; +import { createHooks } from "hookable"; +import type { CaptureError, NitroApp, NitroRuntimeHooks } from "nitro/types"; +import type { NitroAsyncContext } from "nitro/types"; +import type { $Fetch, NitroFetchRequest } from "nitro/types"; +import { Headers, createFetch } from "ofetch"; import { createCall, createFetch as createLocalFetch, } from "unenv/runtime/fetch/index"; -import { createHooks } from "hookable"; -import type { NitroRuntimeHooks, CaptureError, NitroApp } from "nitro/types"; -import { useRuntimeConfig } from "./config"; -import { cachedEventHandler } from "./cache"; -import { normalizeFetchResponse } from "./utils"; -import { createRouteRulesHandler, getRouteRulesForPath } from "./route-rules"; -import { nitroAsyncContext } from "./context"; -import type { NitroAsyncContext } from "nitro/types"; -import type { $Fetch, NitroFetchRequest } from "nitro/types"; -import { plugins } from "#nitro-internal-virtual/plugins"; import errorHandler from "#nitro-internal-virtual/error-handler"; +import { plugins } from "#nitro-internal-virtual/plugins"; import { handlers } from "#nitro-internal-virtual/server-handlers"; +import { cachedEventHandler } from "./cache"; +import { useRuntimeConfig } from "./config"; +import { nitroAsyncContext } from "./context"; +import { createRouteRulesHandler, getRouteRulesForPath } from "./route-rules"; +import { normalizeFetchResponse } from "./utils"; function createNitroApp(): NitroApp { const config = useRuntimeConfig(); diff --git a/src/runtime/internal/cache.ts b/src/runtime/internal/cache.ts index e33ebdcb51..134bdd1536 100644 --- a/src/runtime/internal/cache.ts +++ b/src/runtime/internal/cache.ts @@ -1,25 +1,25 @@ -import { hash } from "ohash"; import { - handleCacheHeaders, - defineEventHandler, + type EventHandler, createEvent, - EventHandler, + defineEventHandler, + fetchWithEvent, + handleCacheHeaders, isEvent, splitCookiesString, - fetchWithEvent, } from "h3"; import type { EventHandlerRequest, EventHandlerResponse, H3Event } from "h3"; -import { parseURL } from "ufo"; -import { useStorage } from "./storage"; -import { useNitroApp } from "./app"; import type { $Fetch, - CacheOptions, CacheEntry, + CacheOptions, CachedEventHandlerOptions, - ResponseCacheEntry, NitroFetchRequest, + ResponseCacheEntry, } from "nitro/types"; +import { hash } from "ohash"; +import { parseURL } from "ufo"; +import { useNitroApp } from "./app"; +import { useStorage } from "./storage"; const defaultCacheOptions = { name: "_", @@ -116,7 +116,7 @@ export function defineCachedFunction( console.error(`[nitro] [cache] Cache write error.`, error); useNitroApp().captureError(error, { event, tags: ["cache"] }); }); - if (event && event.waitUntil) { + if (event?.waitUntil) { event.waitUntil(promise); } } diff --git a/src/runtime/internal/client.ts b/src/runtime/internal/client.ts index d7b9c1fc19..1a8f76a9f9 100644 --- a/src/runtime/internal/client.ts +++ b/src/runtime/internal/client.ts @@ -1,6 +1,6 @@ +import type { $Fetch, NitroFetchRequest } from "nitro/types"; // Client polyfill import { $fetch } from "ofetch"; -import { $Fetch, NitroFetchRequest } from "nitro/types"; if (!globalThis.$fetch) { globalThis.$fetch = $fetch as $Fetch; diff --git a/src/runtime/internal/config.ts b/src/runtime/internal/config.ts index 0e9aefabbb..9f43a81b37 100644 --- a/src/runtime/internal/config.ts +++ b/src/runtime/internal/config.ts @@ -1,8 +1,8 @@ +import type { H3Event } from "h3"; import { klona } from "klona"; -import { H3Event } from "h3"; -import { type EnvOptions, applyEnv } from "./utils.env"; -import { appConfig as _inlineAppConfig } from "#nitro-internal-virtual/app-config"; import type { NitroRuntimeConfig } from "nitro/types"; +import { appConfig as _inlineAppConfig } from "#nitro-internal-virtual/app-config"; +import { type EnvOptions, applyEnv } from "./utils.env"; // Static runtime config inlined by nitro build const _inlineRuntimeConfig = process.env.RUNTIME_CONFIG as any; diff --git a/src/runtime/internal/context.ts b/src/runtime/internal/context.ts index 4962d92360..ef6fce8f15 100644 --- a/src/runtime/internal/context.ts +++ b/src/runtime/internal/context.ts @@ -1,7 +1,7 @@ import { AsyncLocalStorage } from "node:async_hooks"; -import { H3Event, createError } from "h3"; -import { getContext } from "unctx"; +import { type H3Event, createError } from "h3"; import type { NitroAsyncContext } from "nitro/types"; +import { getContext } from "unctx"; export const nitroAsyncContext = getContext("nitro-app", { asyncContext: import.meta._asyncContext, diff --git a/src/runtime/internal/error.ts b/src/runtime/internal/error.ts index e6d2e742be..9a53334ec7 100644 --- a/src/runtime/internal/error.ts +++ b/src/runtime/internal/error.ts @@ -1,7 +1,7 @@ // import ansiHTML from 'ansi-html' -import { setResponseHeader, setResponseStatus, send } from "h3"; +import { send, setResponseHeader, setResponseStatus } from "h3"; import type { NitroErrorHandler } from "nitro/types"; -import { normalizeError, isJsonRequest } from "./utils"; +import { isJsonRequest, normalizeError } from "./utils"; export function defineNitroErrorHandler( handler: NitroErrorHandler @@ -54,10 +54,9 @@ export default defineNitroErrorHandler( if (isJsonRequest(event)) { setResponseHeader(event, "Content-Type", "application/json"); return send(event, JSON.stringify(errorObject)); - } else { - setResponseHeader(event, "Content-Type", "text/html"); - return send(event, renderHTMLError(errorObject)); } + setResponseHeader(event, "Content-Type", "text/html"); + return send(event, renderHTMLError(errorObject)); } ); diff --git a/src/runtime/internal/renderer.ts b/src/runtime/internal/renderer.ts index 4bf886fc61..6bd1643764 100644 --- a/src/runtime/internal/renderer.ts +++ b/src/runtime/internal/renderer.ts @@ -7,8 +7,8 @@ import { setResponseHeaders, setResponseStatus, } from "h3"; -import { useNitroApp } from "./app"; import type { RenderHandler } from "nitro/types"; +import { useNitroApp } from "./app"; export function defineRenderHandler(handler: RenderHandler) { return eventHandler(async (event) => { diff --git a/src/runtime/internal/route-rules.ts b/src/runtime/internal/route-rules.ts index 6d4c1b8630..da73a58937 100644 --- a/src/runtime/internal/route-rules.ts +++ b/src/runtime/internal/route-rules.ts @@ -1,15 +1,15 @@ +import defu from "defu"; import { + type H3Event, eventHandler, - H3Event, + proxyRequest, sendRedirect, setHeaders, - proxyRequest, } from "h3"; -import defu from "defu"; +import type { NitroRouteRules } from "nitro/types"; import { createRouter as createRadixRouter, toRouteMatcher } from "radix3"; -import { joinURL, withQuery, getQuery, withoutBase } from "ufo"; +import { getQuery, joinURL, withQuery, withoutBase } from "ufo"; import { useRuntimeConfig } from "./config"; -import type { NitroRouteRules } from "nitro/types"; const config = useRuntimeConfig(); const _routeRulesMatcher = toRouteMatcher( diff --git a/src/runtime/internal/routes/openapi.ts b/src/runtime/internal/routes/openapi.ts index b537f1a0b8..b4a9b21b89 100644 --- a/src/runtime/internal/routes/openapi.ts +++ b/src/runtime/internal/routes/openapi.ts @@ -1,9 +1,9 @@ -import { HTTPMethod, eventHandler, getRequestURL } from "h3"; +import { type HTTPMethod, eventHandler, getRequestURL } from "h3"; import type { OpenAPI3, - PathItemObject, OperationObject, ParameterObject, + PathItemObject, PathsObject, } from "openapi-typescript"; import { joinURL } from "ufo"; diff --git a/src/runtime/internal/routes/scalar.ts b/src/runtime/internal/routes/scalar.ts index be7f8430e4..f44563ee6a 100644 --- a/src/runtime/internal/routes/scalar.ts +++ b/src/runtime/internal/routes/scalar.ts @@ -1,5 +1,5 @@ -import { eventHandler } from "h3"; import type { ReferenceConfiguration } from "@scalar/api-reference"; +import { eventHandler } from "h3"; import { useRuntimeConfig } from "../config"; // Served as /_nitro/scalar diff --git a/src/runtime/internal/shutdown.ts b/src/runtime/internal/shutdown.ts index 4a921749ce..e0f172c9f6 100644 --- a/src/runtime/internal/shutdown.ts +++ b/src/runtime/internal/shutdown.ts @@ -1,6 +1,6 @@ import type { Server as HttpServer } from "node:http"; -import gracefulShutdown from "./lib/http-graceful-shutdown"; import type { NitroApp } from "nitro/types"; +import gracefulShutdown from "./lib/http-graceful-shutdown"; export function getGracefulShutdownConfig() { return { diff --git a/src/runtime/internal/static.ts b/src/runtime/internal/static.ts index 940a7d5565..2fd0e62a1c 100644 --- a/src/runtime/internal/static.ts +++ b/src/runtime/internal/static.ts @@ -1,13 +1,14 @@ import { - eventHandler, + type HTTPMethod, createError, + eventHandler, getRequestHeader, getResponseHeader, + removeResponseHeader, setResponseHeader, setResponseStatus, - removeResponseHeader, - type HTTPMethod, } from "h3"; +import type { PublicAsset } from "nitro/types"; import { decodePath, joinURL, @@ -17,10 +18,9 @@ import { } from "ufo"; import { getAsset, - readAsset, isPublicAssetURL, + readAsset, } from "#nitro-internal-virtual/public-assets"; -import type { PublicAsset } from "nitro/types"; const METHODS = new Set(["HEAD", "GET"] as HTTPMethod[]); diff --git a/src/runtime/internal/task.ts b/src/runtime/internal/task.ts index d4eda61a0c..7e0da79600 100644 --- a/src/runtime/internal/task.ts +++ b/src/runtime/internal/task.ts @@ -1,14 +1,14 @@ -import { createError } from "h3"; import { Cron } from "croner"; -import { isTest } from "std-env"; -import { tasks, scheduledTasks } from "#nitro-internal-virtual/tasks"; +import { createError } from "h3"; import type { Task, - TaskResult, - TaskPayload, TaskContext, TaskEvent, + TaskPayload, + TaskResult, } from "nitro/types"; +import { isTest } from "std-env"; +import { scheduledTasks, tasks } from "#nitro-internal-virtual/tasks"; /** @experimental */ export function defineTask(def: Task): Task { diff --git a/src/runtime/internal/utils.ts b/src/runtime/internal/utils.ts index 244f2dd4dd..17bf39bef9 100644 --- a/src/runtime/internal/utils.ts +++ b/src/runtime/internal/utils.ts @@ -22,14 +22,15 @@ export async function useRequestBody( body[entry[0]] = entry[1]; } return body; - } else if (JSON_MIME_RE.test(contentType)) { + } + if (JSON_MIME_RE.test(contentType)) { return request.json(); - } else if (TEXT_MIME_RE.test(contentType)) { + } + if (TEXT_MIME_RE.test(contentType)) { return request.text(); - } else { - const blob = await request.blob(); - return URL.createObjectURL(blob); } + const blob = await request.blob(); + return URL.createObjectURL(blob); } export function hasReqHeader(event: H3Event, name: string, includes: string) { diff --git a/src/types/config.ts b/src/types/config.ts index 454712910d..b730d33d0b 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -1,34 +1,34 @@ -import type { Preset as UnenvPreset } from "unenv"; -import type { UnimportPluginOptions } from "unimport/unplugin"; -import type { PluginVisualizerOptions } from "rollup-plugin-visualizer"; -import type { NestedHooks } from "hookable"; -import type { LogLevel } from "consola"; -import type { WatchOptions } from "chokidar"; import type { RollupCommonJSOptions } from "@rollup/plugin-commonjs"; -import type { ProxyServerOptions } from "httpxy"; -import type { ResolvedConfig, ConfigWatcher, C12InputConfig } from "c12"; -import type { UnwasmPluginOptions } from "unwasm/plugin"; -import type { TSConfig } from "pkg-types"; import type { ReferenceConfiguration } from "@scalar/api-reference"; +import type { C12InputConfig, ConfigWatcher, ResolvedConfig } from "c12"; import type { WatchConfigOptions } from "c12"; -import type { NodeExternalsOptions, EsbuildOptions } from "./rollup"; +import type { WatchOptions } from "chokidar"; +import type { CompatibilityDateSpec, CompatibilityDates } from "compatx"; +import type { LogLevel } from "consola"; +import type { ConnectorName } from "db0"; +import type { NestedHooks } from "hookable"; +import type { ProxyServerOptions } from "httpxy"; +import type { PresetName, PresetNameInput, PresetOptions } from "nitro/presets"; +import type { TSConfig } from "pkg-types"; +import type { PluginVisualizerOptions } from "rollup-plugin-visualizer"; +import type { Preset as UnenvPreset } from "unenv"; +import type { UnimportPluginOptions } from "unimport/unplugin"; +import type { BuiltinDriverName } from "unstorage"; +import type { UnwasmPluginOptions } from "unwasm/plugin"; +import type { DeepPartial } from "./_utils"; +import type { DevServerOptions } from "./dev"; import type { - NitroErrorHandler, NitroDevEventHandler, + NitroErrorHandler, NitroEventHandler, } from "./handler"; -import type { PresetName, PresetNameInput, PresetOptions } from "nitro/presets"; +import type { NitroHooks } from "./hooks"; import type { NitroModuleInput } from "./module"; -import type { DeepPartial } from "./_utils"; +import type { NitroFrameworkInfo } from "./nitro"; +import type { NitroPreset } from "./preset"; +import type { EsbuildOptions, NodeExternalsOptions } from "./rollup"; import type { RollupConfig } from "./rollup"; -import type { BuiltinDriverName } from "unstorage"; import type { NitroRouteConfig, NitroRouteRules } from "./route-rules"; -import type { NitroPreset } from "./preset"; -import type { NitroHooks } from "./hooks"; -import type { ConnectorName } from "db0"; -import type { NitroFrameworkInfo } from "./nitro"; -import type { DevServerOptions } from "./dev"; -import type { CompatibilityDateSpec, CompatibilityDates } from "compatx"; /** * Nitro normalized options (nitro.options) diff --git a/src/types/dev.ts b/src/types/dev.ts index 0e2a312b3d..a9a13655f2 100644 --- a/src/types/dev.ts +++ b/src/types/dev.ts @@ -1,9 +1,9 @@ -import type { Worker } from "node:worker_threads"; -import type { App } from "h3"; -import type { Listener, ListenOptions } from "listhen"; -import type { FSWatcher } from "chokidar"; import type { IncomingMessage, OutgoingMessage } from "node:http"; import type { Duplex } from "node:stream"; +import type { Worker } from "node:worker_threads"; +import type { FSWatcher } from "chokidar"; +import type { App } from "h3"; +import type { ListenOptions, Listener } from "listhen"; export interface DevServerOptions { watch: string[]; diff --git a/src/types/fetch/fetch.ts b/src/types/fetch/fetch.ts index 3a6b72fb46..ca5aabf1e4 100644 --- a/src/types/fetch/fetch.ts +++ b/src/types/fetch/fetch.ts @@ -1,5 +1,5 @@ import type { RouterMethod } from "h3"; -import type { FetchRequest, FetchOptions, FetchResponse } from "ofetch"; +import type { FetchOptions, FetchRequest, FetchResponse } from "ofetch"; import type { MatchedRoutes } from "./_match"; // An interface to extend in a local project @@ -105,4 +105,4 @@ declare global { } } -export {}; +export type {}; diff --git a/src/types/global.ts b/src/types/global.ts index 894bad17c5..e2d15b130d 100644 --- a/src/types/global.ts +++ b/src/types/global.ts @@ -30,4 +30,4 @@ declare global { const defineNitroModule: (definition: NitroModule) => NitroModule; } -export {}; +export type {}; diff --git a/src/types/h3.ts b/src/types/h3.ts index 1dc7dc63a7..713ee26415 100644 --- a/src/types/h3.ts +++ b/src/types/h3.ts @@ -1,9 +1,9 @@ import type { + CacheOptions, CaptureError, CapturedErrorContext, - CacheOptions, } from "nitro/types"; -import type { NitroFetchRequest, $Fetch } from "./fetch/fetch"; +import type { $Fetch, NitroFetchRequest } from "./fetch/fetch"; export type H3EventFetch = ( request: NitroFetchRequest, @@ -36,4 +36,4 @@ declare module "h3" { } } -export {}; +export type {}; diff --git a/src/types/handler.ts b/src/types/handler.ts index 09af260825..d360b6d1f1 100644 --- a/src/types/handler.ts +++ b/src/types/handler.ts @@ -1,6 +1,6 @@ import type { EventHandler, H3Error, H3Event, RouterMethod } from "h3"; -import type { OperationObject } from "openapi-typescript"; import type { PresetName } from "nitro/presets"; +import type { OperationObject } from "openapi-typescript"; type MaybeArray = T | T[]; diff --git a/src/types/hooks.ts b/src/types/hooks.ts index 54a5d0b47c..24d7def9e9 100644 --- a/src/types/hooks.ts +++ b/src/types/hooks.ts @@ -1,5 +1,5 @@ import type { NitroConfig } from "./config"; -import type { NitroTypes, Nitro } from "./nitro"; +import type { Nitro, NitroTypes } from "./nitro"; import type { PrerenderRoute } from "./prerender"; import type { RollupConfig } from "./rollup"; diff --git a/src/types/nitro.ts b/src/types/nitro.ts index 82eb508454..bcc95d66f5 100644 --- a/src/types/nitro.ts +++ b/src/types/nitro.ts @@ -1,11 +1,11 @@ -import type { Unimport } from "unimport"; -import type { Hookable } from "hookable"; import type { ConsolaInstance } from "consola"; -import type { Storage } from "unstorage"; import type { RouterMethod } from "h3"; -import type { NitroEventHandler } from "./handler"; +import type { Hookable } from "hookable"; import type { PresetName } from "nitro/presets"; +import type { Unimport } from "unimport"; +import type { Storage } from "unstorage"; import type { NitroConfig, NitroOptions } from "./config"; +import type { NitroEventHandler } from "./handler"; import type { NitroHooks } from "./hooks"; import type { PrerenderRoute } from "./prerender"; diff --git a/src/types/preset.ts b/src/types/preset.ts index 66463aee54..9f9744f03a 100644 --- a/src/types/preset.ts +++ b/src/types/preset.ts @@ -1,6 +1,6 @@ +import type { DateString } from "compatx"; import type { ProviderName } from "std-env"; import type { NitroConfig } from "./config"; -import type { DateString } from "compatx"; export type NitroPreset = NitroConfig | (() => NitroConfig); diff --git a/src/types/rollup.ts b/src/types/rollup.ts index 1a02404664..206e0b768e 100644 --- a/src/types/rollup.ts +++ b/src/types/rollup.ts @@ -1,7 +1,7 @@ -import type { Loader as ESBuildLoader } from "esbuild"; import type { FilterPattern } from "@rollup/pluginutils"; -import type { TransformOptions as ESBuildTransformOptions } from "esbuild"; import type { NodeFileTraceOptions } from "@vercel/nft"; +import type { Loader as ESBuildLoader } from "esbuild"; +import type { TransformOptions as ESBuildTransformOptions } from "esbuild"; import type { InputOptions as RollupInputOptions, OutputOptions as RollupOutputOptions, diff --git a/src/types/route-rules.ts b/src/types/route-rules.ts index 3ebcfd9668..53b788763b 100644 --- a/src/types/route-rules.ts +++ b/src/types/route-rules.ts @@ -1,5 +1,5 @@ import type { ProxyOptions, RouterMethod } from "h3"; -import type { IntRange, ExcludeFunctions } from "./_utils"; +import type { ExcludeFunctions, IntRange } from "./_utils"; import type { CachedEventHandlerOptions } from "./runtime"; export type HTTPStatusCode = IntRange<100, 600>; diff --git a/src/types/runtime/nitro.ts b/src/types/runtime/nitro.ts index 50157efc09..fc176c77d5 100644 --- a/src/types/runtime/nitro.ts +++ b/src/types/runtime/nitro.ts @@ -1,4 +1,4 @@ -import type { H3Event, AppOptions, App as H3App, Router } from "h3"; +import type { AppOptions, App as H3App, H3Event, Router } from "h3"; import type { Hookable } from "hookable"; import type { createCall, diff --git a/test/fixture/types.ts b/test/fixture/types.ts index 66462de947..e19d3fb1a9 100644 --- a/test/fixture/types.ts +++ b/test/fixture/types.ts @@ -1,9 +1,13 @@ import { expectTypeOf } from "expect-type"; -import { describe, it } from "vitest"; -import { EventHandler, EventHandlerRequest, defineEventHandler } from "h3"; -import type { $Fetch } from "nitro/types"; +import { + type EventHandler, + type EventHandlerRequest, + defineEventHandler, +} from "h3"; import { defineNitroConfig } from "nitro/config"; +import type { $Fetch } from "nitro/types"; import type { Serialize, Simplify } from "nitro/types"; +import { describe, it } from "vitest"; interface TestResponse { message: string; diff --git a/test/presets/aws-lambda.test.ts b/test/presets/aws-lambda.test.ts index 5a249ff67c..2717fedd32 100644 --- a/test/presets/aws-lambda.test.ts +++ b/test/presets/aws-lambda.test.ts @@ -1,7 +1,7 @@ +import type { APIGatewayProxyEvent, APIGatewayProxyEventV2 } from "aws-lambda"; +import destr from "destr"; import { resolve } from "pathe"; import { describe } from "vitest"; -import destr from "destr"; -import type { APIGatewayProxyEvent, APIGatewayProxyEventV2 } from "aws-lambda"; import { setupTest, testNitro } from "../tests"; describe("nitro:preset:aws-lambda", async () => { diff --git a/test/presets/azure.test.ts b/test/presets/azure.test.ts index 30e66ab5a0..cac5e3c1df 100644 --- a/test/presets/azure.test.ts +++ b/test/presets/azure.test.ts @@ -1,8 +1,8 @@ -import { promises as fsp, existsSync } from "node:fs"; -import { resolve } from "pathe"; -import { describe, it, expect } from "vitest"; +import { existsSync, promises as fsp } from "node:fs"; import { execa } from "execa"; import { getRandomPort, waitForPort } from "get-port-please"; +import { resolve } from "pathe"; +import { describe, expect, it } from "vitest"; import { setupTest, testNitro } from "../tests"; describe( diff --git a/test/presets/bun.test.ts b/test/presets/bun.test.ts index 1b98380670..95745eca43 100644 --- a/test/presets/bun.test.ts +++ b/test/presets/bun.test.ts @@ -1,7 +1,7 @@ -import { resolve } from "pathe"; -import { describe } from "vitest"; import { execa, execaCommandSync } from "execa"; import { getRandomPort, waitForPort } from "get-port-please"; +import { resolve } from "pathe"; +import { describe } from "vitest"; import { setupTest, testNitro } from "../tests"; const hasBun = diff --git a/test/presets/cloudflare-module.test.ts b/test/presets/cloudflare-module.test.ts index 5856100e1c..c1f1842edc 100644 --- a/test/presets/cloudflare-module.test.ts +++ b/test/presets/cloudflare-module.test.ts @@ -1,7 +1,7 @@ -import { resolve } from "pathe"; import { Miniflare } from "miniflare"; -import { describe } from "vitest"; +import { resolve } from "pathe"; import { Response as _Response } from "undici"; +import { describe } from "vitest"; import { setupTest, testNitro } from "../tests"; diff --git a/test/presets/cloudflare-pages.test.ts b/test/presets/cloudflare-pages.test.ts index c6432cccc2..b5b364e2f5 100644 --- a/test/presets/cloudflare-pages.test.ts +++ b/test/presets/cloudflare-pages.test.ts @@ -1,8 +1,8 @@ import { promises as fsp } from "node:fs"; -import { resolve } from "pathe"; import { Miniflare } from "miniflare"; -import { describe, it, expect } from "vitest"; +import { resolve } from "pathe"; import { Response as _Response } from "undici"; +import { describe, expect, it } from "vitest"; import { isWindows } from "std-env"; import { setupTest, testNitro } from "../tests"; diff --git a/test/presets/cloudflare-worker.test.ts b/test/presets/cloudflare-worker.test.ts index 7423e77aaf..7c2a587845 100644 --- a/test/presets/cloudflare-worker.test.ts +++ b/test/presets/cloudflare-worker.test.ts @@ -1,5 +1,5 @@ -import { resolve } from "pathe"; import { Miniflare } from "miniflare"; +import { resolve } from "pathe"; import { describe } from "vitest"; import { setupTest, testNitro } from "../tests"; diff --git a/test/presets/deno-server.test.ts b/test/presets/deno-server.test.ts index 5afdccbb33..650c9433f8 100644 --- a/test/presets/deno-server.test.ts +++ b/test/presets/deno-server.test.ts @@ -1,7 +1,7 @@ -import { resolve } from "pathe"; -import { describe } from "vitest"; import { execa, execaCommandSync } from "execa"; import { getRandomPort, waitForPort } from "get-port-please"; +import { resolve } from "pathe"; +import { describe } from "vitest"; import { setupTest, testNitro } from "../tests"; const hasDeno = diff --git a/test/presets/netlify-legacy.test.ts b/test/presets/netlify-legacy.test.ts index 24f32b76f2..bbd68c48f2 100644 --- a/test/presets/netlify-legacy.test.ts +++ b/test/presets/netlify-legacy.test.ts @@ -1,8 +1,8 @@ import { promises as fsp } from "node:fs"; -import { resolve } from "pathe"; +import type { APIGatewayEvent, Handler } from "aws-lambda"; import destr from "destr"; -import { describe, it, expect } from "vitest"; -import { Handler, APIGatewayEvent } from "aws-lambda"; +import { resolve } from "pathe"; +import { describe, expect, it } from "vitest"; import { getPresetTmpDir, setupTest, testNitro } from "../tests"; describe("nitro:preset:netlify-legacy", async () => { diff --git a/test/presets/netlify.test.ts b/test/presets/netlify.test.ts index 053fb96bf0..7ed26707e8 100644 --- a/test/presets/netlify.test.ts +++ b/test/presets/netlify.test.ts @@ -1,7 +1,7 @@ import { promises as fsp } from "node:fs"; -import { resolve } from "pathe"; -import { describe, it, expect } from "vitest"; import type { Context } from "@netlify/functions"; +import { resolve } from "pathe"; +import { describe, expect, it } from "vitest"; import { getPresetTmpDir, setupTest, testNitro } from "../tests"; describe("nitro:preset:netlify", async () => { diff --git a/test/presets/nitro-dev.test.ts b/test/presets/nitro-dev.test.ts index 3922586a01..0e98ed7c91 100644 --- a/test/presets/nitro-dev.test.ts +++ b/test/presets/nitro-dev.test.ts @@ -1,6 +1,6 @@ -import { describe, it, expect } from "vitest"; -import { isCI } from "std-env"; import type { OpenAPI3 } from "openapi-typescript"; +import { isCI } from "std-env"; +import { describe, expect, it } from "vitest"; import { setupTest, testNitro } from "../tests"; describe.skipIf(isCI)("nitro:preset:nitro-dev", async () => { diff --git a/test/presets/node.test.ts b/test/presets/node.test.ts index 63c8cffc49..01122dd155 100644 --- a/test/presets/node.test.ts +++ b/test/presets/node.test.ts @@ -1,8 +1,8 @@ import { existsSync } from "node:fs"; import { resolve } from "pathe"; -import { describe, it, expect } from "vitest"; import { isWindows } from "std-env"; -import { startServer, setupTest, testNitro } from "../tests"; +import { describe, expect, it } from "vitest"; +import { setupTest, startServer, testNitro } from "../tests"; describe("nitro:preset:node-listener", async () => { const ctx = await setupTest("node-listener"); diff --git a/test/presets/static.test.ts b/test/presets/static.test.ts index 6301d9f462..579e43a722 100644 --- a/test/presets/static.test.ts +++ b/test/presets/static.test.ts @@ -1,6 +1,6 @@ import fsp from "node:fs/promises"; import { resolve } from "pathe"; -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { setupTest } from "../tests"; describe("nitro:preset:static", async () => { diff --git a/test/presets/vercel-edge.test.ts b/test/presets/vercel-edge.test.ts index 44d3b2e792..95a3baf0d6 100644 --- a/test/presets/vercel-edge.test.ts +++ b/test/presets/vercel-edge.test.ts @@ -1,6 +1,6 @@ import { promises as fsp } from "node:fs"; -import { resolve } from "pathe"; import { EdgeRuntime } from "edge-runtime"; +import { resolve } from "pathe"; import { isWindows } from "std-env"; import { describeIf, setupTest, testNitro } from "../tests"; diff --git a/test/presets/vercel.test.ts b/test/presets/vercel.test.ts index b71f32e2a8..31c5691b0d 100644 --- a/test/presets/vercel.test.ts +++ b/test/presets/vercel.test.ts @@ -1,6 +1,6 @@ import { promises as fsp } from "node:fs"; import { resolve } from "pathe"; -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { setupTest, startServer, testNitro } from "../tests"; describe("nitro:preset:vercel", async () => { diff --git a/test/presets/winterjs.test.ts b/test/presets/winterjs.test.ts index d1b2484df1..8ab0d24451 100644 --- a/test/presets/winterjs.test.ts +++ b/test/presets/winterjs.test.ts @@ -1,6 +1,6 @@ -import { describe } from "vitest"; import { execa, execaCommandSync } from "execa"; -import { waitForPort, getRandomPort } from "get-port-please"; +import { getRandomPort, waitForPort } from "get-port-please"; +import { describe } from "vitest"; import { setupTest, testNitro } from "../tests"; const hasWasmer = false; diff --git a/test/scripts/gen-fixture-types.ts b/test/scripts/gen-fixture-types.ts index 80175cf642..a59c815e54 100644 --- a/test/scripts/gen-fixture-types.ts +++ b/test/scripts/gen-fixture-types.ts @@ -1,6 +1,6 @@ import { fileURLToPath } from "mlly"; -import { resolve } from "pathe"; import { createNitro, writeTypes } from "nitro/core"; +import { resolve } from "pathe"; import { scanHandlers } from "../../src/core/scan"; const prepare = async () => { diff --git a/test/tests.ts b/test/tests.ts index e05e625568..4f13445ada 100644 --- a/test/tests.ts +++ b/test/tests.ts @@ -1,25 +1,25 @@ -import { tmpdir } from "node:os"; -import type { RequestListener } from "node:http"; import { promises as fsp } from "node:fs"; -import { join, resolve } from "pathe"; -import { listen, Listener } from "listhen"; +import type { RequestListener } from "node:http"; +import { tmpdir } from "node:os"; +import { type DateString, formatDate } from "compatx"; +import { defu } from "defu"; import destr from "destr"; -import { fetch, FetchOptions } from "ofetch"; -import { expect, it, afterAll, beforeAll, describe } from "vitest"; +import { type Listener, listen } from "listhen"; import { fileURLToPath } from "mlly"; -import { joinURL } from "ufo"; -import { defu } from "defu"; import { - createNitro, build, - prepare, copyPublicAssets, - prerender, createDevServer, + createNitro, + prepare, + prerender, } from "nitro/core"; import type { Nitro, NitroConfig } from "nitro/types"; -import { nodeMajorVersion, isWindows } from "std-env"; -import { type DateString, formatDate } from "compatx"; +import { type FetchOptions, fetch } from "ofetch"; +import { join, resolve } from "pathe"; +import { isWindows, nodeMajorVersion } from "std-env"; +import { joinURL } from "ufo"; +import { afterAll, beforeAll, describe, expect, it } from "vitest"; export interface Context { preset: string; diff --git a/test/unit/azure.utils.test.ts b/test/unit/azure.utils.test.ts index 6a3b251a39..984e2f8975 100644 --- a/test/unit/azure.utils.test.ts +++ b/test/unit/azure.utils.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { getAzureParsedCookiesFromHeaders } from "../../src/runtime/internal/utils.azure"; describe("getAzureParsedCookiesFromHeaders", () => { diff --git a/test/unit/externals.test.ts b/test/unit/externals.test.ts index 47d8008cfb..ee2377ff6c 100644 --- a/test/unit/externals.test.ts +++ b/test/unit/externals.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { applyProductionCondition } from "../../src/rollup/plugins/externals"; describe("externals:applyProductionCondition", () => { diff --git a/test/unit/utils.env.test.ts b/test/unit/utils.env.test.ts index f807cd9a23..f4375a1c4c 100644 --- a/test/unit/utils.env.test.ts +++ b/test/unit/utils.env.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { applyEnv } from "../../src/runtime/internal/utils.env"; describe("env utils", () => { From 0bd61f11b45fe8565931ec687cab408d325d8db4 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:26:37 +0200 Subject: [PATCH 10/32] chore: update v2/main --- .github/workflows/ci.yml | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89d130247e..8ed83c86ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,10 +3,10 @@ name: ci on: push: branches: - - v2 + - main pull_request: branches: - - v2 + - main jobs: lint: diff --git a/README.md b/README.md index 337beb1fde..de3af11edd 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Create web servers that run anywhere! 📖 [**documentation**](https://nitro.unjs.io) > [!NOTE] -> You are on the v2 branch. Check [main branch](https://github.com/unjs/nitro/tree/main) for v3 development tree. +> You are on the v3 development branch. Check [here](https://github.com/unjs/nitro/pull/2521/) for status. ## Contribution From 1c220ef4dc461910cd89b16d22f0206a20e42993 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:27:02 +0200 Subject: [PATCH 11/32] chore: manually apply changes from #2524 to main --- src/core/config/defaults.ts | 4 ++-- src/core/config/resolvers/open-api.ts | 8 +++++--- src/core/nitro.ts | 6 ++++-- src/presets/_nitro/runtime/nitro-dev.ts | 8 +++++--- src/presets/_nitro/runtime/nitro-prerenderer.ts | 2 +- src/presets/aws-lambda/runtime/aws-lambda-streaming.ts | 2 +- src/presets/aws-lambda/runtime/aws-lambda.ts | 3 +-- src/presets/azure/runtime/azure-functions.ts | 6 ++++-- src/presets/azure/runtime/azure-swa.ts | 6 ++++-- src/presets/bun/runtime/bun.ts | 2 +- src/presets/cloudflare/runtime/cloudflare-module.ts | 4 ++-- src/presets/cloudflare/runtime/cloudflare-pages.ts | 3 +-- src/presets/cloudflare/runtime/cloudflare-worker.ts | 2 +- src/presets/deno/preset.ts | 3 --- src/presets/deno/runtime/deno-server.ts | 2 +- src/presets/netlify/legacy/preset.ts | 3 --- src/presets/netlify/legacy/runtime/netlify-lambda.ts | 3 +-- src/presets/netlify/legacy/runtime/netlify.ts | 2 +- src/presets/netlify/preset.ts | 3 --- src/presets/netlify/runtime/netlify.ts | 3 +-- src/presets/node/runtime/cluster.ts | 6 ++++-- src/presets/node/runtime/node-listener.ts | 6 ++++-- src/presets/node/runtime/node-server.ts | 8 +++++--- src/presets/stormkit/runtime/stormkit.ts | 2 +- src/presets/winterjs/runtime/winterjs.ts | 2 +- src/rollup/plugins/handlers.ts | 4 +++- tsconfig.json | 1 + 27 files changed, 55 insertions(+), 49 deletions(-) diff --git a/src/core/config/defaults.ts b/src/core/config/defaults.ts index 47e178e840..b774cc1998 100644 --- a/src/core/config/defaults.ts +++ b/src/core/config/defaults.ts @@ -1,6 +1,7 @@ import { runtimeDir } from "nitro/runtime/meta"; import type { NitroConfig } from "nitro/types"; import { resolve } from "pathe"; +import { join } from "pathe"; import { isDebug, isTest } from "std-env"; export const NitroDefaults: NitroConfig = { @@ -58,8 +59,7 @@ export const NitroDefaults: NitroConfig = { baseURL: process.env.NITRO_APP_BASE_URL || "/", handlers: [], devHandlers: [], - // errorHandler: "nitro/runtime/internal/error", - errorHandler: "#internal/nitro/internal/error", + errorHandler: join(runtimeDir, "internal/error"), routeRules: {}, prerender: { autoSubfolderIndex: true, diff --git a/src/core/config/resolvers/open-api.ts b/src/core/config/resolvers/open-api.ts index 7d406f2ade..187f94bf07 100644 --- a/src/core/config/resolvers/open-api.ts +++ b/src/core/config/resolvers/open-api.ts @@ -1,18 +1,20 @@ +import { runtimeDir } from "nitro/runtime/meta"; import type { NitroOptions } from "nitro/types"; +import { join } from "pathe"; export async function resolveOpenAPIOptions(options: NitroOptions) { if (options.dev && options.experimental.openAPI) { options.handlers.push({ route: "/_nitro/openapi.json", - handler: "nitro/runtime/internal/routes/openapi", + handler: join(runtimeDir, "internal/routes/openapi"), }); options.handlers.push({ route: "/_nitro/scalar", - handler: "nitro/runtime/internal/routes/scalar", + handler: join(runtimeDir, "internal/routes/scalar"), }); options.handlers.push({ route: "/_nitro/swagger", - handler: "nitro/runtime/internal/routes/swagger", + handler: join(runtimeDir, "internal/routes/swagger"), }); } } diff --git a/src/core/nitro.ts b/src/core/nitro.ts index 372680a6cd..00022655da 100644 --- a/src/core/nitro.ts +++ b/src/core/nitro.ts @@ -1,11 +1,13 @@ import { consola } from "consola"; import { createDebugger, createHooks } from "hookable"; +import { runtimeDir } from "nitro/runtime/meta"; import type { LoadConfigOptions, Nitro, NitroConfig, NitroDynamicConfig, } from "nitro/types"; +import { join } from "pathe"; import { createUnimport } from "unimport"; import { loadOptions } from "./config/loader"; import { updateNitroConfig } from "./config/update"; @@ -48,10 +50,10 @@ export async function createNitro( // Debug and timing if (nitro.options.debug) { createDebugger(nitro.hooks, { tag: "nitro" }); - nitro.options.plugins.push("nitro/runtime/internal/debug"); + nitro.options.plugins.push(join(runtimeDir, "internal/debug")); } if (nitro.options.timing) { - nitro.options.plugins.push("nitro/runtime/internal/timing"); + nitro.options.plugins.push(join(runtimeDir, "internal/timing")); } // Logger diff --git a/src/presets/_nitro/runtime/nitro-dev.ts b/src/presets/_nitro/runtime/nitro-dev.ts index a778f3b7d9..cdfaf64aad 100644 --- a/src/presets/_nitro/runtime/nitro-dev.ts +++ b/src/presets/_nitro/runtime/nitro-dev.ts @@ -1,8 +1,10 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { runTask } from "nitro/runtime/internal/task"; -import { startScheduleRunner } from "nitro/runtime/internal/task"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { runTask } from "nitro/runtime"; +import { + startScheduleRunner, + trapUnhandledNodeErrors, +} from "nitro/runtime/internal"; import { scheduledTasks, tasks } from "#nitro-internal-virtual/tasks"; import { mkdirSync } from "node:fs"; diff --git a/src/presets/_nitro/runtime/nitro-prerenderer.ts b/src/presets/_nitro/runtime/nitro-prerenderer.ts index dd2330f41d..dd4648dbb6 100644 --- a/src/presets/_nitro/runtime/nitro-prerenderer.ts +++ b/src/presets/_nitro/runtime/nitro-prerenderer.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { trapUnhandledNodeErrors } from "nitro/runtime/internal"; const nitroApp = useNitroApp(); diff --git a/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts b/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts index 4e9965480e..3f00195ae0 100644 --- a/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts +++ b/src/presets/aws-lambda/runtime/aws-lambda-streaming.ts @@ -8,7 +8,7 @@ import { useNitroApp } from "nitro/runtime"; import { normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingHeaders, -} from "nitro/runtime/internal/utils.lambda"; +} from "nitro/runtime/internal"; import { withQuery } from "ufo"; declare global { diff --git a/src/presets/aws-lambda/runtime/aws-lambda.ts b/src/presets/aws-lambda/runtime/aws-lambda.ts index 67cbe740c0..bdd002baab 100644 --- a/src/presets/aws-lambda/runtime/aws-lambda.ts +++ b/src/presets/aws-lambda/runtime/aws-lambda.ts @@ -7,13 +7,12 @@ import type { } from "aws-lambda"; import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { normalizeCookieHeader } from "nitro/runtime/internal/utils"; import { normalizeCookieHeader, normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingBody, normalizeLambdaOutgoingHeaders, -} from "nitro/runtime/internal/utils.lambda"; +} from "nitro/runtime/internal"; import { withQuery } from "ufo"; const nitroApp = useNitroApp(); diff --git a/src/presets/azure/runtime/azure-functions.ts b/src/presets/azure/runtime/azure-functions.ts index 71be2849eb..23481cd98f 100644 --- a/src/presets/azure/runtime/azure-functions.ts +++ b/src/presets/azure/runtime/azure-functions.ts @@ -1,7 +1,9 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { getAzureParsedCookiesFromHeaders } from "nitro/runtime/internal/utils.azure"; -import { normalizeLambdaOutgoingHeaders } from "nitro/runtime/internal/utils.lambda"; +import { + getAzureParsedCookiesFromHeaders, + normalizeLambdaOutgoingHeaders, +} from "nitro/runtime/internal"; import type { HttpRequest, HttpResponse } from "@azure/functions"; diff --git a/src/presets/azure/runtime/azure-swa.ts b/src/presets/azure/runtime/azure-swa.ts index 5dc99f0a6e..4f291ea708 100644 --- a/src/presets/azure/runtime/azure-swa.ts +++ b/src/presets/azure/runtime/azure-swa.ts @@ -1,7 +1,9 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { getAzureParsedCookiesFromHeaders } from "nitro/runtime/internal/utils.azure"; -import { normalizeLambdaOutgoingHeaders } from "nitro/runtime/internal/utils.lambda"; +import { + getAzureParsedCookiesFromHeaders, + normalizeLambdaOutgoingHeaders, +} from "nitro/runtime/internal"; import type { HttpRequest, HttpResponse } from "@azure/functions"; import { parseURL } from "ufo"; diff --git a/src/presets/bun/runtime/bun.ts b/src/presets/bun/runtime/bun.ts index cf4b04b70c..10f70306ae 100644 --- a/src/presets/bun/runtime/bun.ts +++ b/src/presets/bun/runtime/bun.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { startScheduleRunner } from "nitro/runtime/internal/task"; +import { startScheduleRunner } from "nitro/runtime/internal"; import type {} from "bun"; import wsAdapter from "crossws/adapters/bun"; diff --git a/src/presets/cloudflare/runtime/cloudflare-module.ts b/src/presets/cloudflare/runtime/cloudflare-module.ts index d3a0e1a628..3b552f55b5 100644 --- a/src/presets/cloudflare/runtime/cloudflare-module.ts +++ b/src/presets/cloudflare/runtime/cloudflare-module.ts @@ -1,8 +1,8 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; -import { runCronTasks } from "nitro/runtime/internal/task"; -import { requestHasBody } from "nitro/runtime/internal/utils"; +import { runCronTasks } from "nitro/runtime/internal"; +import { requestHasBody } from "nitro/runtime/internal"; import { getPublicAssetMeta } from "#nitro-internal-virtual/public-assets"; import { diff --git a/src/presets/cloudflare/runtime/cloudflare-pages.ts b/src/presets/cloudflare/runtime/cloudflare-pages.ts index e94e81e1a7..9ac78d459f 100644 --- a/src/presets/cloudflare/runtime/cloudflare-pages.ts +++ b/src/presets/cloudflare/runtime/cloudflare-pages.ts @@ -1,7 +1,6 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { runCronTasks } from "nitro/runtime/internal/task"; -import { requestHasBody } from "nitro/runtime/internal/utils"; +import { requestHasBody, runCronTasks } from "nitro/runtime/internal"; import { isPublicAssetURL } from "#nitro-internal-virtual/public-assets"; import type { diff --git a/src/presets/cloudflare/runtime/cloudflare-worker.ts b/src/presets/cloudflare/runtime/cloudflare-worker.ts index 3dc7c99372..40b285ce99 100644 --- a/src/presets/cloudflare/runtime/cloudflare-worker.ts +++ b/src/presets/cloudflare/runtime/cloudflare-worker.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; -import { requestHasBody } from "nitro/runtime/internal/utils"; +import { requestHasBody } from "nitro/runtime/internal"; import { getPublicAssetMeta } from "#nitro-internal-virtual/public-assets"; import { diff --git a/src/presets/deno/preset.ts b/src/presets/deno/preset.ts index 051abfec67..5737ce0157 100644 --- a/src/presets/deno/preset.ts +++ b/src/presets/deno/preset.ts @@ -20,9 +20,6 @@ const denoDeploy = defineNitroPreset( deploy: "cd ./ && deployctl deploy --project= server/index.ts", }, - unenv: { - polyfill: ["nitro/runtime/internal/polyfill/deno-env"], - }, rollupConfig: { preserveEntrySignatures: false, external: (id) => id.startsWith("https://"), diff --git a/src/presets/deno/runtime/deno-server.ts b/src/presets/deno/runtime/deno-server.ts index fcbb1282d5..6613a5ca6c 100644 --- a/src/presets/deno/runtime/deno-server.ts +++ b/src/presets/deno/runtime/deno-server.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; -import { startScheduleRunner } from "nitro/runtime/internal/task"; +import { startScheduleRunner } from "nitro/runtime/internal"; import type { Deno as _Deno } from "@deno/types"; import wsAdapter from "crossws/adapters/deno"; diff --git a/src/presets/netlify/legacy/preset.ts b/src/presets/netlify/legacy/preset.ts index 62e3c2bcc3..b6885bfb1f 100644 --- a/src/presets/netlify/legacy/preset.ts +++ b/src/presets/netlify/legacy/preset.ts @@ -91,9 +91,6 @@ const netlifyEdge = defineNitroPreset( format: "esm", }, }, - unenv: { - polyfill: ["nitro/runtime/internal/polyfill/deno-env"], - }, hooks: { "rollup:before": (nitro: Nitro) => { deprecateSWR(nitro); diff --git a/src/presets/netlify/legacy/runtime/netlify-lambda.ts b/src/presets/netlify/legacy/runtime/netlify-lambda.ts index b0d886a433..a1864e6319 100644 --- a/src/presets/netlify/legacy/runtime/netlify-lambda.ts +++ b/src/presets/netlify/legacy/runtime/netlify-lambda.ts @@ -1,12 +1,11 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { normalizeCookieHeader } from "nitro/runtime/internal/utils"; import { normalizeCookieHeader, normalizeLambdaIncomingHeaders, normalizeLambdaOutgoingBody, normalizeLambdaOutgoingHeaders, -} from "nitro/runtime/internal/utils.lambda"; +} from "nitro/runtime/internal"; import type { HandlerContext, diff --git a/src/presets/netlify/legacy/runtime/netlify.ts b/src/presets/netlify/legacy/runtime/netlify.ts index d7666e41c5..7f738aefec 100644 --- a/src/presets/netlify/legacy/runtime/netlify.ts +++ b/src/presets/netlify/legacy/runtime/netlify.ts @@ -1,5 +1,5 @@ import "#nitro-internal-pollyfills"; -import { getRouteRulesForPath } from "nitro/runtime/internal/route-rules"; +import { getRouteRulesForPath } from "nitro/runtime/internal"; import type { Handler } from "@netlify/functions/dist/main"; import { withQuery } from "ufo"; diff --git a/src/presets/netlify/preset.ts b/src/presets/netlify/preset.ts index 967d004c16..71e0089dc8 100644 --- a/src/presets/netlify/preset.ts +++ b/src/presets/netlify/preset.ts @@ -74,9 +74,6 @@ const netlifyEdge = defineNitroPreset( format: "esm", }, }, - unenv: { - polyfill: ["nitro/runtime/internal/polyfill/deno-env"], - }, hooks: { async compiled(nitro: Nitro) { await writeHeaders(nitro); diff --git a/src/presets/netlify/runtime/netlify.ts b/src/presets/netlify/runtime/netlify.ts index 9ed3f4db6e..99b978a44d 100644 --- a/src/presets/netlify/runtime/netlify.ts +++ b/src/presets/netlify/runtime/netlify.ts @@ -1,11 +1,10 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { getRouteRulesForPath } from "nitro/runtime/internal/route-rules"; import { getRouteRulesForPath, joinHeaders, normalizeCookieHeader, -} from "nitro/runtime/internal/utils"; +} from "nitro/runtime/internal"; const nitroApp = useNitroApp(); diff --git a/src/presets/node/runtime/cluster.ts b/src/presets/node/runtime/cluster.ts index 29c0779177..d7fee6e9e6 100644 --- a/src/presets/node/runtime/cluster.ts +++ b/src/presets/node/runtime/cluster.ts @@ -1,7 +1,9 @@ import cluster from "node:cluster"; import os from "node:os"; -import { getGracefulShutdownConfig } from "nitro/runtime/internal/shutdown"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { + getGracefulShutdownConfig, + trapUnhandledNodeErrors, +} from "nitro/runtime/internal"; function runMaster() { const numberOfWorkers = diff --git a/src/presets/node/runtime/node-listener.ts b/src/presets/node/runtime/node-listener.ts index dce81fe781..7f11d6d16d 100644 --- a/src/presets/node/runtime/node-listener.ts +++ b/src/presets/node/runtime/node-listener.ts @@ -1,8 +1,10 @@ import "#nitro-internal-pollyfills"; import { toNodeListener } from "h3"; import { useNitroApp } from "nitro/runtime"; -import { startScheduleRunner } from "nitro/runtime/internal/task"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { + startScheduleRunner, + trapUnhandledNodeErrors, +} from "nitro/runtime/internal"; const nitroApp = useNitroApp(); diff --git a/src/presets/node/runtime/node-server.ts b/src/presets/node/runtime/node-server.ts index cb197908be..77c6470ec9 100644 --- a/src/presets/node/runtime/node-server.ts +++ b/src/presets/node/runtime/node-server.ts @@ -7,9 +7,11 @@ import destr from "destr"; import { toNodeListener } from "h3"; import { useNitroApp } from "nitro/runtime"; import { useRuntimeConfig } from "nitro/runtime"; -import { setupGracefulShutdown } from "nitro/runtime/internal/shutdown"; -import { startScheduleRunner } from "nitro/runtime/internal/task"; -import { trapUnhandledNodeErrors } from "nitro/runtime/internal/utils"; +import { + setupGracefulShutdown, + startScheduleRunner, + trapUnhandledNodeErrors, +} from "nitro/runtime/internal"; const cert = process.env.NITRO_SSL_CERT; const key = process.env.NITRO_SSL_KEY; diff --git a/src/presets/stormkit/runtime/stormkit.ts b/src/presets/stormkit/runtime/stormkit.ts index df68921e38..01cd8958ac 100644 --- a/src/presets/stormkit/runtime/stormkit.ts +++ b/src/presets/stormkit/runtime/stormkit.ts @@ -1,6 +1,6 @@ import "#nitro-internal-pollyfills"; import { useNitroApp } from "nitro/runtime"; -import { normalizeLambdaOutgoingBody } from "nitro/runtime/internal/utils.lambda"; +import { normalizeLambdaOutgoingBody } from "nitro/runtime/internal"; import type { Handler } from "aws-lambda"; diff --git a/src/presets/winterjs/runtime/winterjs.ts b/src/presets/winterjs/runtime/winterjs.ts index f6a680fb57..c670b3023e 100644 --- a/src/presets/winterjs/runtime/winterjs.ts +++ b/src/presets/winterjs/runtime/winterjs.ts @@ -2,7 +2,7 @@ import "#nitro-internal-pollyfills"; import { toPlainHandler } from "h3"; import { useNitroApp } from "nitro/runtime"; -import { toBuffer } from "nitro/runtime/internal/utils"; +import { toBuffer } from "nitro/runtime/internal"; import { hasProtocol, joinURL } from "ufo"; // Types are reverse engineered from runtime diff --git a/src/rollup/plugins/handlers.ts b/src/rollup/plugins/handlers.ts index bf1ea2b72c..47fff2636e 100644 --- a/src/rollup/plugins/handlers.ts +++ b/src/rollup/plugins/handlers.ts @@ -1,5 +1,7 @@ +import { runtimeDir } from "nitro/runtime/meta"; import type { Nitro, NitroEventHandler, NitroRouteRules } from "nitro/types"; import { hash } from "ohash"; +import { join } from "pathe"; import { virtual } from "./virtual"; export function handlers(nitro: Nitro) { @@ -32,7 +34,7 @@ export function handlers(nitro: Nitro) { if (nitro.options.serveStatic) { handlers.unshift({ middleware: true, - handler: "nitro/runtime/internal/static", + handler: join(runtimeDir, "internal/static"), }); } if (nitro.options.renderer) { diff --git a/tsconfig.json b/tsconfig.json index c0c37afcef..bb579d2859 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,6 +25,7 @@ "nitro": ["./src/core"], // Runtime "nitro/runtime": ["./src/runtime"], + "nitro/runtime/internal": ["./src/runtime/internal"], // Runtime meta "nitro/runtime/meta": ["./runtime-meta"], // Kit From 7f21afc41254946cf7d5d4ec3c371e06ece1175a Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:40:13 +0200 Subject: [PATCH 12/32] chore: use `import type` for `_types.gen.ts` --- scripts/gen-presets.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gen-presets.ts b/scripts/gen-presets.ts index de6cedf617..2998b70383 100644 --- a/scripts/gen-presets.ts +++ b/scripts/gen-presets.ts @@ -91,7 +91,7 @@ writeFileSync( ${presetsWithType .map( (preset) => - `import { PresetOptions as ${pascalCase( + `import type { PresetOptions as ${pascalCase( preset )}Options } from "./${preset}/preset";` ) From a45a10adaa130323cfc68bf872cbd7928308a466 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:40:16 +0200 Subject: [PATCH 13/32] chore: fix build --- build.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.config.ts b/build.config.ts index 6e0f4ccbdf..d8c12cd39b 100644 --- a/build.config.ts +++ b/build.config.ts @@ -42,6 +42,7 @@ export default defineBuildConfig({ { input: "src/types/index.ts" }, ], alias: { + nitro: "nitro", "nitro/meta": resolve(srcDir, "../meta.ts"), "nitro/runtime/meta": resolve(srcDir, "../runtime-meta.mjs"), ...Object.fromEntries( From f7e1c46d529abe6461efe6d09b0e09ca3830a6d8 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:41:45 +0200 Subject: [PATCH 14/32] feat: enable async context by default --- src/core/config/defaults.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/config/defaults.ts b/src/core/config/defaults.ts index b774cc1998..710c9179cc 100644 --- a/src/core/config/defaults.ts +++ b/src/core/config/defaults.ts @@ -23,7 +23,9 @@ export const NitroDefaults: NitroConfig = { }, // Features - experimental: {}, + experimental: { + asyncContext: true, + }, future: {}, storage: {}, devStorage: {}, From ba3ee3c4cb0cdc1e03f5750436a65698c175a674 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:43:37 +0200 Subject: [PATCH 15/32] refactor!: remove webpack dynamic require plugin --- src/rollup/config.ts | 17 ---- src/rollup/plugins/dynamic-require.ts | 128 -------------------------- 2 files changed, 145 deletions(-) delete mode 100644 src/rollup/plugins/dynamic-require.ts diff --git a/src/rollup/config.ts b/src/rollup/config.ts index c332226ddf..4badb0c22d 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -26,7 +26,6 @@ import unimportPlugin from "unimport/unplugin"; import { rollup as unwasm } from "unwasm/plugin"; import { appConfig } from "./plugins/app-config"; import { database } from "./plugins/database"; -import { dynamicRequire } from "./plugins/dynamic-require"; import { esbuild } from "./plugins/esbuild"; import { externals } from "./plugins/externals"; import { handlers } from "./plugins/handlers"; @@ -288,22 +287,6 @@ export const getRollupConfig = (nitro: Nitro): RollupConfig => { }) ); - // Dynamic Require Support - rollupConfig.plugins.push( - dynamicRequire({ - dir: resolve(nitro.options.buildDir, "dist/server"), - inline: - nitro.options.node === false || nitro.options.inlineDynamicImports, - ignore: [ - "client.manifest.mjs", - "server.js", - "server.cjs", - "server.mjs", - "server.manifest.mjs", - ], - }) - ); - // Server assets rollupConfig.plugins.push(serverAssets(nitro)); diff --git a/src/rollup/plugins/dynamic-require.ts b/src/rollup/plugins/dynamic-require.ts deleted file mode 100644 index d5548c4057..0000000000 --- a/src/rollup/plugins/dynamic-require.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { pathToFileURL } from "node:url"; -import { globby } from "globby"; -import { genSafeVariableName } from "knitwork"; -import { resolve } from "pathe"; -import type { Plugin } from "rollup"; - -const PLUGIN_NAME = "dynamic-require"; -const HELPER_DYNAMIC = `\0${PLUGIN_NAME}.mjs`; -const DYNAMIC_REQUIRE_RE = /import\("\.\/" ?\+(.*)\).then/g; - -interface Options { - dir: string; - inline: boolean; - ignore: string[]; - outDir?: string; - prefix?: string; -} - -interface Chunk { - id: string; - src: string; - name: string; - meta?: { - id?: string; - ids?: string[]; - moduleIds?: string[]; - }; -} - -interface TemplateContext { - chunks: Chunk[]; -} - -export function dynamicRequire({ dir, ignore, inline }: Options): Plugin { - return { - name: PLUGIN_NAME, - transform(code: string, _id: string) { - return { - code: code.replace( - DYNAMIC_REQUIRE_RE, - `import('${HELPER_DYNAMIC}').then(r => r.default || r).then(dynamicRequire => dynamicRequire($1)).then` - ), - map: null, - }; - }, - resolveId(id: string) { - return id === HELPER_DYNAMIC ? id : null; - }, - // TODO: Async chunk loading over network! - // renderDynamicImport () { - // return { - // left: 'fetch(', right: ')' - // } - // }, - async load(_id: string) { - if (_id !== HELPER_DYNAMIC) { - return null; - } - - // Scan chunks - let files = []; - try { - const wpManifest = resolve(dir, "./server.manifest.json"); - files = await import(pathToFileURL(wpManifest).href).then((r) => - Object.keys(r.files).filter((file) => !ignore.includes(file)) - ); - } catch { - files = await globby("**/*.{cjs,mjs,js}", { - cwd: dir, - absolute: false, - ignore, - }); - } - - const chunks = ( - await Promise.all( - files.map(async (id) => ({ - id, - src: resolve(dir, id).replace(/\\/g, "/"), - name: genSafeVariableName(id), - meta: await getWebpackChunkMeta(resolve(dir, id)), - })) - ) - ).filter((chunk) => chunk.meta) as Chunk[]; - - return inline ? TMPL_INLINE({ chunks }) : TMPL_LAZY({ chunks }); - }, - }; -} - -async function getWebpackChunkMeta(src: string) { - const chunk = await import(pathToFileURL(src).href).then( - (r) => r.default || r || {} - ); - const { id, ids, modules } = chunk; - if (!id && !ids) { - return null; // Not a webpack chunk - } - return { - id, - ids, - moduleIds: Object.keys(modules || {}), - }; -} - -function TMPL_INLINE({ chunks }: TemplateContext) { - return `${chunks - .map((i) => `import * as ${i.name} from '${i.src}'`) - .join("\n")} -const dynamicChunks = { - ${chunks.map((i) => ` ['${i.id}']: ${i.name}`).join(",\n")} -}; - -export default function dynamicRequire(id) { - return Promise.resolve(dynamicChunks[id]); -};`; -} - -function TMPL_LAZY({ chunks }: TemplateContext) { - return ` -const dynamicChunks = { -${chunks.map((i) => ` ['${i.id}']: () => import('${i.src}')`).join(",\n")} -}; - -export default function dynamicRequire(id) { - return dynamicChunks[id](); -};`; -} From 1fe7b89379ccb3d7c536ea9b201a0169c9122275 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Thu, 13 Jun 2024 23:57:47 +0200 Subject: [PATCH 16/32] ci: change tag to 3x --- scripts/release-nightly.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/release-nightly.sh b/scripts/release-nightly.sh index 4d06005906..362b52211b 100755 --- a/scripts/release-nightly.sh +++ b/scripts/release-nightly.sh @@ -31,8 +31,8 @@ fi # Release packages echo "Publishing main package..." -npm publish --access public --tolerate-republish --tag v3 +npm publish --access public --tolerate-republish --tag 3x echo "Publishing mirror package..." cd .mirror -npm publish --access public --tolerate-republish --tag v3 +npm publish --access public --tolerate-republish --tag 3x From b32e0831e3f7139ddae60476c149c9d8c7f7f42d Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 14 Jun 2024 00:27:11 +0200 Subject: [PATCH 17/32] refactor!: remove app config support (#2526) --- src/core/build/types.ts | 17 +------------ src/core/config/defaults.ts | 2 -- src/core/config/resolvers/imports.ts | 1 - src/core/config/resolvers/paths.ts | 14 ----------- src/presets/firebase/preset.ts | 5 ++-- .../firebase/runtime/firebase-gen-1.ts | 6 ++--- .../firebase/runtime/firebase-gen-2.ts | 5 ++-- src/rollup/config.ts | 4 --- src/rollup/plugins/app-config.ts | 25 ------------------- src/runtime/index.ts | 2 +- src/runtime/internal/config.ts | 18 ------------- src/types/config.ts | 7 ------ src/types/virtual/app-config.d.ts | 3 --- test/fixture/app.config.ts | 3 --- test/fixture/middleware/config.ts | 3 +-- test/fixture/routes/config.ts | 4 --- test/tests.ts | 12 --------- 17 files changed, 10 insertions(+), 121 deletions(-) delete mode 100644 src/rollup/plugins/app-config.ts delete mode 100644 src/types/virtual/app-config.d.ts delete mode 100644 test/fixture/app.config.ts diff --git a/src/core/build/types.ts b/src/core/build/types.ts index 95465b6f36..789f57252b 100644 --- a/src/core/build/types.ts +++ b/src/core/build/types.ts @@ -125,23 +125,8 @@ export async function writeTypes(nitro: Nitro) { const config = [ "// Generated by nitro", ` -// App Config -import type { Defu } from 'defu' - -${nitro.options.appConfigFiles - .map((file, index) => - genTypeImport(relative(typesDir, file).replace(/\.\w+$/, ""), [ - { name: "default", as: `appConfig${index}` }, - ]) - ) - .join("\n")} - -type UserAppConfig = Defu<{}, [${nitro.options.appConfigFiles - .map((_, index: number) => `typeof appConfig${index}`) - .join(", ")}]> - declare module "nitro/types" { - interface AppConfig extends UserAppConfig {}`, + `, nitro.options.typescript.generateRuntimeConfigTypes ? generateTypes( await resolveSchema( diff --git a/src/core/config/defaults.ts b/src/core/config/defaults.ts index 710c9179cc..e303d3a508 100644 --- a/src/core/config/defaults.ts +++ b/src/core/config/defaults.ts @@ -10,8 +10,6 @@ export const NitroDefaults: NitroConfig = { timing: isDebug, logLevel: isTest ? 1 : 3, runtimeConfig: { app: {}, nitro: {} }, - appConfig: {}, - appConfigFiles: [], // Dirs scanDirs: [], diff --git a/src/core/config/resolvers/imports.ts b/src/core/config/resolvers/imports.ts index c2cc5159ef..16a4908c14 100644 --- a/src/core/config/resolvers/imports.ts +++ b/src/core/config/resolvers/imports.ts @@ -72,7 +72,6 @@ function getNitroImportsPreset(): Preset[] { "defineRenderHandler", "defineRouteMeta", "getRouteRules", - "useAppConfig", "useEvent", "defineTask", "runTask", diff --git a/src/core/config/resolvers/paths.ts b/src/core/config/resolvers/paths.ts index 9154a1829f..389f8e0369 100644 --- a/src/core/config/resolvers/paths.ts +++ b/src/core/config/resolvers/paths.ts @@ -69,20 +69,6 @@ export async function resolvePathOptions(options: NitroOptions) { resolve(options.srcDir, dir) ); options.scanDirs = [...new Set(options.scanDirs)]; - - // Normalize app.config file paths - options.appConfigFiles ??= []; - options.appConfigFiles = options.appConfigFiles - .map((file) => _tryResolve(resolveNitroPath(file, options))) - .filter(Boolean) as string[]; - - // Detect app.config from scanDirs - for (const dir of options.scanDirs) { - const configFile = _tryResolve("app.config", dir); - if (configFile && !options.appConfigFiles.includes(configFile)) { - options.appConfigFiles.push(configFile); - } - } } function _tryResolve( diff --git a/src/presets/firebase/preset.ts b/src/presets/firebase/preset.ts index efd582027b..5d640f6203 100644 --- a/src/presets/firebase/preset.ts +++ b/src/presets/firebase/preset.ts @@ -30,8 +30,9 @@ const firebase = defineNitroPreset( // Using the gen 1 makes this preset backwards compatible for people already using it nitro.options.firebase = { gen: 1 }; } - nitro.options.appConfig.nitro = nitro.options.appConfig.nitro || {}; - nitro.options.appConfig.nitro.firebase = nitro.options.firebase; + + // Expose firebase config via runtimeConfig + nitro.options.runtimeConfig._firebase = nitro.options.firebase; // Replace __firebaseServerFunctionName__ to actual name in entries (rollupConfig.plugins as Plugin[]).unshift({ diff --git a/src/presets/firebase/runtime/firebase-gen-1.ts b/src/presets/firebase/runtime/firebase-gen-1.ts index fb15c53330..7c01de79fb 100644 --- a/src/presets/firebase/runtime/firebase-gen-1.ts +++ b/src/presets/firebase/runtime/firebase-gen-1.ts @@ -1,13 +1,11 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitro/runtime"; -import { useAppConfig } from "nitro/runtime"; - import functions from "firebase-functions"; import { toNodeListener } from "h3"; +import { useNitroApp, useRuntimeConfig } from "nitro/runtime"; const nitroApp = useNitroApp(); -const firebaseConfig = useAppConfig().nitro.firebase; +const firebaseConfig = useRuntimeConfig()._firebase; export const __firebaseServerFunctionName__ = functions .region(firebaseConfig.region ?? functions.RESET_VALUE) diff --git a/src/presets/firebase/runtime/firebase-gen-2.ts b/src/presets/firebase/runtime/firebase-gen-2.ts index 74dc3ba48f..63b5ea8a70 100644 --- a/src/presets/firebase/runtime/firebase-gen-2.ts +++ b/src/presets/firebase/runtime/firebase-gen-2.ts @@ -1,13 +1,12 @@ import "#nitro-internal-pollyfills"; -import { useNitroApp } from "nitro/runtime"; -import { useAppConfig } from "nitro/runtime"; +import { useNitroApp, useRuntimeConfig } from "nitro/runtime"; import { onRequest } from "firebase-functions/v2/https"; import { toNodeListener } from "h3"; const nitroApp = useNitroApp(); -const firebaseConfig = useAppConfig().nitro.firebase; +const firebaseConfig = useRuntimeConfig()._firebase; export const __firebaseServerFunctionName__ = onRequest( { diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 4badb0c22d..790916787e 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -24,7 +24,6 @@ import * as unenv from "unenv"; import type { Preset } from "unenv"; import unimportPlugin from "unimport/unplugin"; import { rollup as unwasm } from "unwasm/plugin"; -import { appConfig } from "./plugins/app-config"; import { database } from "./plugins/database"; import { esbuild } from "./plugins/esbuild"; import { externals } from "./plugins/externals"; @@ -299,9 +298,6 @@ export const getRollupConfig = (nitro: Nitro): RollupConfig => { // Database rollupConfig.plugins.push(database(nitro)); - // App.config - rollupConfig.plugins.push(appConfig(nitro)); - // Handlers rollupConfig.plugins.push(handlers(nitro)); diff --git a/src/rollup/plugins/app-config.ts b/src/rollup/plugins/app-config.ts deleted file mode 100644 index c37b8175c8..0000000000 --- a/src/rollup/plugins/app-config.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { genImport } from "knitwork"; -import type { Nitro } from "nitro/types"; -import { virtual } from "./virtual"; - -export function appConfig(nitro: Nitro) { - return virtual( - { - "#nitro-internal-virtual/app-config": () => ` -import { defuFn } from 'defu'; - -const inlineAppConfig = ${JSON.stringify(nitro.options.appConfig, null, 2)}; - -${nitro.options.appConfigFiles - .map((file, i) => genImport(file, "appConfig" + i) + ";") - .join("\n")} - -export const appConfig = defuFn(${[ - ...nitro.options.appConfigFiles.map((_, i) => "appConfig" + i), - "inlineAppConfig", - ].join(", ")}); - `, - }, - nitro.vfs - ); -} diff --git a/src/runtime/index.ts b/src/runtime/index.ts index 6c3a7ef2b5..a1f6420091 100644 --- a/src/runtime/index.ts +++ b/src/runtime/index.ts @@ -4,7 +4,7 @@ export { useNitroApp } from "./internal/app"; // Config -export { useRuntimeConfig, useAppConfig } from "./internal/config"; +export { useRuntimeConfig } from "./internal/config"; // Storage export { useStorage } from "./internal/storage"; diff --git a/src/runtime/internal/config.ts b/src/runtime/internal/config.ts index 9f43a81b37..51a2f2dd4f 100644 --- a/src/runtime/internal/config.ts +++ b/src/runtime/internal/config.ts @@ -1,7 +1,6 @@ import type { H3Event } from "h3"; import { klona } from "klona"; import type { NitroRuntimeConfig } from "nitro/types"; -import { appConfig as _inlineAppConfig } from "#nitro-internal-virtual/app-config"; import { type EnvOptions, applyEnv } from "./utils.env"; // Static runtime config inlined by nitro build @@ -38,23 +37,6 @@ export function useRuntimeConfig< return runtimeConfig; } -// App config -const _sharedAppConfig = _deepFreeze(klona(_inlineAppConfig)); -export function useAppConfig(event?: H3Event) { - // Backwards compatibility with ambient context - if (!event) { - return _sharedAppConfig; - } - // Reuse cached app config from event context - if (event.context.nitro.appConfig) { - return event.context.nitro.appConfig; - } - // Prepare app config for event context - const appConfig = klona(_inlineAppConfig); - event.context.nitro.appConfig = appConfig; - return appConfig; -} - // --- Utils --- function _deepFreeze(object: Record) { diff --git a/src/types/config.ts b/src/types/config.ts index b730d33d0b..7a9d8dc4ab 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -50,8 +50,6 @@ export interface NitroOptions extends PresetOptions { static: boolean; logLevel: LogLevel; runtimeConfig: NitroRuntimeConfig; - appConfig: AppConfig; - appConfigFiles: string[]; // Dirs workspaceDir: string; @@ -286,11 +284,6 @@ export interface LoadConfigOptions { // Partial types // ------------------------------------------------------------ -// App config -export interface AppConfig { - [key: string]: any; -} - // Public assets export interface PublicAssetDir { baseURL?: string; diff --git a/src/types/virtual/app-config.d.ts b/src/types/virtual/app-config.d.ts deleted file mode 100644 index cdc35895ae..0000000000 --- a/src/types/virtual/app-config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { AppConfig } from "nitropack"; - -export const appConfig: AppConfig; diff --git a/test/fixture/app.config.ts b/test/fixture/app.config.ts deleted file mode 100644 index 90fa51c34f..0000000000 --- a/test/fixture/app.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - "app-config": true, -}; diff --git a/test/fixture/middleware/config.ts b/test/fixture/middleware/config.ts index 28158e4dad..f68086ae2b 100644 --- a/test/fixture/middleware/config.ts +++ b/test/fixture/middleware/config.ts @@ -1,6 +1,5 @@ process.env.NITRO_DYNAMIC = "from-env"; export default eventHandler((event) => { - const appConfig = useAppConfig(event); - appConfig.dynamic = "from-middleware"; + // ... }); diff --git a/test/fixture/routes/config.ts b/test/fixture/routes/config.ts index 9097e19f5c..4d7a094050 100644 --- a/test/fixture/routes/config.ts +++ b/test/fixture/routes/config.ts @@ -1,13 +1,9 @@ -const sharedAppConfig = useAppConfig(); const sharedRuntimeConfig = useRuntimeConfig(); export default eventHandler((event) => { - const appConfig = useAppConfig(event); const runtimeConfig = useRuntimeConfig(event); return { - sharedAppConfig, - appConfig, runtimeConfig, sharedRuntimeConfig, }; diff --git a/test/tests.ts b/test/tests.ts index 8c889a728b..652df49ec2 100644 --- a/test/tests.ts +++ b/test/tests.ts @@ -475,12 +475,6 @@ export function testNitro( url: "/config", }); expect(data).toMatchObject({ - appConfig: { - dynamic: "from-middleware", - "app-config": true, - "nitro-config": true, - "server-config": true, - }, runtimeConfig: { dynamic: "from-env", url: "https://test.com", @@ -488,12 +482,6 @@ export function testNitro( baseURL: "/", }, }, - sharedAppConfig: { - dynamic: "initial", - "app-config": true, - "nitro-config": true, - "server-config": true, - }, sharedRuntimeConfig: { dynamic: "from-env", // url: "https://test.com", From 3253d319dd8cfa48f09529bd479a699dc8968cb2 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 14 Jun 2024 00:36:26 +0200 Subject: [PATCH 18/32] refactor!: always use native fetch in builds (#2527) --- src/core/config/resolvers/fetch.ts | 22 ++++++---------------- src/types/config.ts | 4 ---- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/core/config/resolvers/fetch.ts b/src/core/config/resolvers/fetch.ts index ad2bbc5e59..b412cca0a3 100644 --- a/src/core/config/resolvers/fetch.ts +++ b/src/core/config/resolvers/fetch.ts @@ -1,21 +1,11 @@ import consola from "consola"; import type { NitroOptions } from "nitro/types"; -import { nodeMajorVersion, provider } from "std-env"; export async function resolveFetchOptions(options: NitroOptions) { - if (options.experimental.nodeFetchCompat === undefined) { - options.experimental.nodeFetchCompat = (nodeMajorVersion || 0) < 18; - if (options.experimental.nodeFetchCompat && provider !== "stackblitz") { - consola.warn( - "Node fetch compatibility is enabled. Please consider upgrading to Node.js >= 18." - ); - } - } - if (!options.experimental.nodeFetchCompat) { - options.alias = { - "node-fetch-native/polyfill": "unenv/runtime/mock/empty", - "node-fetch-native": "node-fetch-native/native", - ...options.alias, - }; - } + // Use native fetch in builds + options.alias = { + "node-fetch-native/polyfill": "unenv/runtime/mock/empty", + "node-fetch-native": "node-fetch-native/native", + ...options.alias, + }; } diff --git a/src/types/config.ts b/src/types/config.ts index 7a9d8dc4ab..814e0c6096 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -116,10 +116,6 @@ export interface NitroOptions extends PresetOptions { * Disable Experimental Sourcemap Minification */ sourcemapMinify?: false; - /** - * Backward compatibility support for Node fetch (required for Node < 18) - */ - nodeFetchCompat?: boolean; /** * Allow env expansion in runtime config * From ebeda79aa8962725238e8f672043255ae0785afa Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 14 Jun 2024 10:48:37 +0100 Subject: [PATCH 19/32] chore: improve internal `tsconfig.json` (#2529) --- package.json | 2 +- pnpm-lock.yaml | 10 ++++----- scripts/gen-mirror.ts | 1 - src/presets/netlify/legacy/runtime/netlify.ts | 2 +- tsconfig.json | 21 +++++++++++++------ 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index c7ea72f13e..9476dd2b9e 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "rollup-plugin-visualizer": "^5.12.0", "scule": "^1.3.0", "semver": "^7.6.2", - "serve-placeholder": "^2.0.1", + "serve-placeholder": "^2.0.2", "serve-static": "^1.15.0", "std-env": "^3.7.0", "ufo": "^1.5.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb46f73305..64af9b3561 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,8 +198,8 @@ importers: specifier: ^7.6.2 version: 7.6.2 serve-placeholder: - specifier: ^2.0.1 - version: 2.0.1 + specifier: ^2.0.2 + version: 2.0.2 serve-static: specifier: ^1.15.0 version: 1.15.0 @@ -5400,8 +5400,8 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-placeholder@2.0.1: - resolution: {integrity: sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==} + serve-placeholder@2.0.2: + resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} @@ -12215,7 +12215,7 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-placeholder@2.0.1: + serve-placeholder@2.0.2: dependencies: defu: 6.1.4 diff --git a/scripts/gen-mirror.ts b/scripts/gen-mirror.ts index 50c1081852..683eba4807 100644 --- a/scripts/gen-mirror.ts +++ b/scripts/gen-mirror.ts @@ -1,5 +1,4 @@ import { cp, mkdir, rm, writeFile } from "node:fs/promises"; -import { e } from "crossws/dist/shared/crossws.381454fe"; import { fileURLToPath } from "mlly"; import { join } from "pathe"; import { type PackageJson, readPackageJSON } from "pkg-types"; diff --git a/src/presets/netlify/legacy/runtime/netlify.ts b/src/presets/netlify/legacy/runtime/netlify.ts index 7f738aefec..2a491e60bb 100644 --- a/src/presets/netlify/legacy/runtime/netlify.ts +++ b/src/presets/netlify/legacy/runtime/netlify.ts @@ -1,7 +1,7 @@ import "#nitro-internal-pollyfills"; import { getRouteRulesForPath } from "nitro/runtime/internal"; -import type { Handler } from "@netlify/functions/dist/main"; +import type { Handler } from "@netlify/functions"; import { withQuery } from "ufo"; import { lambda } from "./netlify-lambda"; diff --git a/tsconfig.json b/tsconfig.json index bb579d2859..c97dce66c3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,28 @@ { "compilerOptions": { + /* Base options: */ "esModuleInterop": false, "allowSyntheticDefaultImports": true, "skipLibCheck": true, - "lib": ["WebWorker", "DOM.Iterable"], - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "Node", - "strict": true, + "target": "es2022", "allowJs": true, "resolveJsonModule": true, + "moduleDetection": "force", + "isolatedModules": true, + "verbatimModuleSyntax": true, + /* Strictness */ + "strict": true, + // TODO: enable noUncheckedIndexedAccess in subsequent PR + // "noUncheckedIndexedAccess": true, + "forceConsistentCasingInFileNames": true, + "noImplicitOverride": true, + /* If NOT transpiling with TypeScript: */ + "module": "preserve", + "noEmit": true, "jsx": "preserve", "jsxFactory": "h", "jsxFragmentFactory": "Fragment", - "noEmit": true, + "lib": ["es2022", "webworker", "dom.iterable"], "paths": { // CLI "nitro/cli": ["./src/cli"], From 85769d05071d6783bf4a6eb50ed60ee4a71ac552 Mon Sep 17 00:00:00 2001 From: aryan02420 Date: Mon, 17 Jun 2024 14:54:21 +0530 Subject: [PATCH 20/32] docs: update link to runtime hook source code (#2537) --- docs/1.guide/9.plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/1.guide/9.plugins.md b/docs/1.guide/9.plugins.md index fe5462ff26..507f404936 100644 --- a/docs/1.guide/9.plugins.md +++ b/docs/1.guide/9.plugins.md @@ -54,7 +54,7 @@ export default defineNitroPlugin((nitro) => { ### Available hooks -See the [source code](https://github.com/unjs/nitro/blob/main/src/runtime/types.ts#L24) for list of all available runtime hooks. +See the [source code](https://github.com/unjs/nitro/blob/main/src/types/runtime/nitro.ts#L46) for list of all available runtime hooks. - `"close", () => {}` - `"error", (error, { event? }) => {}` From 7e0b49ef63f1404657d875543bcbbec6c2a4d6b9 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 17 Jun 2024 10:59:18 +0100 Subject: [PATCH 21/32] feat!: increase generated `tsconfig.json` strictness (#2533) --- src/core/build/types.ts | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/core/build/types.ts b/src/core/build/types.ts index 789f57252b..85ed050aab 100644 --- a/src/core/build/types.ts +++ b/src/core/build/types.ts @@ -190,19 +190,31 @@ declare module "nitro/types" { const tsconfigDir = dirname(tsConfigPath); const tsConfig: TSConfig = defu(nitro.options.typescript.tsConfig, { compilerOptions: { - forceConsistentCasingInFileNames: true, - strict: nitro.options.typescript.strict, - noEmit: true, + /* Base options: */ + esModuleInterop: true, + allowSyntheticDefaultImports: true, + skipLibCheck: true, target: "ESNext", + allowJs: true, + resolveJsonModule: true, + moduleDetection: "force", + isolatedModules: true, + verbatimModuleSyntax: true, + /* Strictness */ + strict: nitro.options.typescript.strict, + noUncheckedIndexedAccess: true, + noImplicitOverride: true, + forceConsistentCasingInFileNames: true, + /* If NOT transpiling with TypeScript: */ + // TODO: consider using 'module: preserve' (requires TS 5.4+) module: "ESNext", + noEmit: true, moduleResolution: nitro.options.experimental.typescriptBundlerResolution === false ? "Node" : "Bundler", - allowJs: true, - resolveJsonModule: true, + /* JSX support */ jsx: "preserve", - allowSyntheticDefaultImports: true, jsxFactory: "h", jsxFragmentFactory: "Fragment", paths: { From e1c52afb2d4a96757993ad8057897f5d74e473a5 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 19 Jun 2024 10:33:42 +0100 Subject: [PATCH 22/32] fix(core): scan handlers when initialising nitro (#2546) * fix(core): export `scanHandlers` * fix(core): scan handlers when initialising nitro --- src/core/nitro.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/nitro.ts b/src/core/nitro.ts index 00022655da..36137c82a8 100644 --- a/src/core/nitro.ts +++ b/src/core/nitro.ts @@ -12,7 +12,7 @@ import { createUnimport } from "unimport"; import { loadOptions } from "./config/loader"; import { updateNitroConfig } from "./config/update"; import { installModules } from "./module"; -import { scanAndSyncOptions } from "./scan"; +import { scanAndSyncOptions, scanHandlers } from "./scan"; import { addNitroTasksVirtualFile } from "./task"; import { createStorage } from "./utils/storage"; @@ -78,8 +78,11 @@ export async function createNitro( nitro.options.virtual["#nitro"] = 'export * from "#imports"'; } - // Scan and install modules as last step + // Scan and install modules await installModules(nitro); + // Ensure initial handlers are populated + await scanHandlers(nitro); + return nitro; } From e727afda5b4bc36551034969c61f1768cdedfaa8 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Tue, 2 Jul 2024 22:53:13 +0200 Subject: [PATCH 23/32] feat: upgrade to jiti v2 (#2582) --- package.json | 22 +- patches/unbuild@3.0.0-rc.2.patch | 13 - pnpm-lock.yaml | 3365 +++++++++++++----------------- scripts/gen-presets.ts | 7 +- src/core/module.ts | 15 +- src/rollup/plugins/externals.ts | 8 +- 6 files changed, 1487 insertions(+), 1943 deletions(-) delete mode 100644 patches/unbuild@3.0.0-rc.2.patch diff --git a/package.json b/package.json index 39056e8f87..0827bfcf50 100644 --- a/package.json +++ b/package.json @@ -66,20 +66,21 @@ "dev:start": "node playground/.output/server/index.mjs", "lint": "eslint --cache . && biome check .", "lint:fix": "eslint --cache --fix . && biome check . --write", - "nitro": "JITI_ESM_RESOLVE=1 NODE_OPTIONS=\"--enable-source-maps\" jiti ./src/cli/index.ts", + "nitro": "jiti ./src/cli/index.ts", "prepack": "pnpm build", - "gen-mirror": "JITI_ESM_RESOLVE=1 pnpm jiti scripts/gen-mirror.ts", - "gen-presets": "JITI_ESM_RESOLVE=1 pnpm jiti scripts/gen-presets.ts", + "gen-mirror": "pnpm jiti scripts/gen-mirror.ts", + "gen-presets": "pnpm jiti scripts/gen-presets.ts", "release": "pnpm test && pnpm build && changelogen --release && pnpm publish && git push --follow-tags", "stub": "unbuild --stub", "test": "pnpm lint && pnpm vitest-es run --silent", - "test:fixture:types": "pnpm stub && JITI_ESM_RESOLVE=1 jiti ./test/scripts/gen-fixture-types.ts && cd test/fixture && tsc --noEmit", + "test:fixture:types": "pnpm stub && jiti ./test/scripts/gen-fixture-types.ts && cd test/fixture && tsc --noEmit", "test:types": "tsc --noEmit && pnpm test:fixture:types", "vitest-es": "NODE_OPTIONS=\"--enable-source-maps --experimental-vm-modules\" vitest" }, "resolutions": { "nitropack": "link:.", - "undici": "^6.19.2" + "undici": "^6.19.2", + "jiti": "2.0.0-beta.3" }, "dependencies": { "@cloudflare/kv-asset-handler": "^0.3.3", @@ -95,7 +96,7 @@ "@types/http-proxy": "^1.17.14", "@vercel/nft": "^0.27.2", "archiver": "^7.0.1", - "c12": "^1.11.1", + "c12": "^2.0.0-beta.1", "chalk": "^5.3.0", "chokidar": "^3.6.0", "citty": "^0.1.6", @@ -119,7 +120,7 @@ "hookable": "^5.5.3", "httpxy": "^0.1.5", "ioredis": "^5.4.1", - "jiti": "^1.21.6", + "jiti": "^2.0.0-beta.3", "klona": "^2.0.6", "knitwork": "^1.1.0", "listhen": "^1.7.2", @@ -134,7 +135,7 @@ "openapi-typescript": "^7.0.0", "pathe": "^1.1.2", "perfect-debounce": "^1.0.0", - "pkg-types": "^1.1.1", + "pkg-types": "^1.1.3", "pretty-bytes": "^6.1.1", "radix3": "^1.1.2", "rollup": "^4.18.0", @@ -185,7 +186,7 @@ "miniflare": "^3.20240610.1", "prettier": "^3.3.2", "typescript": "^5.4.5", - "unbuild": "3.0.0-rc.2", + "unbuild": "3.0.0-rc.5", "undici": "^6.19.2", "vitest": "^1.6.0", "xml2js": "^0.6.2" @@ -210,9 +211,6 @@ "react-dom", "@algolia/client-search" ] - }, - "patchedDependencies": { - "unbuild@3.0.0-rc.2": "patches/unbuild@3.0.0-rc.2.patch" } } } diff --git a/patches/unbuild@3.0.0-rc.2.patch b/patches/unbuild@3.0.0-rc.2.patch deleted file mode 100644 index df2009ff0d..0000000000 --- a/patches/unbuild@3.0.0-rc.2.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/dist/shared/unbuild.Cs2j_FHl.mjs b/dist/shared/unbuild.Cs2j_FHl.mjs -index 6da397241a3f2ca90d72d2dd98985690061cf172..2a5b8c3f22826e974d4c9af05b58a631ada2efa7 100644 ---- a/dist/shared/unbuild.Cs2j_FHl.mjs -+++ b/dist/shared/unbuild.Cs2j_FHl.mjs -@@ -647,7 +647,7 @@ async function rollupBuild(ctx) { - `const _jiti = jiti(null, ${serializedJitiOptions})`, - "", - `/** @type {import(${JSON.stringify(resolvedEntryForTypeImport)})} */`, -- `const _module = await _jiti.import(${JSON.stringify( -+ `const _module = _jiti(${JSON.stringify( - resolvedEntry - )});`, - hasDefaultExport ? "\nexport default _module;" : "", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa4ead4cdf..8629a41047 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,11 +7,7 @@ settings: overrides: nitropack: link:. undici: ^6.19.2 - -patchedDependencies: - unbuild@3.0.0-rc.2: - hash: rrfmssaqzf6ob23oou5wnx366m - path: patches/unbuild@3.0.0-rc.2.patch + jiti: 2.0.0-beta.3 importers: @@ -19,10 +15,10 @@ importers: dependencies: '@cloudflare/kv-asset-handler': specifier: ^0.3.3 - version: 0.3.3 + version: 0.3.4 '@netlify/functions': specifier: ^2.7.0 - version: 2.7.0(@opentelemetry/api@1.9.0) + version: 2.8.0(@opentelemetry/api@1.9.0) '@rollup/plugin-alias': specifier: ^5.1.0 version: 5.1.0(rollup@4.18.0) @@ -57,8 +53,8 @@ importers: specifier: ^7.0.1 version: 7.0.1 c12: - specifier: ^1.11.1 - version: 1.11.1(magicast@0.3.4) + specifier: ^2.0.0-beta.1 + version: 2.0.0-beta.1(magicast@0.3.4) chalk: specifier: ^5.3.0 version: 5.3.0 @@ -88,7 +84,7 @@ importers: version: 0.2.4 db0: specifier: ^0.1.4 - version: 0.1.4(better-sqlite3@11.0.0) + version: 0.1.4(better-sqlite3@11.1.1) defu: specifier: ^6.1.4 version: 6.1.4 @@ -112,13 +108,13 @@ importers: version: 11.2.0 globby: specifier: ^14.0.1 - version: 14.0.1 + version: 14.0.2 gzip-size: specifier: ^7.0.0 version: 7.0.0 h3: specifier: ^1.11.1 - version: 1.11.1 + version: 1.12.0 hookable: specifier: ^5.5.3 version: 5.5.3 @@ -129,8 +125,8 @@ importers: specifier: ^5.4.1 version: 5.4.1 jiti: - specifier: ^1.21.6 - version: 1.21.6 + specifier: 2.0.0-beta.3 + version: 2.0.0-beta.3 klona: specifier: ^2.0.6 version: 2.0.6 @@ -166,7 +162,7 @@ importers: version: 1.1.3 openapi-typescript: specifier: ^7.0.0 - version: 7.0.0(typescript@5.4.5) + version: 7.0.0(typescript@5.5.3) pathe: specifier: ^1.1.2 version: 1.1.2 @@ -174,8 +170,8 @@ importers: specifier: ^1.0.0 version: 1.0.0 pkg-types: - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.3 + version: 1.1.3 pretty-bytes: specifier: ^6.1.1 version: 6.1.1 @@ -233,19 +229,19 @@ importers: version: 3.5.1 '@azure/static-web-apps-cli': specifier: ^1.1.9 - version: 1.1.9 + version: 1.1.10 '@biomejs/biome': specifier: ^1.8.1 - version: 1.8.1 + version: 1.8.3 '@cloudflare/workers-types': specifier: ^4.20240614.0 - version: 4.20240614.0 + version: 4.20240620.0 '@deno/types': specifier: ^0.0.1 version: 0.0.1 '@scalar/api-reference': specifier: ^1.24.11 - version: 1.24.11(@types/bun@1.1.4)(postcss@8.4.38)(tailwindcss@3.4.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) + version: 1.24.28(@types/bun@1.1.6)(postcss@8.4.39)(tailwindcss@3.4.4)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) '@types/archiver': specifier: ^6.0.2 version: 6.0.2 @@ -254,7 +250,7 @@ importers: version: 8.10.140 '@types/bun': specifier: ^1.1.4 - version: 1.1.4 + version: 1.1.6 '@types/estree': specifier: ^1.0.5 version: 1.0.5 @@ -278,13 +274,13 @@ importers: version: 0.4.14 '@vitest/coverage-v8': specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) + version: 1.6.0(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) automd: specifier: ^0.3.7 version: 0.3.7(magicast@0.3.4) better-sqlite3: specifier: ^11.0.0 - version: 11.0.0 + version: 11.1.1 changelogen: specifier: ^0.5.5 version: 0.5.5(magicast@0.3.4) @@ -293,43 +289,43 @@ importers: version: 2.5.10 eslint: specifier: ^9.5.0 - version: 9.5.0 + version: 9.6.0 eslint-config-unjs: specifier: 0.3.2 - version: 0.3.2(eslint@9.5.0)(typescript@5.4.5) + version: 0.3.2(eslint@9.6.0)(typescript@5.5.3) execa: specifier: ^9.2.0 - version: 9.2.0 + version: 9.3.0 expect-type: specifier: ^0.19.0 version: 0.19.0 firebase-admin: specifier: ^12.1.1 - version: 12.1.1 + version: 12.2.0 firebase-functions: specifier: ^4.9.0 - version: 4.9.0(firebase-admin@12.1.1) + version: 4.9.0(firebase-admin@12.2.0) get-port-please: specifier: ^3.1.2 version: 3.1.2 miniflare: specifier: ^3.20240610.1 - version: 3.20240610.1 + version: 3.20240620.0 prettier: specifier: ^3.3.2 version: 3.3.2 typescript: specifier: ^5.4.5 - version: 5.4.5 + version: 5.5.3 unbuild: - specifier: 3.0.0-rc.2 - version: 3.0.0-rc.2(patch_hash=rrfmssaqzf6ob23oou5wnx366m)(typescript@5.4.5) + specifier: 3.0.0-rc.5 + version: 3.0.0-rc.5(typescript@5.5.3) undici: specifier: ^6.19.2 version: 6.19.2 vitest: specifier: ^1.6.0 - version: 1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1) + version: 1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1) xml2js: specifier: ^0.6.2 version: 0.6.2 @@ -461,8 +457,8 @@ packages: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} - '@azure/core-rest-pipeline@1.16.0': - resolution: {integrity: sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==} + '@azure/core-rest-pipeline@1.16.1': + resolution: {integrity: sha512-ExPSbgjwCoht6kB7B4MeZoBAxcQSIl29r/bPeazZJx50ej4JJCByimLOrZoIsurISNyJQQHf30b3JfqC3Hb88A==} engines: {node: '>=18.0.0'} '@azure/core-tracing@1.1.2': @@ -484,24 +480,24 @@ packages: resolution: {integrity: sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==} engines: {node: '>=18.0.0'} - '@azure/msal-browser@3.17.0': - resolution: {integrity: sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A==} + '@azure/msal-browser@3.18.0': + resolution: {integrity: sha512-jvK5bDUWbpOaJt2Io/rjcaOVcUzkqkrCme/WntdV1SMUc67AiTcEdKuY6G/nMQ7N5Cfsk9SfpugflQwDku53yg==} engines: {node: '>=0.8.0'} - '@azure/msal-common@14.12.0': - resolution: {integrity: sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==} + '@azure/msal-common@14.13.0': + resolution: {integrity: sha512-b4M/tqRzJ4jGU91BiwCsLTqChveUEyFK3qY2wGfZ0zBswIBZjAxopx5CYt5wzZFKuN15HqRDYXQbztttuIC3nA==} engines: {node: '>=0.8.0'} '@azure/msal-common@6.4.0': resolution: {integrity: sha512-WZdgq9f9O8cbxGzdRwLLMM5xjmLJ2mdtuzgXeiGxIRkVVlJ9nZ6sWnDFKa2TX8j72UXD1IfL0p/RYNoTXYoGfg==} engines: {node: '>=0.8.0'} - '@azure/msal-node@2.9.2': - resolution: {integrity: sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==} + '@azure/msal-node@2.10.0': + resolution: {integrity: sha512-JxsSE0464a8IA/+q5EHKmchwNyUFJHtCH00tSXsLaOddwLjG6yVvTH6lGgPcWMhO7YWUXj/XVgVgeE9kZtsPUQ==} engines: {node: '>=16'} - '@azure/static-web-apps-cli@1.1.9': - resolution: {integrity: sha512-W/BxVHuGMkP+Ycr/Wv6q3IM5tuDeJLob4MTzzT0+h7HIErTq6Ie5tzyqH99qstVv8XP2DJMsb+BwAoj9ZOzy0g==} + '@azure/static-web-apps-cli@1.1.10': + resolution: {integrity: sha512-X8Pbw/OOurGbAh6gtXth1aWxMBIo0bStJDvQ2k8poqOw8a7JZnMYJM9VWeVqj5m9bc0/GI9nuSxip9lJdBfXXQ==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} hasBin: true @@ -603,136 +599,95 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@biomejs/biome@1.8.1': - resolution: {integrity: sha512-fQXGfvq6DIXem12dGQCM2tNF+vsNHH1qs3C7WeOu75Pd0trduoTmoO7G4ntLJ2qDs5wuw981H+cxQhi1uHnAtA==} + '@biomejs/biome@1.8.3': + resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.8.1': - resolution: {integrity: sha512-XLiB7Uu6GALIOBWzQ2aMD0ru4Ly5/qSeQF7kk3AabzJ/kwsEWSe33iVySBP/SS2qv25cgqNiLksjGcw2bHT3mw==} + '@biomejs/cli-darwin-arm64@1.8.3': + resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.8.1': - resolution: {integrity: sha512-uMTSxVLMfqkBVqyc25hSn83jBbp+wtWjzM/pHFlKXt3htJuw7FErVGW0nmQ9Sxa9vJ7GcqoltLMl28VQRIMYzg==} + '@biomejs/cli-darwin-x64@1.8.3': + resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.8.1': - resolution: {integrity: sha512-UQ8Wc01J0wQL+5AYOc7qkJn20B4PZmQL1KrmDZh7ot0DvD6aX4+8mmfd/dG5b6Zjo/44QvCKcvkFGCMRYuhWZA==} + '@biomejs/cli-linux-arm64-musl@1.8.3': + resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.8.1': - resolution: {integrity: sha512-3SzZRuC/9Oi2P2IBNPsEj0KXxSXUEYRR2kfRF/Ve8QAfGgrt4qnwuWd6QQKKN5R+oYH691qjm+cXBKEcrP1v/Q==} + '@biomejs/cli-linux-arm64@1.8.3': + resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.8.1': - resolution: {integrity: sha512-fYbP/kNu/rtZ4kKzWVocIdqZOtBSUEg9qUhZaao3dy3CRzafR6u6KDtBeSCnt47O+iLnks1eOR1TUxzr5+QuqA==} + '@biomejs/cli-linux-x64-musl@1.8.3': + resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.8.1': - resolution: {integrity: sha512-AeBycVdNrTzsyYKEOtR2R0Ph0hCD0sCshcp2aOnfGP0hCZbtFg09D0SdKLbyzKntisY41HxKVrydYiaApp+2uw==} + '@biomejs/cli-linux-x64@1.8.3': + resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.8.1': - resolution: {integrity: sha512-6tEd1H/iFKpgpE3OIB7oNgW5XkjiVMzMRPL8zYoZ036YfuJ5nMYm9eB9H/y81+8Z76vL48fiYzMPotJwukGPqQ==} + '@biomejs/cli-win32-arm64@1.8.3': + resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.8.1': - resolution: {integrity: sha512-g2H31jJzYmS4jkvl6TiyEjEX+Nv79a5km/xn+5DARTp5MBFzC9gwceusSSB2AkJKqZzY131AiACAWjKrVt5Ijw==} + '@biomejs/cli-win32-x64@1.8.3': + resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@cloudflare/kv-asset-handler@0.3.3': - resolution: {integrity: sha512-wpE+WiWW2kUNwNE0xyl4CtTAs+STjGtouHGiZPGRaisGB7eXXdbvfZdOrQJQVKgTxZiNAgVgmc7fj0sUmd8zyA==} + '@cloudflare/kv-asset-handler@0.3.4': + resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} - '@cloudflare/workerd-darwin-64@1.20240610.1': - resolution: {integrity: sha512-YanZ1iXgMGaUWlleB5cswSE6qbzyjQ8O7ENWZcPAcZZ6BfuL7q3CWi0t9iM1cv2qx92rRztsRTyjcfq099++XQ==} + '@cloudflare/workerd-darwin-64@1.20240620.1': + resolution: {integrity: sha512-YWeS2aE8jAzDefuus/3GmZcFGu3Ef94uCAoxsQuaEXNsiGM9NeAhPpKC1BJAlcv168U/Q1J+6hckcGtipf6ZcQ==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20240610.1': - resolution: {integrity: sha512-bRe/y/LKjIgp3L2EHjc+CvoCzfHhf4aFTtOBkv2zW+VToNJ4KlXridndf7LvR9urfsFRRo9r4TXCssuKaU+ypQ==} + '@cloudflare/workerd-darwin-arm64@1.20240620.1': + resolution: {integrity: sha512-3rdND+EHpmCrwYX6hvxIBSBJ0f40tRNxond1Vfw7GiR1MJVi3gragiBx75UDFHCxfRw3J0GZ1qVlkRce2/Xbsg==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20240610.1': - resolution: {integrity: sha512-2zDcadR7+Gs9SjcMXmwsMji2Xs+yASGNA2cEHDuFc4NMUup+eL1mkzxc/QzvFjyBck98e92rBjMZt2dVscpGKg==} + '@cloudflare/workerd-linux-64@1.20240620.1': + resolution: {integrity: sha512-tURcTrXGeSbYqeM5ISVcofY20StKbVIcdxjJvNYNZ+qmSV9Fvn+zr7rRE+q64pEloVZfhsEPAlUCnFso5VV4XQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20240610.1': - resolution: {integrity: sha512-7y41rPi5xmIYJN8CY+t3RHnjLL0xx/WYmaTd/j552k1qSr02eTE2o/TGyWZmGUC+lWnwdPQJla0mXbvdqgRdQg==} + '@cloudflare/workerd-linux-arm64@1.20240620.1': + resolution: {integrity: sha512-TThvkwNxaZFKhHZnNjOGqIYCOk05DDWgO+wYMuXg15ymN/KZPnCicRAkuyqiM+R1Fgc4kwe/pehjP8pbmcf6sg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20240610.1': - resolution: {integrity: sha512-B0LyT3DB6rXHWNptnntYHPaoJIy0rXnGfeDBM3nEVV8JIsQrx8MEFn2F2jYioH1FkUVavsaqKO/zUosY3tZXVA==} + '@cloudflare/workerd-windows-64@1.20240620.1': + resolution: {integrity: sha512-Y/BA9Yj0r7Al1HK3nDHcfISgFllw6NR3XMMPChev57vrVT9C9D4erBL3sUBfofHU+2U9L+ShLsl6obBpe3vvUw==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20240614.0': - resolution: {integrity: sha512-fnV3uXD1Hpq5EWnY7XYb+smPcjzIoUFiZpTSV/Tk8qKL3H+w6IqcngZwXQBZ/2U/DwYkDilXHW3FfPhnyD7FZA==} - - '@codemirror/autocomplete@6.16.2': - resolution: {integrity: sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@lezer/common': ^1.0.0 - - '@codemirror/commands@6.6.0': - resolution: {integrity: sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==} - - '@codemirror/lang-css@6.2.1': - resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==} - - '@codemirror/lang-html@6.4.9': - resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==} - - '@codemirror/lang-javascript@6.2.2': - resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==} - - '@codemirror/lang-json@6.0.1': - resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} - - '@codemirror/lang-yaml@6.1.1': - resolution: {integrity: sha512-HV2NzbK9bbVnjWxwObuZh5FuPCowx51mEfoFT9y3y+M37fA3+pbxx4I7uePuygFzDsAmCTwQSc/kXh/flab4uw==} - - '@codemirror/language@6.10.2': - resolution: {integrity: sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==} - - '@codemirror/lint@6.8.0': - resolution: {integrity: sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA==} - - '@codemirror/search@6.5.6': - resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} - - '@codemirror/state@6.4.1': - resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} - - '@codemirror/view@6.28.0': - resolution: {integrity: sha512-fo7CelaUDKWIyemw4b+J57cWuRkOu4SWCCPfNDkPvfWkGjM9D5racHQXr4EQeYCD6zEBIBxGCeaKkQo+ysl0gA==} + '@cloudflare/workers-types@4.20240620.0': + resolution: {integrity: sha512-CQD8YS6evRob7LChvIX3gE3zYo0KVgaLDOu1SwNP1BVIS2Sa0b+FC8S1e1hhrNN8/E4chYlVN+FDAgA4KRDUEQ==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -757,23 +712,17 @@ packages: resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==} engines: {node: '>=16'} - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} @@ -781,10 +730,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [android] '@esbuild/android-arm@0.21.5': @@ -793,10 +742,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] os: [android] '@esbuild/android-x64@0.21.5': @@ -805,11 +754,11 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} @@ -817,10 +766,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.21.5': @@ -829,11 +778,11 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} @@ -841,10 +790,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.21.5': @@ -853,11 +802,11 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} @@ -865,10 +814,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.21.5': @@ -877,10 +826,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.21.5': @@ -889,10 +838,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.21.5': @@ -901,10 +850,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.21.5': @@ -913,10 +862,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.21.5': @@ -925,10 +874,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.21.5': @@ -937,10 +886,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.21.5': @@ -949,10 +898,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.21.5': @@ -961,11 +910,11 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} cpu: [x64] - os: [netbsd] + os: [linux] '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} @@ -973,10 +922,16 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.21.5': @@ -985,11 +940,11 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] + os: [openbsd] '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} @@ -997,11 +952,11 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} @@ -1009,10 +964,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.21.5': @@ -1021,10 +976,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.21.5': @@ -1033,30 +988,32 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.1': - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.16.0': - resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} + '@eslint/config-array@0.17.0': + resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.4.0': - resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.5.0': - resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==} + '@eslint/js@9.6.0': + resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -1094,20 +1051,20 @@ packages: '@firebase/util@1.9.6': resolution: {integrity: sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==} - '@floating-ui/core@1.6.2': - resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} + '@floating-ui/core@1.6.4': + resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==} - '@floating-ui/dom@1.6.5': - resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} + '@floating-ui/dom@1.6.7': + resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==} - '@floating-ui/utils@0.2.2': - resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + '@floating-ui/utils@0.2.4': + resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} - '@floating-ui/vue@1.0.6': - resolution: {integrity: sha512-EdrOljjkpkkqZnrpqUcPoz9NvHxuTjUtSInh6GMv3+Mcy+giY2cE2pHh9rpacRcZ2eMSCxel9jWkWXTjLmY55w==} + '@floating-ui/vue@1.1.1': + resolution: {integrity: sha512-cyawjk9etPZPl/RVtMRnWrwtAhWbPVSrRVYARgOzhLIqxr0k2up1APrrFjqP9QwRQ0AwjKSvbWg4YC6jESutow==} - '@google-cloud/firestore@7.8.0': - resolution: {integrity: sha512-m21BWVZLz7H7NF8HZ5hCGUSCEJKNwYB5yzQqDTuE9YUzNDRMDei3BwVDht5k4xF636sGlnobyBL+dcbthSGONg==} + '@google-cloud/firestore@7.9.0': + resolution: {integrity: sha512-c4ALHT3G08rV7Zwv8Z2KG63gZh66iKdhCBeDfCpIkLrjX6EAjTD/szMdj14M+FnQuClZLFfW5bAgoOjfNmLtJg==} engines: {node: '>=14.0.0'} '@google-cloud/paginator@5.0.2': @@ -1126,8 +1083,8 @@ packages: resolution: {integrity: sha512-jJOrKyOdujfrSF8EJODW9yY6hqO4jSTk6eVITEj2gsD43BSXuDlnMlLOaBUQhXL29VGnSkxDgYl5tlFhA6LKSA==} engines: {node: '>=14'} - '@grpc/grpc-js@1.10.9': - resolution: {integrity: sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==} + '@grpc/grpc-js@1.10.10': + resolution: {integrity: sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.13': @@ -1161,6 +1118,12 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} + '@internationalized/date@3.5.4': + resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==} + + '@internationalized/number@3.5.3': + resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -1203,44 +1166,20 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@lezer/common@1.2.1': - resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} - - '@lezer/css@1.1.8': - resolution: {integrity: sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==} - - '@lezer/highlight@1.2.0': - resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} - - '@lezer/html@1.3.10': - resolution: {integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==} - - '@lezer/javascript@1.4.17': - resolution: {integrity: sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==} - - '@lezer/json@1.0.2': - resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} - - '@lezer/lr@1.4.1': - resolution: {integrity: sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==} - - '@lezer/yaml@1.0.3': - resolution: {integrity: sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==} - '@mapbox/node-pre-gyp@1.0.11': resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@netlify/functions@2.7.0': - resolution: {integrity: sha512-4pXC/fuj3eGQ86wbgPiM4zY8+AsNrdz6vcv6FEdUJnZW+LqF8IWjQcY3S0d1hLeLKODYOqq4CkrzGyCpce63Nw==} + '@netlify/functions@2.8.0': + resolution: {integrity: sha512-kHInQKtMuFlqD7vxaJ8tjd7spv6DTrRuTovvWNDmvwTfkubVfF7KYiypsPR5wkKvSz76GHv86RBCLkjIxvwgDg==} engines: {node: '>=14.0.0'} '@netlify/node-cookies@0.1.0': resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/serverless-functions-api@1.18.1': - resolution: {integrity: sha512-DrSvivchuwsuQW03zbVPT3nxCQa5tn7m4aoPOsQKibuJXIuSbfxzCBxPLz0+LchU5ds7YyOaCc9872Y32ngYzg==} + '@netlify/serverless-functions-api@1.18.4': + resolution: {integrity: sha512-5R0kOKrOqhlFFrA7oduzJS+LQRjnX2CX8kJaYI9PQKIpNvzF18n+LNGWTS42YxPfIpAE64yaHbppeAigms2QTw==} engines: {node: '>=18.0.0'} '@nodelib/fs.scandir@2.1.5': @@ -1255,75 +1194,124 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@opentelemetry/api-logs@0.50.0': - resolution: {integrity: sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==} + '@opentelemetry/api-logs@0.52.1': + resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} engines: {node: '>=14'} '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/core@1.23.0': - resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==} + '@opentelemetry/context-async-hooks@1.25.1': + resolution: {integrity: sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@1.25.0': - resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==} + '@opentelemetry/core@1.25.1': + resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/otlp-transformer@0.50.0': - resolution: {integrity: sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==} + '@opentelemetry/exporter-trace-otlp-grpc@0.52.1': + resolution: {integrity: sha512-pVkSH20crBwMTqB3nIN4jpQKUEoB0Z94drIHpYyEqs7UBr+I0cpYyOR3bqjA/UasQUMROb3GX8ZX4/9cVRqGBQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/exporter-trace-otlp-http@0.52.1': + resolution: {integrity: sha512-05HcNizx0BxcFKKnS5rwOV+2GevLTVIRA0tRgWYyw4yCgR53Ic/xk83toYKts7kbzcI+dswInUg/4s8oyA+tqg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.9.0' + '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resources@1.23.0': - resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==} + '@opentelemetry/exporter-trace-otlp-proto@0.52.1': + resolution: {integrity: sha512-pt6uX0noTQReHXNeEslQv7x311/F1gJzMnp1HD2qgypLRPbXDeMzzeTngRTUaUbP6hqWNtPxuLr4DEoZG+TcEQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': ^1.0.0 - '@opentelemetry/resources@1.25.0': - resolution: {integrity: sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==} + '@opentelemetry/exporter-zipkin@1.25.1': + resolution: {integrity: sha512-RmOwSvkimg7ETwJbUOPTMhJm9A9bG1U8s7Zo3ajDh4zM7eYcycQ0dM7FbLD6NXWbI2yj7UY4q8BKinKYBQksyw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/instrumentation@0.52.1': + resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.52.1': + resolution: {integrity: sha512-z175NXOtX5ihdlshtYBe5RpGeBoTXVCKPPLiQlD6FHvpM4Ch+p2B0yWKYSrBfLH24H9zjJiBdTrtD+hLlfnXEQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/otlp-grpc-exporter-base@0.52.1': + resolution: {integrity: sha512-zo/YrSDmKMjG+vPeA9aBBrsQM9Q/f2zo6N04WMB3yNldJRsgpRBeLLwvAt/Ba7dpehDLOEFBd1i2JCoaFtpCoQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + + '@opentelemetry/otlp-transformer@0.52.1': + resolution: {integrity: sha512-I88uCZSZZtVa0XniRqQWKbjAUm73I8tpEy/uJYPPYw5d7BRdVk0RfTBQw8kSUl01oVWEuqxLDa802222MYyWHg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/propagator-b3@1.25.1': + resolution: {integrity: sha512-p6HFscpjrv7//kE+7L+3Vn00VEDUJB0n6ZrjkTYHrJ58QZ8B3ajSJhRbCcY6guQ3PDjTbxWklyvIN2ojVbIb1A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/propagator-jaeger@1.25.1': + resolution: {integrity: sha512-nBprRf0+jlgxks78G/xq72PipVK+4or9Ypntw0gVZYNTCSK8rg5SeaGV19tV920CMqBD/9UIOiFr23Li/Q8tiA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/resources@1.25.1': + resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-logs@0.50.0': - resolution: {integrity: sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==} + '@opentelemetry/sdk-logs@0.52.1': + resolution: {integrity: sha512-MBYh+WcPPsN8YpRHRmK1Hsca9pVlyyKd4BxOC4SsgHACnl/bPp4Cri9hWhVm5+2tiQ9Zf4qSc1Jshw9tOLGWQA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.9.0' - '@opentelemetry/api-logs': '>=0.39.1' + '@opentelemetry/api': '>=1.4.0 <1.10.0' - '@opentelemetry/sdk-metrics@1.23.0': - resolution: {integrity: sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==} + '@opentelemetry/sdk-metrics@1.25.1': + resolution: {integrity: sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.9.0' + '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@1.23.0': - resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==} + '@opentelemetry/sdk-node@0.52.1': + resolution: {integrity: sha512-uEG+gtEr6eKd8CVWeKMhH2olcCHM9dEK68pe0qE0be32BcCRsvYURhHaD1Srngh1SQcnQzZ4TP324euxqtBOJA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@1.25.0': - resolution: {integrity: sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ==} + '@opentelemetry/sdk-trace-base@1.25.1': + resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.23.0': - resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==} + '@opentelemetry/sdk-trace-node@1.25.1': + resolution: {integrity: sha512-nMcjFIKxnFqoez4gUmihdBrbpsEnAX/Xj16sGvZm+guceYE0NE00vLhpDVK6f3q8Q4VFI5xG8JjlXKMB/SkTTQ==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.25.0': - resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==} + '@opentelemetry/semantic-conventions@1.25.1': + resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} engines: {node: '>=14'} '@parcel/watcher-android-arm64@2.4.1': @@ -1448,20 +1436,13 @@ packages: '@redocly/ajv@8.11.0': resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} - '@redocly/config@0.6.0': - resolution: {integrity: sha512-hNVN3eTxFj2nHYX0gGzZxxXwdE0DXWeWou1TIK3HYf0S9VKVxTxjO9EZbMB7iVUqaHkeqy4PSjlBQcEgD0Ftjg==} + '@redocly/config@0.6.2': + resolution: {integrity: sha512-c3K5u64eMnr2ootPcpEI0ioIRLE8QP8ptvLxG9MwAmb2sU8HMRfVwXDU3AZiMVY2w4Ts0mDc+Xv4HTIk8DRqFw==} - '@redocly/openapi-core@1.16.0': - resolution: {integrity: sha512-z06h+svyqbUcdAaePq8LPSwTPlm6Ig7j2VlL8skPBYnJvyaQ2IN7x/JkOvRL4ta+wcOCBdAex5JWnZbKaNktJg==} + '@redocly/openapi-core@1.17.0': + resolution: {integrity: sha512-XoNIuksnOGAzAcfpyJkHrMxwurXaQfglnovNE7/pTx4OEjik3OT91+tKAyRCkklVCdMtAA3YokGMZzdhjViUWA==} engines: {node: '>=14.19.0', npm: '>=7.0.0'} - '@replit/codemirror-css-color-picker@6.1.1': - resolution: {integrity: sha512-e/wYHcgt3HRDpvYuwqXyjv3LEY6VyFjJeDQK1UtFmaykp86R6Cbw3ULH9pvuJuelaW6nS4CVtIRHuOfbFLlqwQ==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@rollup/plugin-alias@5.1.0': resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} @@ -1471,15 +1452,6 @@ packages: rollup: optional: true - '@rollup/plugin-commonjs@25.0.8': - resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-commonjs@26.0.1': resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -1627,40 +1599,32 @@ packages: cpu: [x64] os: [win32] - '@scalar/api-client-modal@0.0.10': - resolution: {integrity: sha512-LZbo8S8aUuuxSRK4pY1LI8Q5AVyVGyQNviWIblc6CyxMCKIBg0Rd1UwJryoO2aYyr9xyctw3cMxFULJudfRm7g==} - engines: {node: '>=18'} - - '@scalar/api-client@1.3.12': - resolution: {integrity: sha512-BVZorvaN1nQAqVRG/xpjdwTHFbvhacVunpYxk1Zi8++r/TVuuRpvHD3hSNzseGq2Cz3FlW23a5urL64tf1+/Dw==} - engines: {node: '>=18'} - - '@scalar/api-reference@1.24.11': - resolution: {integrity: sha512-On7D92MIoOoSm1YbB5MlLkiIC2dz1AetbSBHF91jHngjw7x1Vig3c5sCqfMzRhd8Q7re+KA8UqvZ0kkdeZ0F0w==} + '@scalar/api-client@2.0.5': + resolution: {integrity: sha512-s74zPufoKT0//zGlxhoXlSH1KXxSG/kfoEGNJFAjU79dAgOflFdW4z803hWTWlkbq2/LSHDqxWYT2VgDhYhN/Q==} engines: {node: '>=18'} - '@scalar/client-app@0.1.8': - resolution: {integrity: sha512-gxqaznDKcoINFXkELEvTTzeGf4Q7RIOUkxlVi9QL8m+Ns50WH+oZ7RoVfCBYxRymjRu7ajgmg6ODTKFN9Hn18A==} + '@scalar/api-reference@1.24.28': + resolution: {integrity: sha512-MbKvxAZ458qb/BHF6W1IjRm0816IhgVzk9kF1K3qgFoGexydluI/GkqNItf2TWkGEMFu7My8qj9SMQ8ICDjJDg==} engines: {node: '>=18'} - '@scalar/code-highlight@0.0.3': - resolution: {integrity: sha512-cFc0zA36MFg9HHcl+uIlrzknMpR909jzCm2IYiaMTCVB09CF+GJpItxEDpV445O4ZEeSeheOlrC5Ms9pBfxINA==} + '@scalar/code-highlight@0.0.5': + resolution: {integrity: sha512-/8Q68WBvrVeqda5sW6E0mxmLwK0vbuDPHyfuugkYlHj9F7o5lKV+VviBxeaUh18nbGp3qWjdxv6X2mbUe2TyNA==} engines: {node: '>=18'} - '@scalar/components@0.11.5': - resolution: {integrity: sha512-vertJhsNhBe/oECDLX9HaJd7RSYvANFwHuA81SdnOdaQmJ2Raeo/NSmWONmWmm01M8mK956kavp2ASgFDS9XOQ==} + '@scalar/components@0.12.7': + resolution: {integrity: sha512-COOBcra5QuoISpLqr6UqrwgOOSJPEQxmDtgDf+JrjbqTfDBLc513y7SJd93JYPtMo1+k5idLVePCrHRmuAQC8A==} engines: {node: '>=18'} - '@scalar/draggable@0.1.2': - resolution: {integrity: sha512-fcQMzJDWNCJkKxiua20LiZB0J3rkEANVdCX+2+z4x2uEpmRcQx3TqT2/aETs9OmNqr/jlNMtSubUqAgBnDpc/A==} + '@scalar/draggable@0.1.3': + resolution: {integrity: sha512-A6lUgTV8q/zJGkzHerY1T+X3l3GXmCCg09Z7OU7j6yDyyuj2BSTblthncoD5sN3BdwLjHwkm9ecehfvaE0pj5w==} engines: {node: '>=18'} - '@scalar/oas-utils@0.2.3': - resolution: {integrity: sha512-3cS88eNtds38LR3hZrG6ztY7Z8yb5YG2B4AMG2gLSXeGKUKNM1V1Me6jdAHoKEXbM/nMIYTqsXM3Y08D5Ttd+g==} + '@scalar/oas-utils@0.2.8': + resolution: {integrity: sha512-Zj3hGTvLIA8Rrt5xI6Sgtr0/8VP485umSD0+1Q3129f85Cfc3YiTQm1LHk3obXc65z4182IzzAuQafpOQ7fKgg==} engines: {node: '>=18'} - '@scalar/object-utils@1.1.1': - resolution: {integrity: sha512-U9hf1vA48qQQtyfvdWIdybn1csVid0bsxr9lqpYs++6Q/aaB+9E+tzAysLKiJYDbRmKcOh6O51GZhOXtikN6IA==} + '@scalar/object-utils@1.1.2': + resolution: {integrity: sha512-93Yhb68Lt5WWSyI8HIpqNZUlnxhx8v/XW7Mxt6V7NFXbOmp9wY3MlTf1qsbWaYfmkqcwEAhO/2rAy1RB9tLJvg==} engines: {node: '>=18'} '@scalar/openapi-parser@0.7.1': @@ -1688,20 +1652,16 @@ packages: '@scalar/snippetz@0.1.6': resolution: {integrity: sha512-z3DEpT/FIZq9yeHL/tz2v6WvdHIiZ4uvK96RdeTPKUUJ0IXvA5vONG3PF5LE0Q/408PCzWsZpGs9f97ztaeJSQ==} - '@scalar/themes@0.9.4': - resolution: {integrity: sha512-J/a8FbfNotdx/rfgScpKw7qwj3JsK8Zr3Dw710e9unFj83T0dfAaOhKahWgkfD0bIoaWbPqIsGEQywrTM75SnA==} + '@scalar/themes@0.9.10': + resolution: {integrity: sha512-TEMDZFgg0VPwhdwiqn+4+YAL3ZtzhUorf1GG80jla4iyQAR0AhJ8dwrFUcBSBHlAwMeOa4CFBKJ4SDSevWmRIA==} engines: {node: '>=18'} - '@scalar/use-codemirror@0.11.2': - resolution: {integrity: sha512-GaVXI8I1ONBquV07i+CBnH1Tr3mIEVtctaN4MUoSJ+2OxiEEfzK2uDvmqtXaS1aFh/4aU2u9aIvkmBoeYf+5hQ==} + '@scalar/use-toasts@0.7.4': + resolution: {integrity: sha512-LvnY0Gl0G09kgf65A3ArtZ1pOjB3Y7Rs29IS2GRlVKICGYOgdiWEdeWzXZCMtvvmIEM+LH5FTbuoqpiwXJ1OXg==} engines: {node: '>=18'} - '@scalar/use-toasts@0.7.2': - resolution: {integrity: sha512-trMGfjL0VmZA8Kgk4xUTBxnHHlnvaVNjFWo3dl+bkh9AzH3nYVcRrqh47Yu9M/gzydf8QNn5JWuV/CxsCrIzIA==} - engines: {node: '>=18'} - - '@scalar/use-tooltip@0.7.3': - resolution: {integrity: sha512-tTJaoO5iD9IE+zxs3u2iOXvRbhRm04BR2xKU6/vPbdqZ1ipsO9TWKMLlgzkO33701WmgbXEF5fgDLba+cul7hA==} + '@scalar/use-tooltip@1.0.2': + resolution: {integrity: sha512-bj3RkmGGtCPNgEuopNLOXfQtFM3KnsfAQc9LQEr6iC9FNUa+Ddrlq85wgAK4W740aducchrgK+fBZDpXQbzQTw==} engines: {node: '>=18'} '@sec-ant/readable-stream@0.4.1': @@ -1731,51 +1691,54 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@storybook/channels@8.1.7': - resolution: {integrity: sha512-L1jrgaleNBTLNRH35iNxmIDWEqFhouDbq7Vii9FgjSOJdScUHVdtxzC8A2ymXlQCiD5ggQ5HzmUJaY6RTfwGRg==} + '@storybook/channels@8.1.11': + resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} - '@storybook/client-logger@8.1.7': - resolution: {integrity: sha512-Cmdt9qpyIQZcVR3y16464vrO06YFaWice+wQZ1OIror8XBqkpUxgZldQ95uTed6Wz9igf0PEYyaV8jJrGcHMrA==} + '@storybook/client-logger@8.1.11': + resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} - '@storybook/core-events@8.1.7': - resolution: {integrity: sha512-cASpI+C+S1DUiO7schq7jKwvEuFwkqR24PTQxe4o77DMiryCJZgw+YlUHXS8EodKJW5cLVB3wd3fHAYYfeyWGg==} + '@storybook/core-events@8.1.11': + resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} - '@storybook/csf@0.1.8': - resolution: {integrity: sha512-Ntab9o7LjBCbFIao5l42itFiaSh/Qu+l16l/r/9qmV9LnYZkO+JQ7tzhdlwpgJfhs+B5xeejpdAtftDRyXNajw==} + '@storybook/csf@0.1.11': + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/instrumenter@8.1.7': - resolution: {integrity: sha512-B3bBCqEf10pbGE67sAFuZ/zRKdeDEqJG0hAAPQqXG+7us2qu7KLUqtBRIBVyoDVLxjelU6FY4BRm3gSLTb0STQ==} + '@storybook/instrumenter@8.1.11': + resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} + + '@storybook/preview-api@8.1.11': + resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} - '@storybook/preview-api@8.1.7': - resolution: {integrity: sha512-eWLdr+VvTsaLP98B5wXEW1x5ep1hhQq9TOBdZ6PFnvifvHDfxiEOLlIYarQ1l8g8MJ0BjBF8xfVbO5TFxAdnFA==} + '@storybook/test@8.1.11': + resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} - '@storybook/test@8.1.7': - resolution: {integrity: sha512-/8AZs4GVH4A5m41AL1MMuTnWqgJZntaVO/ZgV3vqUM+L6KfQNffT56061ix84V4tIY9MT9xFhEooMP8v3techA==} + '@storybook/types@8.1.11': + resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} - '@storybook/types@8.1.7': - resolution: {integrity: sha512-OkdxFvqvRc6eCOMwLyx8zCTAox71PcEW+0BZgZGeL7uunF5pA615LFCU79LfwY/dUQNjbv9HhQu/feTu16GVvQ==} + '@swc/helpers@0.5.11': + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} - '@tanstack/virtual-core@3.5.1': - resolution: {integrity: sha512-046+AUSiDru/V9pajE1du8WayvBKeCvJ2NmKPy/mR8/SbKKrqmSbj7LJBfXE+nSq4f5TBXvnCzu0kcYebI9WdQ==} + '@tanstack/virtual-core@3.8.1': + resolution: {integrity: sha512-uNtAwenT276M9QYCjTBoHZ8X3MUeCRoGK59zPi92hMIxdfS9AyHjkDWJ94WroDxnv48UE+hIeo21BU84jKc8aQ==} - '@tanstack/vue-virtual@3.5.1': - resolution: {integrity: sha512-6mc4HtDPieDVKD6GqzHiJkdzuqRNdQZuoIbkwE6af939WV+w62YmSF69jN+BOqClqh/ObiW+X1VOQx1Pftrx1A==} + '@tanstack/vue-virtual@3.8.1': + resolution: {integrity: sha512-uhty1LzUbbcVc5zdMMSUjUt/ECTlMCtK49Ww7dH2m4lNNLGYwkj5SbfrAD8uCZxV1VeV7DRMXqhwUTELyR5rrA==} peerDependencies: vue: ^2.7.0 || ^3.0.0 - '@testing-library/dom@9.3.4': - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} + '@testing-library/dom@10.1.0': + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} - '@testing-library/jest-dom@6.4.6': - resolution: {integrity: sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==} + '@testing-library/jest-dom@6.4.5': + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: '@jest/globals': '>= 28' @@ -1821,8 +1784,8 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - '@types/bun@1.1.4': - resolution: {integrity: sha512-ejSuv/3s0hTHj/nkkLzBlHxm4JxOPygbLNi0kzM6ooq8rOiQvIUCv7RRErTaWSfb+QVnKz6x7qlp8N86bGDiIg==} + '@types/bun@1.1.6': + resolution: {integrity: sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==} '@types/caseless@0.12.5': resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} @@ -1848,8 +1811,8 @@ packages: '@types/etag@1.8.3': resolution: {integrity: sha512-QYHv9Yeh1ZYSMPQOoxY4XC4F1r+xRUiAriB303F4G6uBsT3KKX60DjiogvVv+2VISVDuJhcIzMdbjT+Bm938QQ==} - '@types/express-serve-static-core@4.19.3': - resolution: {integrity: sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==} + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -1887,8 +1850,8 @@ packages: '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/lodash@4.17.5': - resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} + '@types/lodash@4.17.6': + resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} @@ -1920,8 +1883,8 @@ packages: '@types/node@20.12.14': resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==} - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} + '@types/node@20.14.9': + resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} '@types/node@8.10.66': resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} @@ -1959,6 +1922,9 @@ packages: '@types/serve-static@1.15.7': resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/shimmer@1.0.5': + resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==} + '@types/tmp@0.0.33': resolution: {integrity: sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==} @@ -1980,8 +1946,8 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@7.13.0': - resolution: {integrity: sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==} + '@typescript-eslint/eslint-plugin@7.15.0': + resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1991,8 +1957,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.13.0': - resolution: {integrity: sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==} + '@typescript-eslint/parser@7.15.0': + resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -2001,12 +1967,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.13.0': - resolution: {integrity: sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==} + '@typescript-eslint/scope-manager@7.15.0': + resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.13.0': - resolution: {integrity: sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==} + '@typescript-eslint/type-utils@7.15.0': + resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -2015,12 +1981,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.13.0': - resolution: {integrity: sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==} + '@typescript-eslint/types@7.15.0': + resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.13.0': - resolution: {integrity: sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==} + '@typescript-eslint/typescript-estree@7.15.0': + resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -2028,34 +1994,32 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.13.0': - resolution: {integrity: sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==} + '@typescript-eslint/utils@7.15.0': + resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.13.0': - resolution: {integrity: sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==} + '@typescript-eslint/visitor-keys@7.15.0': + resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} engines: {node: ^18.18.0 || >=20.0.0} - '@uiw/codemirror-themes@4.22.2': - resolution: {integrity: sha512-gsLHn6SUuV5iboBvGrM7YimzLFHQmsNlkGIYs3UaVUJTo/A/ZrKoSJNyPziShLRjBXA2UwKdBTIU6VhHyyaChw==} - peerDependencies: - '@codemirror/language': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@unhead/dom@1.9.12': - resolution: {integrity: sha512-3MY1TbZmEjGNZapi3wvJW0vWNS2CLKHt7/m57sScDHCNvNBe1mTwrIOhtZFDgAndhml2EVQ68RMa0Vhum/M+cw==} + '@unhead/dom@1.9.14': + resolution: {integrity: sha512-XZSZ2Wmm1Sv7k9scSFGrarbteSIl3p3I3oOUprKPDboBTvuG5q81Qz8O99NKUGKGJ8BKUkxCqE982eH3S8DKJA==} + + '@unhead/schema@1.9.14': + resolution: {integrity: sha512-60NYSM6QjfK/wx4/QfaYyZ3XnNtwxS9a1oij2abEkGHPmA2/fqBOXeuHtnBo4eD42/Eg+owcS5s3mClPL8AkXw==} - '@unhead/schema@1.9.12': - resolution: {integrity: sha512-ue2FKyIZKsuZDpWJBMlBGwMm4s+vFeU3NUWsNt8Z+2JkOUIqO/VG43LxNgY1M595bOS71Gdxk+G9VtzfKJ5uEA==} + '@unhead/shared@1.9.14': + resolution: {integrity: sha512-7ZIC7uDV8gp3KHm5JxJ/NXMENQgkh+SCyTcsILSpOhkAGeszMHABrB6vjeZDGM4J9mRUxwyPn24KI2zG/R+XiQ==} - '@unhead/shared@1.9.12': - resolution: {integrity: sha512-72wlLXG3FP3sXUrwd42Uv8jYpHSg4R6IFJcsl+QisRjKM89JnjOFSw1DqWO4IOftW5xOxS4J5v7SQyJ4NJo7Bw==} + '@unhead/vue@1.9.14': + resolution: {integrity: sha512-Yc7Qv0ze+iLte4urHiA+ghkF7y+svrawrT+ZrCuGXkZ/eRTF/AY2SKex+rJQJZsP+fKEQ2pGb72IsI5kHFZT3A==} + peerDependencies: + vue: '>=2.7 || >=3' '@vercel/nft@0.27.2': resolution: {integrity: sha512-7LeioS1yE5hwPpQfD3DdH04tuugKjo5KrJk3yK5kAI3Lh76iSsK/ezoFQfzuT08X3ZASQOd1y9ePjLNI9+TxTQ==} @@ -2067,9 +2031,6 @@ packages: peerDependencies: vitest: 1.6.0 - '@vitest/expect@1.3.1': - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} - '@vitest/expect@1.6.0': resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} @@ -2079,49 +2040,43 @@ packages: '@vitest/snapshot@1.6.0': resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/spy@1.3.1': - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} - '@vitest/spy@1.6.0': resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/utils@1.3.1': - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} - '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@vue/compiler-core@3.4.27': - resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} + '@vue/compiler-core@3.4.31': + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} - '@vue/compiler-dom@3.4.27': - resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} + '@vue/compiler-dom@3.4.31': + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - '@vue/compiler-sfc@3.4.27': - resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} + '@vue/compiler-sfc@3.4.31': + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} - '@vue/compiler-ssr@3.4.27': - resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} + '@vue/compiler-ssr@3.4.31': + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} '@vue/devtools-api@6.6.3': resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - '@vue/reactivity@3.4.27': - resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} + '@vue/reactivity@3.4.31': + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} - '@vue/runtime-core@3.4.27': - resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} + '@vue/runtime-core@3.4.31': + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} - '@vue/runtime-dom@3.4.27': - resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} + '@vue/runtime-dom@3.4.31': + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} - '@vue/server-renderer@3.4.27': - resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} + '@vue/server-renderer@3.4.31': + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} peerDependencies: - vue: 3.4.27 + vue: 3.4.31 - '@vue/shared@3.4.27': - resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} '@vueuse/core@10.11.0': resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} @@ -2153,12 +2108,12 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} engines: {node: '>=0.4.0'} hasBin: true @@ -2263,16 +2218,13 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -2342,8 +2294,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - better-sqlite3@11.0.0: - resolution: {integrity: sha512-1NnNhmT3EZTsKtofJlMox1jkMxdedILury74PwUbQBjWgo4tL4kf7uTAjU55mgQwjdzqakSTjkf+E1imrFwjnA==} + better-sqlite3@11.1.1: + resolution: {integrity: sha512-bAlQQb7gwCgxNpDYafK0O4AaIOiTwA7srfqRtBbw0Nsiq6P+qxEYGl3hLw+9C5jX2FVjKW7oxkSouxlJ+3VX8A==} better-sqlite3@8.7.0: resolution: {integrity: sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==} @@ -2415,8 +2367,8 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bun-types@1.1.13: - resolution: {integrity: sha512-G/TqF0SsMQGLr4g7K3B2BK8BrPEA1EqCNwxZbyRdj5M4t54zvwyaqvRJOW34kuPqc2IvNNalRU3swc8B4oc4FA==} + bun-types@1.1.17: + resolution: {integrity: sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg==} bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} @@ -2434,6 +2386,14 @@ packages: magicast: optional: true + c12@2.0.0-beta.1: + resolution: {integrity: sha512-/m7oUlw0XGeiG4e4xx1s4dqCtTuZiGm79WFbo/n/ppbtEmPKez1xDvaTIfpnHBhuQ7OC78rxCdhMpYkQHLyHnA==} + peerDependencies: + magicast: ^0.3.4 + peerDependenciesMeta: + magicast: + optional: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2461,8 +2421,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001632: - resolution: {integrity: sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==} + caniuse-lite@1.0.30001639: + resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} @@ -2539,6 +2499,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -2582,9 +2545,6 @@ packages: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - codemirror@6.0.1: - resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -2719,9 +2679,6 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} - crelt@1.0.6: - resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - croner@8.0.2: resolution: {integrity: sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==} engines: {node: '>=18.0'} @@ -2774,8 +2731,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.2: - resolution: {integrity: sha512-z95kGKZx8VWHfERj7LFzuiTxylbvEp07ZEYaFu+t6bFyNOXLd/+3oPyNaY7ISwcrfHFCkt8OfRo4IZxVRJZ7dg==} + cssnano-preset-default@7.0.3: + resolution: {integrity: sha512-dQ3Ba1p/oewICp/szF1XjFFgql8OlOBrI2YNBUUwhHQnJNoMOcQTa+Bi7jSJN8r/eM1egW0Ud1se/S7qlduWKA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -2786,8 +2743,8 @@ packages: peerDependencies: postcss: ^8.4.31 - cssnano@7.0.2: - resolution: {integrity: sha512-LXm/Xx6TNLzfHM2lBaIQHfvtdW5QfdbyLzfJAWZrclCAb47yVa0/yJG69+amcw3Lq0YZ+kyU40rbsMPLcMt9aw==} + cssnano@7.0.3: + resolution: {integrity: sha512-lsekJctOTqdCn4cNrtrSwsuMR/fHC+oiVMHkp/OugBWtwjH8XJag1/OtGaYJGtz0un1fQcRy4ryfYTQsfh+KSQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -2868,10 +2825,6 @@ packages: resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -2913,10 +2866,6 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -3033,8 +2982,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.799: - resolution: {integrity: sha512-3D3DwWkRTzrdEpntY0hMLYwj7SeBk1138CkPE8sBDSj3WzrzOiG2rHm3luw8jucpf+WiyLBCZyU9lMHyQI9M9Q==} + electron-to-chromium@1.4.816: + resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3067,23 +3016,20 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es6-promisify@7.0.0: resolution: {integrity: sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==} engines: {node: '>=6'} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -3137,13 +3083,13 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.5.0: - resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} + eslint@9.6.0: + resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true - espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esquery@1.5.0: @@ -3195,8 +3141,8 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.2.0: - resolution: {integrity: sha512-vpOyYg7UAVKLAWWtRS2gAdgkT7oJbCn0me3gmUmxZih4kd3MF/oo8kNTBTIbkO3yuuF5uB4ZCZfn8BOolITYhg==} + execa@9.3.0: + resolution: {integrity: sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==} engines: {node: ^18.19.0 || >=20.5.0} exit-hook@2.2.1: @@ -3218,9 +3164,9 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - farmhash@3.3.1: - resolution: {integrity: sha512-XUizHanzlr/v7suBr/o85HSakOoWh6HKXZjFYl5C2+Gj0f0rkw+XTUZzrd9odDsgI9G5tRUcF4wSbKaX04T0DQ==} - engines: {node: '>=10'} + farmhash-modern@1.1.0: + resolution: {integrity: sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==} + engines: {node: '>=18.0.0'} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3283,8 +3229,8 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - firebase-admin@12.1.1: - resolution: {integrity: sha512-Nuoxk//gaYrspS7TvwBINdGvFhh2QeiaWpRW6+PJ+tWyn2/CugBc7jKa1NaBg0AvhGSOXFOCIsXhzCzHA47Rew==} + firebase-admin@12.2.0: + resolution: {integrity: sha512-R9xxENvPA/19XJ3mv0Kxfbz9kPXd9/HrM4083LZWOO0qAQGheRzcCQamYRe+JSrV2cdKXP3ZsfFGTYMrFM0pJg==} engines: {node: '>=14'} firebase-functions@4.9.0: @@ -3313,8 +3259,8 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.2.0: - resolution: {integrity: sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==} + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} form-data@2.5.1: @@ -3369,9 +3315,6 @@ packages: functional-red-black-tree@1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - fuse.js@7.0.0: resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} engines: {node: '>=10'} @@ -3381,8 +3324,8 @@ packages: engines: {node: '>=10'} deprecated: This package is no longer supported. - gaxios@6.6.0: - resolution: {integrity: sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==} + gaxios@6.7.0: + resolution: {integrity: sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==} engines: {node: '>=14'} gcp-metadata@6.1.0: @@ -3462,8 +3405,8 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.1: - resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} engines: {node: '>=16 || 14 >=14.18'} hasBin: true @@ -3471,11 +3414,6 @@ packages: 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-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -3488,27 +3426,27 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.4.0: - resolution: {integrity: sha512-unnwvMZpv0eDUyjNyh9DH/yxUaRYrEjW/qK4QcdrHg3oO11igUQrCSgODHEqxlKg8v2CD2Sd7UkqqEBoz5U7TQ==} + globals@15.8.0: + resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==} engines: {node: '>=18'} globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@14.0.1: - resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - google-auth-library@9.10.0: - resolution: {integrity: sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==} + google-auth-library@9.11.0: + resolution: {integrity: sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==} engines: {node: '>=14'} - google-gax@4.3.6: - resolution: {integrity: sha512-z3MR+pE6WqU+tnKtkJl4c723EYY7Il4fcSNgEbehzUJpcNWkca9AyoC2pdBWmEa0cda21VRpUBb4s6VSATiUKg==} + google-gax@4.3.7: + resolution: {integrity: sha512-3bnD8RASQyaxOYTdWLgwpQco/aytTxFavoI/UN5QN5txDLp8QRrBHNtCUJ5+Ago+551GD92jG8jJduwvmaneUw==} engines: {node: '>=14'} gopd@1.0.1: @@ -3532,11 +3470,8 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + h3@1.12.0: + resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -3596,8 +3531,8 @@ packages: hast-util-phrasing@3.0.1: resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - hast-util-raw@9.0.3: - resolution: {integrity: sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==} + hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} hast-util-sanitize@5.0.1: resolution: {integrity: sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==} @@ -3675,8 +3610,8 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} httpsnippet-lite@3.0.5: @@ -3721,6 +3656,9 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-in-the-middle@1.8.1: + resolution: {integrity: sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng==} + import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} engines: {node: '>=4'} @@ -3755,10 +3693,6 @@ packages: resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} engines: {node: '>=10'} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - ioredis@5.4.1: resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} engines: {node: '>=12.22.0'} @@ -3788,24 +3722,13 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} @@ -3821,11 +3744,8 @@ packages: resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} hasBin: true - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} engines: {node: '>= 0.4'} is-decimal@1.0.4: @@ -3877,10 +3797,6 @@ packages: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} @@ -3888,10 +3804,6 @@ packages: resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} engines: {node: '>=10'} - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3915,22 +3827,10 @@ packages: is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3943,14 +3843,6 @@ packages: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} @@ -3969,14 +3861,6 @@ packages: is-valid-domain@0.1.6: resolution: {integrity: sha512-ZKtq737eFkZr71At8NxOFcP9O1K89gW3DkdrGMpp1upr/ueWjj+Weh4l9AI4rN0Gt8W2M1w7jrG2b/Yv83Ljpg==} - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -3995,15 +3879,9 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isomorphic.js@0.2.5: - resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -4012,8 +3890,8 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.4: - resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} istanbul-reports@3.1.7: @@ -4024,15 +3902,19 @@ packages: resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@2.0.0-beta.3: + resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} hasBin: true - joi@17.13.1: - resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + jose@4.15.7: + resolution: {integrity: sha512-L7ioP+JAuZe8v+T5+zVI9Tx8LtU8BL7NxkyDFVMv+Qr3JW0jSoYDedLtodaXwfqMpeCyx4WXFNyu9tJt4WvC1A==} - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} @@ -4157,11 +4039,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lib0@0.2.94: - resolution: {integrity: sha512-hZ3p54jL4Wpu7IOg26uC7dnEWiMyNlUrb9KoG7+xYs45WkQwpVvKFndVq2+pqLYKe1u8Fp3+zAfZHVvTK34PvQ==} - engines: {node: '>=16'} - hasBin: true - lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -4270,8 +4147,8 @@ packages: lowlight@3.1.0: resolution: {integrity: sha512-CEbNVoSikAxwDMDPjXlqlFYiZLkDJHwyGu/MfOsJnF3d7f3tds5J3z8s/l9TMXhzfsJCCJEAsD78842mwmg0PQ==} - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + lru-cache@10.3.0: + resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} engines: {node: 14 || >=16.14} lru-cache@5.1.1: @@ -4520,8 +4397,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - miniflare@3.20240610.1: - resolution: {integrity: sha512-ZkfSpBmX3nJW00yYhvF2kGvjb6f77TOimRR6+2GQvsArbwo6e0iYqLGM9aB/cnJzgFjLMvOv1qj4756iynSxJQ==} + miniflare@3.20240620.0: + resolution: {integrity: sha512-NBMzqUE2mMlh/hIdt6U5MP+aFhEjKDq3l8CAajXAQa1WkndJdciWvzB2mfLETwoVFhMl/lphaVzyEN2AgwJpbQ==} engines: {node: '>=16.13'} hasBin: true @@ -4532,8 +4409,8 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -4567,13 +4444,13 @@ packages: engines: {node: '>=10'} hasBin: true - mkdist@1.5.1: - resolution: {integrity: sha512-lCu1spNiA52o7IaKgZnOjg28nNHwYqUDjBfXePXyUtzD7Xhe6rRTkGTalQ/ALfrZC/SrPw2+A/0qkeJ+fPDZtQ==} + mkdist@1.5.3: + resolution: {integrity: sha512-XXvaXyS3k/fCExY2/c9z0fmJ9kWq/UZeZZGQ0R693M004lowXNJKIENdH5Cf5Uu3LtSB9vhGu/1YM7IGjWbfxA==} hasBin: true peerDependencies: - sass: ^1.75.0 + sass: ^1.77.6 typescript: '>=5.4.5' - vue-tsc: ^1.8.27 || ^2.0.14 + vue-tsc: ^1.8.27 || ^2.0.21 peerDependenciesMeta: sass: optional: true @@ -4585,6 +4462,9 @@ packages: mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + module-details-from-path@1.0.3: + resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -4629,16 +4509,13 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - node-abi@3.64.0: - resolution: {integrity: sha512-lxowHVCx3o1zfKJthjWh6WI8Eyi4gdTaK9bUc3oTjYv9j8sp5gSiufkOvoYZ1LgmZKngWUkS5a8G1RSuLWtPgg==} + node-abi@3.65.0: + resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} engines: {node: '>=10'} node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - node-addon-api@7.1.0: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} engines: {node: ^16 || ^18 || >= 20} @@ -4705,8 +4582,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.3.8: - resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==} + nypm@0.3.9: + resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true @@ -4718,19 +4595,8 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} ofetch@1.3.4: @@ -4820,6 +4686,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-json@6.5.0: resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} engines: {node: '>=8'} @@ -4926,8 +4795,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-types@1.1.1: - resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -4943,20 +4812,20 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.0: - resolution: {integrity: sha512-5CN6fqtsEtEtwf3mFV3B4UaZnlYljPpzmGeDB4yCK067PnAtfLe9uX2aFZaEwxHE7HopG5rUkW8gyHrNAesHEg==} + postcss-colormin@7.0.1: + resolution: {integrity: sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-convert-values@7.0.0: - resolution: {integrity: sha512-bMuzDgXBbFbByPgj+/r6va8zNuIDUaIIbvAFgdO1t3zdgJZ77BZvu6dfWyd6gHEJnYzmeVr9ayUsAQL3/qLJ0w==} + postcss-convert-values@7.0.1: + resolution: {integrity: sha512-9x2ofb+hYPwHWMlWAzyWys2yMDZYGfkX9LodbaVTmLdlupmtH2AGvj8Up95wzzNPRDEzPIxQIkUaPJew3bT6xA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-discard-comments@7.0.0: - resolution: {integrity: sha512-xpSdzRqYmy4YIVmjfGyYXKaI1SRnK6CTr+4Zmvyof8ANwvgfZgGdVtmgAvzh59gJm808mJCWQC9tFN0KF5dEXA==} + postcss-discard-comments@7.0.1: + resolution: {integrity: sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -5003,14 +4872,14 @@ packages: ts-node: optional: true - postcss-merge-longhand@7.0.1: - resolution: {integrity: sha512-qZlD26hnqSTMxSSOMS8+QCeRWtqOdMKeQHvHcBhjL3mJxKUs47cvO1Y1x3iTdYIk3ioMcRHTiy229TT0mEMH/A==} + postcss-merge-longhand@7.0.2: + resolution: {integrity: sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-merge-rules@7.0.1: - resolution: {integrity: sha512-bb8McYQbo2etgs0uVt6AfngajACK3FHSVP3sGLhprrjbtHJWgG03JZ4KKBlJ8/5Fb8/Rr+mMKaybMYeoYrAg0A==} + postcss-merge-rules@7.0.2: + resolution: {integrity: sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -5027,14 +4896,14 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-minify-params@7.0.0: - resolution: {integrity: sha512-XOJAuX8Q/9GT1sGxlUvaFEe2H9n50bniLZblXXsAT/BwSfFYvzSZeFG7uupwc0KbKpTnflnQ7aMwGzX6JUWliQ==} + postcss-minify-params@7.0.1: + resolution: {integrity: sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-minify-selectors@7.0.1: - resolution: {integrity: sha512-YfIbGtcgMFquPxV2L/ASs36ZS4DsgfcDX9tQ8cTEIvBTv+0GXFKtcvvpi9tCKto/+DWGWYKMCESFG3Pnan0Feg==} + postcss-minify-selectors@7.0.2: + resolution: {integrity: sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -5081,8 +4950,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-normalize-unicode@7.0.0: - resolution: {integrity: sha512-OnKV52/VFFDAim4n0pdI+JAhsolLBdnCKxE6VV5lW5Q/JeVGFN8UM8ur6/A3EAMLsT1ZRm3fDHh/rBoBQpqi2w==} + postcss-normalize-unicode@7.0.1: + resolution: {integrity: sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -5099,14 +4968,14 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-ordered-values@7.0.0: - resolution: {integrity: sha512-KROvC63A8UQW1eYDljQe1dtwc1E/M+mMwDT6z7khV/weHYLWTghaLRLunU7x1xw85lWFwVZOAGakxekYvKV+0w==} + postcss-ordered-values@7.0.1: + resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 - postcss-reduce-initial@7.0.0: - resolution: {integrity: sha512-iqGgmBxY9LrblZ0BKLjmrA1mC/cf9A/wYCCqSmD6tMi+xAyVl0+DfixZIHSVDMbCPRPjNmVF0DFGth/IDGelFQ==} + postcss-reduce-initial@7.0.1: + resolution: {integrity: sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -5136,8 +5005,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.2: @@ -5203,10 +5072,6 @@ packages: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} - protobufjs@7.3.0: - resolution: {integrity: sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==} - engines: {node: '>=12.0.0'} - protobufjs@7.3.2: resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==} engines: {node: '>=12.0.0'} @@ -5233,8 +5098,8 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + qs@6.12.2: + resolution: {integrity: sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -5243,6 +5108,11 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + radix-vue@1.8.5: + resolution: {integrity: sha512-aWRa/tc5EHS2U4h8YTovRtwSMt+Sbk4QRekNTpkshCWlq353mpGBsp0ME/4seOxWn7JKze8NA3pDx/AQuH2tMw==} + peerDependencies: + vue: '>= 3.2.0' + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -5321,10 +5191,6 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - registry-auth-token@4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} engines: {node: '>=6.0.0'} @@ -5381,6 +5247,10 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + require-in-the-middle@7.3.0: + resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==} + engines: {node: '>=8.6.0'} + requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -5514,10 +5384,6 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5532,6 +5398,9 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -5623,10 +5492,6 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -5702,11 +5567,8 @@ packages: stubs@3.0.0: resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - style-mod@4.1.2: - resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} - - stylehacks@7.0.1: - resolution: {integrity: sha512-PnrT4HzajnxbjfChpeBKLSpSykilnGBlD+pIffCoT5KbLur9fcL8uKRQJJap85byR2wCYZl/4Otk5eq76qeZxQ==} + stylehacks@7.0.2: + resolution: {integrity: sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.31 @@ -5907,8 +5769,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.20.0: - resolution: {integrity: sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==} + type-fest@4.21.0: + resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==} engines: {node: '>=16'} type-is@1.6.18: @@ -5918,8 +5780,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@7.13.0: - resolution: {integrity: sha512-upO0AXxyBwJ4BbiC6CRgAJKtGYha2zw4m1g7TIVPSonwYEuf7vCicw3syjS1OxdDMTz96sZIXl3Jx3vWJLLKFw==} + typescript-eslint@7.15.0: + resolution: {integrity: sha512-Ta40FhMXBCwHura4X4fncaCVkVcnJ9jnOq5+Lp4lN8F4DzHZtOwZdRvVBiNUGznUDHPwdGnrnwxmUOU2fFQqFA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -5928,19 +5790,19 @@ packages: typescript: optional: true - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} hasBin: true ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - unbuild@3.0.0-rc.2: - resolution: {integrity: sha512-XyGXoxbqQhzVrjizSrj8rXibpi1SeK+gL41amd29qNU3SSxAtuB1hKtFZTgNbkX80tKdEE9lFeB5jDTUkpSl+Q==} + unbuild@3.0.0-rc.5: + resolution: {integrity: sha512-JraRltgzIqUCwTRaZBT2pbkT7wXylz217X6HZBm6LDlr8tdsrGgWp4T/PANwPtHaaFRKNi8TySReUNaJ8vgApw==} hasBin: true peerDependencies: - typescript: ^5.4.5 + typescript: ^5.5.3 peerDependenciesMeta: typescript: optional: true @@ -5961,15 +5823,15 @@ packages: unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} - unhead@1.9.12: - resolution: {integrity: sha512-s6VxcTV45hy8c/IioKQOonFnAO+kBOSpgDfqEHhnU0YVSQYaRPEp9pzW1qSPf0lx+bg9RKeOQyNNbSGGUP26aQ==} + unhead@1.9.14: + resolution: {integrity: sha512-npdYu6CfasX/IhB8OO27e3u4A1zhAY77T1FwWDIIUaJvugYTte5hjsolPX0/fG5jmjnWTFTuIkmbCSfj7bfIkg==} unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} unimport@3.7.2: resolution: {integrity: sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==} @@ -6007,8 +5869,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@1.10.1: - resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} + unplugin@1.11.0: + resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} engines: {node: '>=14.0.0'} unstorage@1.10.2: @@ -6103,6 +5965,10 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -6132,8 +5998,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.2.13: - resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} + vite@5.3.2: + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6196,25 +6062,22 @@ packages: '@vue/composition-api': optional: true - vue-router@4.3.3: - resolution: {integrity: sha512-8Q+u+WP4N2SXY38FDcF2H1dUEbYVHVPtPCPZj/GTZx8RCbiB8AtJP9+YIxn4Vs0svMTNQcLIzka4GH7Utkx9xQ==} + vue-router@4.4.0: + resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==} peerDependencies: vue: ^3.2.0 - vue-sonner@1.1.2: - resolution: {integrity: sha512-yg4f5s0a3oiiI7cNvO0Dajux1Y7s04lxww3vnQtnwQawJ3KqaKA9RIRMdI9wGTosRGIOwgYFniFRGl4+IuKPZw==} + vue-sonner@1.1.3: + resolution: {integrity: sha512-6I+5GNobKvE2nR5MPhO+T59d4j2LXRQoc/ZCmGtCoBWKDQr5nzSqjFaOOdPysHFI2p42wNLhQMafd0N540UW9Q==} - vue@3.4.27: - resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} + vue@3.4.31: + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - w3c-keyname@2.2.8: - resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - wait-on@6.0.1: resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} engines: {node: '>=10.0.0'} @@ -6251,13 +6114,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -6283,8 +6139,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerd@1.20240610.1: - resolution: {integrity: sha512-Rtut5GrsODQMh6YU43b9WZ980Wd05Ov1/ds88pT/SoetmXFBvkBzdRfiHiATv+azmGX8KveE0i/Eqzk/yI01ug==} + workerd@1.20240620.1: + resolution: {integrity: sha512-Qoq+RrFNk4pvEO+kpJVn8uJ5TRE9YJx5jX5pC5LjdKlw1XeD8EdXt5k0TbByvWunZ4qgYIcF9lnVxhcDFo203g==} engines: {node: '>=16'} hasBin: true @@ -6302,8 +6158,8 @@ packages: write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -6326,13 +6182,6 @@ packages: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} - y-codemirror.next@0.3.4: - resolution: {integrity: sha512-G4l0P0MA0v9LFYuBgQU5M5fwzcDSa6757mQ46iJCmU2rHC/iT+k9L6ufIp/DYFY5DfJ/QYNj66qGKQ6EL9WEtw==} - peerDependencies: - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - yjs: ^13.5.6 - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -6359,20 +6208,16 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yjs@13.6.16: - resolution: {integrity: sha512-uEq+n/dFIecBElEdeQea8nDnltScBfuhCSyAxDw4CosveP9Ag0eW6iZi2mdpW7EgxSFT7VXK2MJl3tKaLTmhAQ==} - engines: {node: '>=16.0.0', npm: '>=8.0.0'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} - yoctocolors@2.0.2: - resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} + yoctocolors@2.1.0: + resolution: {integrity: sha512-FsQpXXeOEe05tcJN4Z2eicuC6+6KiJdBbPOAChanSkwwjZ277XGsh8wh/HaPuGeifTiw/7dgAzabitu2bnDvRg==} engines: {node: '>=18'} youch@3.3.3: @@ -6417,7 +6262,7 @@ snapshots: '@azure/core-client': 1.9.2 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-rest-pipeline': 1.16.1 tslib: 2.6.3 transitivePeerDependencies: - supports-color @@ -6429,7 +6274,7 @@ snapshots: '@azure/core-client': 1.9.2 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-rest-pipeline': 1.16.1 tslib: 2.6.3 transitivePeerDependencies: - supports-color @@ -6441,7 +6286,7 @@ snapshots: '@azure/core-client': 1.9.2 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-rest-pipeline': 1.16.1 tslib: 2.6.3 transitivePeerDependencies: - supports-color @@ -6456,7 +6301,7 @@ snapshots: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.7.2 - '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-rest-pipeline': 1.16.1 '@azure/core-tracing': 1.1.2 '@azure/core-util': 1.9.0 '@azure/logger': 1.1.2 @@ -6475,7 +6320,7 @@ snapshots: dependencies: tslib: 2.6.3 - '@azure/core-rest-pipeline@1.16.0': + '@azure/core-rest-pipeline@1.16.1': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.7.2 @@ -6483,7 +6328,7 @@ snapshots: '@azure/core-util': 1.9.0 '@azure/logger': 1.1.2 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4(supports-color@9.4.0) + https-proxy-agent: 7.0.5(supports-color@9.4.0) tslib: 2.6.3 transitivePeerDependencies: - supports-color @@ -6508,12 +6353,12 @@ snapshots: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.7.2 '@azure/core-client': 1.9.2 - '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-rest-pipeline': 1.16.1 '@azure/core-tracing': 1.1.2 '@azure/core-util': 1.9.0 '@azure/logger': 1.1.2 - '@azure/msal-browser': 3.17.0 - '@azure/msal-node': 2.9.2 + '@azure/msal-browser': 3.18.0 + '@azure/msal-node': 2.10.0 events: 3.3.0 jws: 4.0.0 open: 8.4.2 @@ -6526,21 +6371,21 @@ snapshots: dependencies: tslib: 2.6.3 - '@azure/msal-browser@3.17.0': + '@azure/msal-browser@3.18.0': dependencies: - '@azure/msal-common': 14.12.0 + '@azure/msal-common': 14.13.0 - '@azure/msal-common@14.12.0': {} + '@azure/msal-common@14.13.0': {} '@azure/msal-common@6.4.0': {} - '@azure/msal-node@2.9.2': + '@azure/msal-node@2.10.0': dependencies: - '@azure/msal-common': 14.12.0 + '@azure/msal-common': 14.13.0 jsonwebtoken: 9.0.2 uuid: 8.3.2 - '@azure/static-web-apps-cli@1.1.9': + '@azure/static-web-apps-cli@1.1.10': dependencies: '@azure/arm-appservice': 12.0.0 '@azure/arm-resources': 5.2.0 @@ -6721,152 +6566,61 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biomejs/biome@1.8.1': + '@biomejs/biome@1.8.3': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.8.1 - '@biomejs/cli-darwin-x64': 1.8.1 - '@biomejs/cli-linux-arm64': 1.8.1 - '@biomejs/cli-linux-arm64-musl': 1.8.1 - '@biomejs/cli-linux-x64': 1.8.1 - '@biomejs/cli-linux-x64-musl': 1.8.1 - '@biomejs/cli-win32-arm64': 1.8.1 - '@biomejs/cli-win32-x64': 1.8.1 - - '@biomejs/cli-darwin-arm64@1.8.1': + '@biomejs/cli-darwin-arm64': 1.8.3 + '@biomejs/cli-darwin-x64': 1.8.3 + '@biomejs/cli-linux-arm64': 1.8.3 + '@biomejs/cli-linux-arm64-musl': 1.8.3 + '@biomejs/cli-linux-x64': 1.8.3 + '@biomejs/cli-linux-x64-musl': 1.8.3 + '@biomejs/cli-win32-arm64': 1.8.3 + '@biomejs/cli-win32-x64': 1.8.3 + + '@biomejs/cli-darwin-arm64@1.8.3': optional: true - '@biomejs/cli-darwin-x64@1.8.1': + '@biomejs/cli-darwin-x64@1.8.3': optional: true - '@biomejs/cli-linux-arm64-musl@1.8.1': + '@biomejs/cli-linux-arm64-musl@1.8.3': optional: true - '@biomejs/cli-linux-arm64@1.8.1': + '@biomejs/cli-linux-arm64@1.8.3': optional: true - '@biomejs/cli-linux-x64-musl@1.8.1': + '@biomejs/cli-linux-x64-musl@1.8.3': optional: true - '@biomejs/cli-linux-x64@1.8.1': + '@biomejs/cli-linux-x64@1.8.3': optional: true - '@biomejs/cli-win32-arm64@1.8.1': + '@biomejs/cli-win32-arm64@1.8.3': optional: true - '@biomejs/cli-win32-x64@1.8.1': + '@biomejs/cli-win32-x64@1.8.3': optional: true - '@cloudflare/kv-asset-handler@0.3.3': + '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 - '@cloudflare/workerd-darwin-64@1.20240610.1': + '@cloudflare/workerd-darwin-64@1.20240620.1': optional: true - '@cloudflare/workerd-darwin-arm64@1.20240610.1': + '@cloudflare/workerd-darwin-arm64@1.20240620.1': optional: true - '@cloudflare/workerd-linux-64@1.20240610.1': + '@cloudflare/workerd-linux-64@1.20240620.1': optional: true - '@cloudflare/workerd-linux-arm64@1.20240610.1': + '@cloudflare/workerd-linux-arm64@1.20240620.1': optional: true - '@cloudflare/workerd-windows-64@1.20240610.1': + '@cloudflare/workerd-windows-64@1.20240620.1': optional: true - '@cloudflare/workers-types@4.20240614.0': {} - - '@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1)': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@lezer/common': 1.2.1 - - '@codemirror/commands@6.6.0': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@lezer/common': 1.2.1 - - '@codemirror/lang-css@6.2.1(@codemirror/view@6.28.0)': - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@lezer/common': 1.2.1 - '@lezer/css': 1.1.8 - transitivePeerDependencies: - - '@codemirror/view' - - '@codemirror/lang-html@6.4.9': - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1) - '@codemirror/lang-css': 6.2.1(@codemirror/view@6.28.0) - '@codemirror/lang-javascript': 6.2.2 - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@lezer/common': 1.2.1 - '@lezer/css': 1.1.8 - '@lezer/html': 1.3.10 - - '@codemirror/lang-javascript@6.2.2': - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.0 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@lezer/common': 1.2.1 - '@lezer/javascript': 1.4.17 - - '@codemirror/lang-json@6.0.1': - dependencies: - '@codemirror/language': 6.10.2 - '@lezer/json': 1.0.2 - - '@codemirror/lang-yaml@6.1.1(@codemirror/view@6.28.0)': - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/yaml': 1.0.3 - transitivePeerDependencies: - - '@codemirror/view' - - '@codemirror/language@6.10.2': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - style-mod: 4.1.2 - - '@codemirror/lint@6.8.0': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - crelt: 1.0.6 - - '@codemirror/search@6.5.6': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - crelt: 1.0.6 - - '@codemirror/state@6.4.1': {} - - '@codemirror/view@6.28.0': - dependencies: - '@codemirror/state': 6.4.1 - style-mod: 4.1.2 - w3c-keyname: 2.2.8 + '@cloudflare/workers-types@4.20240620.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -6884,152 +6638,155 @@ snapshots: dependencies: '@edge-runtime/primitives': 4.1.0 - '@esbuild/aix-ppc64@0.20.2': - optional: true - '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/aix-ppc64@0.23.0': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm64@0.23.0': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-arm@0.23.0': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/android-x64@0.23.0': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-arm64@0.23.0': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/darwin-x64@0.23.0': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-arm64@0.23.0': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/freebsd-x64@0.23.0': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm64@0.23.0': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-arm@0.23.0': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-ia32@0.23.0': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-loong64@0.23.0': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-mips64el@0.23.0': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-ppc64@0.23.0': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-riscv64@0.23.0': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-s390x@0.23.0': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/linux-x64@0.23.0': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.23.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.0': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/openbsd-x64@0.23.0': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/sunos-x64@0.23.0': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-arm64@0.23.0': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-ia32@0.23.0': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.5.0)': + '@esbuild/win32-x64@0.23.0': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': dependencies: - eslint: 9.5.0 + eslint: 9.6.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.1': {} + '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.16.0': + '@eslint/config-array@0.17.0': dependencies: '@eslint/object-schema': 2.1.4 debug: 4.3.5(supports-color@9.4.0) @@ -7041,7 +6798,7 @@ snapshots: dependencies: ajv: 6.12.6 debug: 4.3.5(supports-color@9.4.0) - espree: 10.0.1 + espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 @@ -7051,9 +6808,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.4.0': {} - - '@eslint/js@9.5.0': {} + '@eslint/js@9.6.0': {} '@eslint/object-schema@2.1.4': {} @@ -7102,31 +6857,31 @@ snapshots: dependencies: tslib: 2.6.3 - '@floating-ui/core@1.6.2': + '@floating-ui/core@1.6.4': dependencies: - '@floating-ui/utils': 0.2.2 + '@floating-ui/utils': 0.2.4 - '@floating-ui/dom@1.6.5': + '@floating-ui/dom@1.6.7': dependencies: - '@floating-ui/core': 1.6.2 - '@floating-ui/utils': 0.2.2 + '@floating-ui/core': 1.6.4 + '@floating-ui/utils': 0.2.4 - '@floating-ui/utils@0.2.2': {} + '@floating-ui/utils@0.2.4': {} - '@floating-ui/vue@1.0.6(vue@3.4.27(typescript@5.4.5))': + '@floating-ui/vue@1.1.1(vue@3.4.31(typescript@5.5.3))': dependencies: - '@floating-ui/dom': 1.6.5 - '@floating-ui/utils': 0.2.2 - vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + '@floating-ui/dom': 1.6.7 + '@floating-ui/utils': 0.2.4 + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@google-cloud/firestore@7.8.0': + '@google-cloud/firestore@7.9.0': dependencies: fast-deep-equal: 3.1.3 functional-red-black-tree: 1.0.1 - google-gax: 4.3.6 + google-gax: 4.3.7 protobufjs: 7.3.2 transitivePeerDependencies: - encoding @@ -7154,8 +6909,8 @@ snapshots: async-retry: 1.3.3 duplexify: 4.1.3 fast-xml-parser: 4.4.0 - gaxios: 6.6.0 - google-auth-library: 9.10.0 + gaxios: 6.7.0 + google-auth-library: 9.11.0 html-entities: 2.5.2 mime: 3.0.0 p-limit: 3.1.0 @@ -7167,11 +6922,10 @@ snapshots: - supports-color optional: true - '@grpc/grpc-js@1.10.9': + '@grpc/grpc-js@1.10.10': dependencies: '@grpc/proto-loader': 0.7.13 '@js-sdsl/ordered-map': 4.4.2 - optional: true '@grpc/proto-loader@0.7.13': dependencies: @@ -7179,7 +6933,6 @@ snapshots: long: 5.2.3 protobufjs: 7.3.2 yargs: 17.7.2 - optional: true '@hapi/hoek@9.3.0': {} @@ -7191,15 +6944,23 @@ snapshots: dependencies: tailwindcss: 3.4.4 - '@headlessui/vue@1.7.22(vue@3.4.27(typescript@5.4.5))': + '@headlessui/vue@1.7.22(vue@3.4.31(typescript@5.5.3))': dependencies: - '@tanstack/vue-virtual': 3.5.1(vue@3.4.27(typescript@5.4.5)) - vue: 3.4.27(typescript@5.4.5) + '@tanstack/vue-virtual': 3.8.1(vue@3.4.31(typescript@5.5.3)) + vue: 3.4.31(typescript@5.5.3) '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.0': {} + '@internationalized/date@3.5.4': + dependencies: + '@swc/helpers': 0.5.11 + + '@internationalized/number@3.5.3': + dependencies: + '@swc/helpers': 0.5.11 + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -7244,48 +7005,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@js-sdsl/ordered-map@4.4.2': - optional: true - - '@lezer/common@1.2.1': {} - - '@lezer/css@1.1.8': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/highlight@1.2.0': - dependencies: - '@lezer/common': 1.2.1 - - '@lezer/html@1.3.10': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/javascript@1.4.17': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/json@1.0.2': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/lr@1.4.1': - dependencies: - '@lezer/common': 1.2.1 - - '@lezer/yaml@1.0.3': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 + '@js-sdsl/ordered-map@4.4.2': {} '@mapbox/node-pre-gyp@1.0.11': dependencies: @@ -7302,25 +7022,27 @@ snapshots: - encoding - supports-color - '@netlify/functions@2.7.0(@opentelemetry/api@1.9.0)': + '@netlify/functions@2.8.0(@opentelemetry/api@1.9.0)': dependencies: - '@netlify/serverless-functions-api': 1.18.1(@opentelemetry/api@1.9.0) + '@netlify/serverless-functions-api': 1.18.4(@opentelemetry/api@1.9.0) transitivePeerDependencies: - '@opentelemetry/api' + - supports-color '@netlify/node-cookies@0.1.0': {} - '@netlify/serverless-functions-api@1.18.1(@opentelemetry/api@1.9.0)': + '@netlify/serverless-functions-api@1.18.4(@opentelemetry/api@1.9.0)': dependencies: '@netlify/node-cookies': 0.1.0 - '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-node': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 1.25.1(@opentelemetry/api@1.9.0) urlpattern-polyfill: 8.0.2 transitivePeerDependencies: - '@opentelemetry/api' + - supports-color '@nodelib/fs.scandir@2.1.5': dependencies: @@ -7334,75 +7056,161 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@opentelemetry/api-logs@0.50.0': + '@opentelemetry/api-logs@0.52.1': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api@1.9.0': {} - '@opentelemetry/core@1.23.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.23.0 - '@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.25.0 + '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/otlp-transformer@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-grpc@0.52.1(@opentelemetry/api@1.9.0)': dependencies: + '@grpc/grpc-js': 1.10.10 '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.50.0 - '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.50.0(@opentelemetry/api-logs@0.50.0)(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources@1.23.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-http@0.52.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.23.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources@1.25.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-proto@0.52.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs@0.50.0(@opentelemetry/api-logs@0.50.0)(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-zipkin@1.25.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.50.0 - '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sdk-metrics@1.23.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.52.1 + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.8.1 + require-in-the-middle: 7.3.0 + semver: 7.6.2 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/otlp-exporter-base@0.52.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-grpc-exporter-base@0.52.1(@opentelemetry/api@1.9.0)': + dependencies: + '@grpc/grpc-js': 1.10.10 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.52.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/otlp-transformer@0.52.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.52.1 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + protobufjs: 7.3.2 + + '@opentelemetry/propagator-b3@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/propagator-jaeger@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + + '@opentelemetry/sdk-logs@0.52.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.52.1 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-metrics@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) lodash.merge: 4.6.2 - '@opentelemetry/sdk-trace-base@1.23.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-node@0.52.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.23.0 + '@opentelemetry/api-logs': 0.52.1 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-http': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-zipkin': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color - '@opentelemetry/sdk-trace-base@1.25.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/semantic-conventions@1.23.0': {} + '@opentelemetry/sdk-trace-node@1.25.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + semver: 7.6.2 - '@opentelemetry/semantic-conventions@1.25.0': {} + '@opentelemetry/semantic-conventions@1.25.1': {} '@parcel/watcher-android-arm64@2.4.1': optional: true @@ -7500,14 +7308,14 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 - '@redocly/config@0.6.0': {} + '@redocly/config@0.6.2': {} - '@redocly/openapi-core@1.16.0(supports-color@9.4.0)': + '@redocly/openapi-core@1.17.0(supports-color@9.4.0)': dependencies: '@redocly/ajv': 8.11.0 - '@redocly/config': 0.6.0 + '@redocly/config': 0.6.2 colorette: 1.4.0 - https-proxy-agent: 7.0.4(supports-color@9.4.0) + https-proxy-agent: 7.0.5(supports-color@9.4.0) js-levenshtein: 1.1.6 js-yaml: 4.1.0 lodash.isequal: 4.5.0 @@ -7517,28 +7325,11 @@ snapshots: yaml-ast-parser: 0.0.43 transitivePeerDependencies: - encoding - - supports-color - - '@replit/codemirror-css-color-picker@6.1.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - - '@rollup/plugin-alias@5.1.0(rollup@4.18.0)': - dependencies: - slash: 4.0.0 - optionalDependencies: - rollup: 4.18.0 - - '@rollup/plugin-commonjs@25.0.8(rollup@4.18.0)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.30.10 + - supports-color + + '@rollup/plugin-alias@5.1.0(rollup@4.18.0)': + dependencies: + slash: 4.0.0 optionalDependencies: rollup: 4.18.0 @@ -7547,7 +7338,7 @@ snapshots: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 10.4.1 + glob: 10.4.2 is-reference: 1.2.1 magic-string: 0.30.10 optionalDependencies: @@ -7654,43 +7445,27 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@scalar/api-client-modal@0.0.10(@types/bun@1.1.4)(tailwindcss@3.4.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': - dependencies: - '@scalar/client-app': 0.1.8(@types/bun@1.1.4)(tailwindcss@3.4.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/components': 0.11.5(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/oas-utils': 0.2.3 - vue: 3.4.27(typescript@5.4.5) - vue-router: 4.3.3(vue@3.4.27(typescript@5.4.5)) - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - supports-color - - tailwindcss - - typescript - - vitest - - '@scalar/api-client@1.3.12(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': + '@scalar/api-client@2.0.5(@types/bun@1.1.6)(tailwindcss@3.4.4)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1))': dependencies: - '@floating-ui/vue': 1.0.6(vue@3.4.27(typescript@5.4.5)) - '@headlessui/vue': 1.7.22(vue@3.4.27(typescript@5.4.5)) - '@scalar/components': 0.11.5(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/oas-utils': 0.2.3 + '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.4) + '@headlessui/vue': 1.7.22(vue@3.4.31(typescript@5.5.3)) + '@scalar/components': 0.12.7(@types/bun@1.1.6)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) + '@scalar/draggable': 0.1.3(typescript@5.5.3) + '@scalar/oas-utils': 0.2.8 + '@scalar/object-utils': 1.1.2 '@scalar/openapi-parser': 0.7.1 - '@scalar/themes': 0.9.4(typescript@5.4.5) - '@scalar/use-codemirror': 0.11.2(typescript@5.4.5) - '@scalar/use-toasts': 0.7.2(typescript@5.4.5) - '@scalar/use-tooltip': 0.7.3(typescript@5.4.5) - '@vueuse/core': 10.11.0(vue@3.4.27(typescript@5.4.5)) + '@scalar/use-toasts': 0.7.4(typescript@5.5.3) + '@scalar/use-tooltip': 1.0.2(typescript@5.5.3) + '@vueuse/core': 10.11.0(vue@3.4.31(typescript@5.5.3)) axios: 1.7.2 - httpsnippet-lite: 3.0.5 + cva: 1.0.0-beta.1(typescript@5.5.3) + js-cookie: 3.0.5 nanoid: 5.0.7 pretty-bytes: 6.1.1 pretty-ms: 8.0.0 - vue: 3.4.27(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.3)) + zod: 3.23.8 transitivePeerDependencies: - '@jest/globals' - '@types/bun' @@ -7699,64 +7474,34 @@ snapshots: - debug - jest - supports-color + - tailwindcss - typescript - vitest - '@scalar/api-reference@1.24.11(@types/bun@1.1.4)(postcss@8.4.38)(tailwindcss@3.4.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': + '@scalar/api-reference@1.24.28(@types/bun@1.1.6)(postcss@8.4.39)(tailwindcss@3.4.4)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1))': dependencies: - '@headlessui/vue': 1.7.22(vue@3.4.27(typescript@5.4.5)) - '@scalar/api-client': 1.3.12(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/api-client-modal': 0.0.10(@types/bun@1.1.4)(tailwindcss@3.4.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/components': 0.11.5(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/oas-utils': 0.2.3 + '@floating-ui/vue': 1.1.1(vue@3.4.31(typescript@5.5.3)) + '@headlessui/vue': 1.7.22(vue@3.4.31(typescript@5.5.3)) + '@scalar/api-client': 2.0.5(@types/bun@1.1.6)(tailwindcss@3.4.4)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) + '@scalar/components': 0.12.7(@types/bun@1.1.6)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) + '@scalar/oas-utils': 0.2.8 '@scalar/openapi-parser': 0.7.1 '@scalar/snippetz': 0.1.6 - '@scalar/themes': 0.9.4(typescript@5.4.5) - '@scalar/use-toasts': 0.7.2(typescript@5.4.5) - '@scalar/use-tooltip': 0.7.3(typescript@5.4.5) - '@unhead/schema': 1.9.12 - '@vueuse/core': 10.11.0(vue@3.4.27(typescript@5.4.5)) + '@scalar/themes': 0.9.10(typescript@5.5.3) + '@scalar/use-toasts': 0.7.4(typescript@5.5.3) + '@scalar/use-tooltip': 1.0.2(typescript@5.5.3) + '@unhead/schema': 1.9.14 + '@unhead/vue': 1.9.14(vue@3.4.31(typescript@5.5.3)) + '@vueuse/core': 10.11.0(vue@3.4.31(typescript@5.5.3)) axios: 1.7.2 fuse.js: 7.0.0 github-slugger: 2.0.0 httpsnippet-lite: 3.0.5 - postcss-nested: 6.0.1(postcss@8.4.38) - unhead: 1.9.12 - unified: 11.0.4 - vue: 3.4.27(typescript@5.4.5) - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - postcss - - supports-color - - tailwindcss - - typescript - - vitest - - '@scalar/client-app@0.1.8(@types/bun@1.1.4)(tailwindcss@3.4.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': - dependencies: - '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.4) - '@headlessui/vue': 1.7.22(vue@3.4.27(typescript@5.4.5)) - '@scalar/components': 0.11.5(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@scalar/draggable': 0.1.2(typescript@5.4.5) - '@scalar/oas-utils': 0.2.3 - '@scalar/object-utils': 1.1.1 - '@scalar/openapi-parser': 0.7.1 - '@scalar/use-toasts': 0.7.2(typescript@5.4.5) - '@scalar/use-tooltip': 0.7.3(typescript@5.4.5) - '@vueuse/core': 10.11.0(vue@3.4.27(typescript@5.4.5)) - axios: 1.7.2 - cva: 1.0.0-beta.1(typescript@5.4.5) nanoid: 5.0.7 - pretty-bytes: 6.1.1 - pretty-ms: 8.0.0 - vue: 3.4.27(typescript@5.4.5) - vue-router: 4.3.3(vue@3.4.27(typescript@5.4.5)) - zod: 3.23.8 + postcss-nested: 6.0.1(postcss@8.4.39) + unhead: 1.9.14 + unified: 11.0.5 + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - '@jest/globals' - '@types/bun' @@ -7764,12 +7509,13 @@ snapshots: - '@vue/composition-api' - debug - jest + - postcss - supports-color - tailwindcss - typescript - vitest - '@scalar/code-highlight@0.0.3': + '@scalar/code-highlight@0.0.5': dependencies: hast-util-to-text: 4.0.2 highlight.js: 11.9.0 @@ -7786,42 +7532,41 @@ snapshots: remark-gfm: 4.0.0 remark-parse: 11.0.0 remark-rehype: 11.1.0 - unified: 11.0.4 + unified: 11.0.5 unist-util-visit: 5.0.0 transitivePeerDependencies: - supports-color - '@scalar/components@0.11.5(@types/bun@1.1.4)(typescript@5.4.5)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': + '@scalar/components@0.12.7(@types/bun@1.1.6)(typescript@5.5.3)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1))': dependencies: - '@floating-ui/utils': 0.2.2 - '@floating-ui/vue': 1.0.6(vue@3.4.27(typescript@5.4.5)) - '@headlessui/vue': 1.7.22(vue@3.4.27(typescript@5.4.5)) - '@scalar/code-highlight': 0.0.3 - '@scalar/oas-utils': 0.2.3 - '@storybook/test': 8.1.7(@types/bun@1.1.4)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@vueuse/core': 10.11.0(vue@3.4.27(typescript@5.4.5)) - cva: 1.0.0-beta.1(typescript@5.4.5) + '@floating-ui/utils': 0.2.4 + '@floating-ui/vue': 1.1.1(vue@3.4.31(typescript@5.5.3)) + '@headlessui/vue': 1.7.22(vue@3.4.31(typescript@5.5.3)) + '@scalar/code-highlight': 0.0.5 + '@storybook/test': 8.1.11(@types/bun@1.1.6)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) + '@vueuse/core': 10.11.0(vue@3.4.31(typescript@5.5.3)) + cva: 1.0.0-beta.1(typescript@5.5.3) nanoid: 5.0.7 + radix-vue: 1.8.5(vue@3.4.31(typescript@5.5.3)) tailwind-merge: 2.3.0 - vue: 3.4.27(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - '@jest/globals' - '@types/bun' - '@types/jest' - '@vue/composition-api' - - debug - jest - supports-color - typescript - vitest - '@scalar/draggable@0.1.2(typescript@5.4.5)': + '@scalar/draggable@0.1.3(typescript@5.5.3)': dependencies: - vue: 3.4.27(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - typescript - '@scalar/oas-utils@0.2.3': + '@scalar/oas-utils@0.2.8': dependencies: axios: 1.7.2 nanoid: 5.0.7 @@ -7830,7 +7575,7 @@ snapshots: transitivePeerDependencies: - debug - '@scalar/object-utils@1.1.1': + '@scalar/object-utils@1.1.2': dependencies: just-clone: 6.2.0 @@ -7876,48 +7621,24 @@ snapshots: '@scalar/snippetz-plugin-node-ofetch': 0.1.1 '@scalar/snippetz-plugin-node-undici': 0.1.6 - '@scalar/themes@0.9.4(typescript@5.4.5)': + '@scalar/themes@0.9.10(typescript@5.5.3)': dependencies: - vue: 3.4.27(typescript@5.4.5) - transitivePeerDependencies: - - typescript - - '@scalar/use-codemirror@0.11.2(typescript@5.4.5)': - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1) - '@codemirror/commands': 6.6.0 - '@codemirror/lang-css': 6.2.1(@codemirror/view@6.28.0) - '@codemirror/lang-html': 6.4.9 - '@codemirror/lang-json': 6.0.1 - '@codemirror/lang-yaml': 6.1.1(@codemirror/view@6.28.0) - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - '@replit/codemirror-css-color-picker': 6.1.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0) - '@uiw/codemirror-themes': 4.22.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0) - codemirror: 6.0.1(@lezer/common@1.2.1) - vue: 3.4.27(typescript@5.4.5) - optionalDependencies: - y-codemirror.next: 0.3.4(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(yjs@13.6.16) - yjs: 13.6.16 + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - typescript - '@scalar/use-toasts@0.7.2(typescript@5.4.5)': + '@scalar/use-toasts@0.7.4(typescript@5.5.3)': dependencies: nanoid: 5.0.7 - vue: 3.4.27(typescript@5.4.5) - vue-sonner: 1.1.2 + vue: 3.4.31(typescript@5.5.3) + vue-sonner: 1.1.3 transitivePeerDependencies: - typescript - '@scalar/use-tooltip@0.7.3(typescript@5.4.5)': + '@scalar/use-tooltip@1.0.2(typescript@5.5.3)': dependencies: tippy.js: 6.3.7 - vue: 3.4.27(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) transitivePeerDependencies: - typescript @@ -7939,66 +7660,66 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@storybook/channels@8.1.7': + '@storybook/channels@8.1.11': dependencies: - '@storybook/client-logger': 8.1.7 - '@storybook/core-events': 8.1.7 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 telejson: 7.2.0 tiny-invariant: 1.3.3 - '@storybook/client-logger@8.1.7': + '@storybook/client-logger@8.1.11': dependencies: '@storybook/global': 5.0.0 - '@storybook/core-events@8.1.7': + '@storybook/core-events@8.1.11': dependencies: - '@storybook/csf': 0.1.8 + '@storybook/csf': 0.1.11 ts-dedent: 2.2.0 - '@storybook/csf@0.1.8': + '@storybook/csf@0.1.11': dependencies: type-fest: 2.19.0 '@storybook/global@5.0.0': {} - '@storybook/instrumenter@8.1.7': + '@storybook/instrumenter@8.1.11': dependencies: - '@storybook/channels': 8.1.7 - '@storybook/client-logger': 8.1.7 - '@storybook/core-events': 8.1.7 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.7 + '@storybook/preview-api': 8.1.11 '@vitest/utils': 1.6.0 util: 0.12.5 - '@storybook/preview-api@8.1.7': + '@storybook/preview-api@8.1.11': dependencies: - '@storybook/channels': 8.1.7 - '@storybook/client-logger': 8.1.7 - '@storybook/core-events': 8.1.7 - '@storybook/csf': 0.1.8 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/types': 8.1.7 + '@storybook/types': 8.1.11 '@types/qs': 6.9.15 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - qs: 6.12.1 + qs: 6.12.2 tiny-invariant: 1.3.3 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/test@8.1.7(@types/bun@1.1.4)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': + '@storybook/test@8.1.11(@types/bun@1.1.6)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1))': dependencies: - '@storybook/client-logger': 8.1.7 - '@storybook/core-events': 8.1.7 - '@storybook/instrumenter': 8.1.7 - '@storybook/preview-api': 8.1.7 - '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.4.6(@types/bun@1.1.4)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) - '@vitest/expect': 1.3.1 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/instrumenter': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@testing-library/dom': 10.1.0 + '@testing-library/jest-dom': 6.4.5(@types/bun@1.1.6)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1)) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 util: 0.12.5 transitivePeerDependencies: @@ -8008,35 +7729,39 @@ snapshots: - jest - vitest - '@storybook/types@8.1.7': + '@storybook/types@8.1.11': dependencies: - '@storybook/channels': 8.1.7 + '@storybook/channels': 8.1.11 '@types/express': 4.17.21 file-system-cache: 2.3.0 + '@swc/helpers@0.5.11': + dependencies: + tslib: 2.6.3 + '@szmarczak/http-timer@1.1.2': dependencies: defer-to-connect: 1.1.3 - '@tanstack/virtual-core@3.5.1': {} + '@tanstack/virtual-core@3.8.1': {} - '@tanstack/vue-virtual@3.5.1(vue@3.4.27(typescript@5.4.5))': + '@tanstack/vue-virtual@3.8.1(vue@3.4.31(typescript@5.5.3))': dependencies: - '@tanstack/virtual-core': 3.5.1 - vue: 3.4.27(typescript@5.4.5) + '@tanstack/virtual-core': 3.8.1 + vue: 3.4.31(typescript@5.5.3) - '@testing-library/dom@9.3.4': + '@testing-library/dom@10.1.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.7 '@types/aria-query': 5.0.4 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(@types/bun@1.1.4)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': + '@testing-library/jest-dom@6.4.5(@types/bun@1.1.6)(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -8047,12 +7772,12 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - '@types/bun': 1.1.4 - vitest: 1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1) + '@types/bun': 1.1.6 + vitest: 1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1) - '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': dependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.1.0 '@tootallnate/once@2.0.0': optional: true @@ -8070,11 +7795,11 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.14.2 + '@types/node': 20.14.9 - '@types/bun@1.1.4': + '@types/bun@1.1.6': dependencies: - bun-types: 1.1.13 + bun-types: 1.1.17 '@types/caseless@0.12.5': optional: true @@ -8083,11 +7808,11 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/cors@2.8.17': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/debug@0.0.30': {} @@ -8099,11 +7824,11 @@ snapshots: '@types/etag@1.8.3': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 - '@types/express-serve-static-core@4.19.3': + '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -8111,27 +7836,27 @@ snapshots: '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.3 + '@types/express-serve-static-core': 4.19.5 '@types/qs': 6.9.15 '@types/serve-static': 1.15.7 '@types/express@4.17.3': dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.3 + '@types/express-serve-static-core': 4.19.5 '@types/serve-static': 1.15.7 '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/get-port@3.2.0': {} '@types/glob@5.0.38': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.14.2 + '@types/node': 8.10.66 '@types/har-format@1.2.15': {} @@ -8143,21 +7868,21 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/jsonwebtoken@9.0.6': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/keyv@3.1.4': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 - '@types/lodash@4.17.5': {} + '@types/lodash@4.17.6': {} '@types/long@4.0.2': optional: true @@ -8176,24 +7901,24 @@ snapshots: '@types/mkdirp@0.5.2': dependencies: - '@types/node': 20.14.2 + '@types/node': 8.10.66 '@types/ms@0.7.34': {} '@types/node-fetch@2.6.11': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 form-data: 4.0.0 '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/node@20.12.14': dependencies: undici-types: 5.26.5 - '@types/node@20.14.2': + '@types/node@20.14.9': dependencies: undici-types: 5.26.5 @@ -8207,12 +7932,12 @@ snapshots: '@types/readdir-glob@1.1.5': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 optional: true @@ -8221,26 +7946,28 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/rimraf@2.0.5': dependencies: '@types/glob': 5.0.38 - '@types/node': 20.14.2 + '@types/node': 8.10.66 '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.14.2 + '@types/node': 20.14.9 '@types/send': 0.17.4 + '@types/shimmer@1.0.5': {} + '@types/tmp@0.0.33': {} '@types/tough-cookie@4.0.5': @@ -8254,121 +7981,123 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.12.14 '@types/xml2js@0.4.14': dependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 - '@typescript-eslint/eslint-plugin@7.13.0(@typescript-eslint/parser@7.13.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.5.3))(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@eslint-community/regexpp': 4.10.1 - '@typescript-eslint/parser': 7.13.0(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.13.0 - '@typescript-eslint/type-utils': 7.13.0(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.0(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.13.0 - eslint: 9.5.0 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/type-utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.15.0 + eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/scope-manager': 7.13.0 - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.15.0 debug: 4.3.5(supports-color@9.4.0) - eslint: 9.5.0 + eslint: 9.6.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.13.0': + '@typescript-eslint/scope-manager@7.15.0': dependencies: - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 - '@typescript-eslint/type-utils@7.13.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.15.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.0(eslint@9.5.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) debug: 4.3.5(supports-color@9.4.0) - eslint: 9.5.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + eslint: 9.6.0 + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.13.0': {} + '@typescript-eslint/types@7.15.0': {} - '@typescript-eslint/typescript-estree@7.13.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3)': dependencies: - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/visitor-keys': 7.13.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 debug: 4.3.5(supports-color@9.4.0) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 + minimatch: 9.0.5 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.13.0(eslint@9.5.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.15.0(eslint@9.6.0)(typescript@5.5.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@typescript-eslint/scope-manager': 7.13.0 - '@typescript-eslint/types': 7.13.0 - '@typescript-eslint/typescript-estree': 7.13.0(typescript@5.4.5) - eslint: 9.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + eslint: 9.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.13.0': + '@typescript-eslint/visitor-keys@7.15.0': dependencies: - '@typescript-eslint/types': 7.13.0 + '@typescript-eslint/types': 7.15.0 eslint-visitor-keys: 3.4.3 - '@uiw/codemirror-themes@4.22.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - '@ungap/structured-clone@1.2.0': {} - '@unhead/dom@1.9.12': + '@unhead/dom@1.9.14': dependencies: - '@unhead/schema': 1.9.12 - '@unhead/shared': 1.9.12 + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 - '@unhead/schema@1.9.12': + '@unhead/schema@1.9.14': dependencies: hookable: 5.5.3 zhead: 2.2.4 - '@unhead/shared@1.9.12': + '@unhead/shared@1.9.14': dependencies: - '@unhead/schema': 1.9.12 + '@unhead/schema': 1.9.14 + + '@unhead/vue@1.9.14(vue@3.4.31(typescript@5.5.3))': + dependencies: + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 + hookable: 5.5.3 + unhead: 1.9.14 + vue: 3.4.31(typescript@5.5.3) '@vercel/nft@0.27.2': dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) + acorn: 8.12.0 + acorn-import-attributes: 1.9.5(acorn@8.12.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -8381,14 +8110,14 @@ snapshots: - encoding - supports-color - '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1))': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 debug: 4.3.5(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.4 + istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.1.7 magic-string: 0.30.10 magicast: 0.3.4 @@ -8396,16 +8125,10 @@ snapshots: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1) + vitest: 1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - supports-color - '@vitest/expect@1.3.1': - dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - chai: 4.4.1 - '@vitest/expect@1.6.0': dependencies: '@vitest/spy': 1.6.0 @@ -8424,21 +8147,10 @@ snapshots: pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/spy@1.3.1': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - '@vitest/utils@1.3.1': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 @@ -8446,76 +8158,77 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@vue/compiler-core@3.4.27': + '@vue/compiler-core@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/shared': 3.4.27 + '@vue/shared': 3.4.31 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.4.27': + '@vue/compiler-dom@3.4.31': dependencies: - '@vue/compiler-core': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/compiler-sfc@3.4.27': + '@vue/compiler-sfc@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.27 - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 estree-walker: 2.0.2 magic-string: 0.30.10 - postcss: 8.4.38 + postcss: 8.4.39 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.27': + '@vue/compiler-ssr@3.4.31': dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 '@vue/devtools-api@6.6.3': {} - '@vue/reactivity@3.4.27': + '@vue/reactivity@3.4.31': dependencies: - '@vue/shared': 3.4.27 + '@vue/shared': 3.4.31 - '@vue/runtime-core@3.4.27': + '@vue/runtime-core@3.4.31': dependencies: - '@vue/reactivity': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/runtime-dom@3.4.27': + '@vue/runtime-dom@3.4.31': dependencies: - '@vue/runtime-core': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 csstype: 3.1.3 - '@vue/server-renderer@3.4.27(vue@3.4.27(typescript@5.4.5))': + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.3))': dependencies: - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 - vue: 3.4.27(typescript@5.4.5) + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@5.5.3) - '@vue/shared@3.4.27': {} + '@vue/shared@3.4.31': {} - '@vueuse/core@10.11.0(vue@3.4.27(typescript@5.4.5))': + '@vueuse/core@10.11.0(vue@3.4.31(typescript@5.5.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.0 - '@vueuse/shared': 10.11.0(vue@3.4.27(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + '@vueuse/shared': 10.11.0(vue@3.4.31(typescript@5.5.3)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@10.11.0': {} - '@vueuse/shared@10.11.0(vue@3.4.27(typescript@5.4.5))': + '@vueuse/shared@10.11.0(vue@3.4.31(typescript@5.5.3))': dependencies: - vue-demi: 0.14.8(vue@3.4.27(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -8531,17 +8244,19 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.11.3): + acorn-import-attributes@1.9.5(acorn@8.12.0): dependencies: - acorn: 8.11.3 + acorn: 8.12.0 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.0): dependencies: - acorn: 8.11.3 + acorn: 8.12.0 - acorn-walk@8.3.2: {} + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.0 - acorn@8.11.3: {} + acorn@8.12.0: {} adm-zip@0.5.14: {} @@ -8618,7 +8333,7 @@ snapshots: archiver-utils@5.0.2: dependencies: - glob: 10.4.1 + glob: 10.4.2 graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 @@ -8645,19 +8360,14 @@ snapshots: argparse@2.0.1: {} - aria-query@5.1.3: + aria-hidden@1.2.4: dependencies: - deep-equal: 2.2.3 + tslib: 2.6.3 aria-query@5.3.0: dependencies: dequal: 2.0.3 - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - array-flatten@1.1.1: {} array-union@2.1.0: {} @@ -8693,28 +8403,28 @@ snapshots: defu: 6.1.4 destr: 2.0.3 didyoumean2: 6.0.1 - globby: 14.0.1 + globby: 14.0.2 magic-string: 0.30.10 mdbox: 0.1.0 mlly: 1.7.1 ofetch: 1.3.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.1.3 scule: 1.3.0 untyped: 1.4.2 transitivePeerDependencies: - magicast - supports-color - autoprefixer@10.4.19(postcss@8.4.38): + autoprefixer@10.4.19(postcss@8.4.39): dependencies: browserslist: 4.23.1 - caniuse-lite: 1.0.30001632 + caniuse-lite: 1.0.30001639 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -8746,7 +8456,7 @@ snapshots: base64-js@1.5.1: {} - better-sqlite3@11.0.0: + better-sqlite3@11.1.1: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -8822,8 +8532,8 @@ snapshots: browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001632 - electron-to-chromium: 1.4.799 + caniuse-lite: 1.0.30001639 + electron-to-chromium: 1.4.816 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) @@ -8845,7 +8555,7 @@ snapshots: builtin-modules@3.3.0: {} - bun-types@1.1.13: + bun-types@1.1.17: dependencies: '@types/node': 20.12.14 '@types/ws': 8.5.10 @@ -8863,12 +8573,29 @@ snapshots: defu: 6.1.4 dotenv: 16.4.5 giget: 1.2.3 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mlly: 1.7.1 ohash: 1.1.3 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.1.1 + pkg-types: 1.1.3 + rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.4 + + c12@2.0.0-beta.1(magicast@0.3.4): + dependencies: + chokidar: 3.6.0 + confbox: 0.1.7 + defu: 6.1.4 + dotenv: 16.4.5 + giget: 1.2.3 + jiti: 2.0.0-beta.3 + mlly: 1.7.1 + ohash: 1.1.3 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.1.3 rc9: 2.1.2 optionalDependencies: magicast: 0.3.4 @@ -8902,11 +8629,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.23.1 - caniuse-lite: 1.0.30001632 + caniuse-lite: 1.0.30001639 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001632: {} + caniuse-lite@1.0.30001639: {} capnp-ts@0.7.0: dependencies: @@ -8957,7 +8684,7 @@ snapshots: ofetch: 1.3.4 open: 9.1.0 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 scule: 1.3.0 semver: 7.6.2 std-env: 3.7.0 @@ -9007,6 +8734,8 @@ snapshots: dependencies: consola: 3.2.3 + cjs-module-lexer@1.3.1: {} + clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -9045,18 +8774,6 @@ snapshots: cluster-key-slot@1.1.2: {} - codemirror@6.0.1(@lezer/common@1.2.1): - dependencies: - '@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(@lezer/common@1.2.1) - '@codemirror/commands': 6.6.0 - '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.0 - '@codemirror/search': 6.5.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - transitivePeerDependencies: - - '@lezer/common' - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -9172,8 +8889,6 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.5.2 - crelt@1.0.6: {} - croner@8.0.2: {} cross-spawn@7.0.3: @@ -9188,9 +8903,9 @@ snapshots: crypto-random-string@2.0.0: {} - css-declaration-sorter@7.2.0(postcss@8.4.38): + css-declaration-sorter@7.2.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 css-select@5.1.0: dependencies: @@ -9216,49 +8931,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.2(postcss@8.4.38): + cssnano-preset-default@7.0.3(postcss@8.4.39): dependencies: browserslist: 4.23.1 - css-declaration-sorter: 7.2.0(postcss@8.4.38) - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-calc: 10.0.0(postcss@8.4.38) - postcss-colormin: 7.0.0(postcss@8.4.38) - postcss-convert-values: 7.0.0(postcss@8.4.38) - postcss-discard-comments: 7.0.0(postcss@8.4.38) - postcss-discard-duplicates: 7.0.0(postcss@8.4.38) - postcss-discard-empty: 7.0.0(postcss@8.4.38) - postcss-discard-overridden: 7.0.0(postcss@8.4.38) - postcss-merge-longhand: 7.0.1(postcss@8.4.38) - postcss-merge-rules: 7.0.1(postcss@8.4.38) - postcss-minify-font-values: 7.0.0(postcss@8.4.38) - postcss-minify-gradients: 7.0.0(postcss@8.4.38) - postcss-minify-params: 7.0.0(postcss@8.4.38) - postcss-minify-selectors: 7.0.1(postcss@8.4.38) - postcss-normalize-charset: 7.0.0(postcss@8.4.38) - postcss-normalize-display-values: 7.0.0(postcss@8.4.38) - postcss-normalize-positions: 7.0.0(postcss@8.4.38) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.38) - postcss-normalize-string: 7.0.0(postcss@8.4.38) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.38) - postcss-normalize-unicode: 7.0.0(postcss@8.4.38) - postcss-normalize-url: 7.0.0(postcss@8.4.38) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.38) - postcss-ordered-values: 7.0.0(postcss@8.4.38) - postcss-reduce-initial: 7.0.0(postcss@8.4.38) - postcss-reduce-transforms: 7.0.0(postcss@8.4.38) - postcss-svgo: 7.0.1(postcss@8.4.38) - postcss-unique-selectors: 7.0.1(postcss@8.4.38) - - cssnano-utils@5.0.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - cssnano@7.0.2(postcss@8.4.38): - dependencies: - cssnano-preset-default: 7.0.2(postcss@8.4.38) + css-declaration-sorter: 7.2.0(postcss@8.4.39) + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 + postcss-calc: 10.0.0(postcss@8.4.39) + postcss-colormin: 7.0.1(postcss@8.4.39) + postcss-convert-values: 7.0.1(postcss@8.4.39) + postcss-discard-comments: 7.0.1(postcss@8.4.39) + postcss-discard-duplicates: 7.0.0(postcss@8.4.39) + postcss-discard-empty: 7.0.0(postcss@8.4.39) + postcss-discard-overridden: 7.0.0(postcss@8.4.39) + postcss-merge-longhand: 7.0.2(postcss@8.4.39) + postcss-merge-rules: 7.0.2(postcss@8.4.39) + postcss-minify-font-values: 7.0.0(postcss@8.4.39) + postcss-minify-gradients: 7.0.0(postcss@8.4.39) + postcss-minify-params: 7.0.1(postcss@8.4.39) + postcss-minify-selectors: 7.0.2(postcss@8.4.39) + postcss-normalize-charset: 7.0.0(postcss@8.4.39) + postcss-normalize-display-values: 7.0.0(postcss@8.4.39) + postcss-normalize-positions: 7.0.0(postcss@8.4.39) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.39) + postcss-normalize-string: 7.0.0(postcss@8.4.39) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.39) + postcss-normalize-unicode: 7.0.1(postcss@8.4.39) + postcss-normalize-url: 7.0.0(postcss@8.4.39) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.39) + postcss-ordered-values: 7.0.1(postcss@8.4.39) + postcss-reduce-initial: 7.0.1(postcss@8.4.39) + postcss-reduce-transforms: 7.0.0(postcss@8.4.39) + postcss-svgo: 7.0.1(postcss@8.4.39) + postcss-unique-selectors: 7.0.1(postcss@8.4.39) + + cssnano-utils@5.0.0(postcss@8.4.39): + dependencies: + postcss: 8.4.39 + + cssnano@7.0.3(postcss@8.4.39): + dependencies: + cssnano-preset-default: 7.0.3(postcss@8.4.39) lilconfig: 3.1.2 - postcss: 8.4.38 + postcss: 8.4.39 csso@5.0.5: dependencies: @@ -9266,11 +8981,11 @@ snapshots: csstype@3.1.3: {} - cva@1.0.0-beta.1(typescript@5.4.5): + cva@1.0.0-beta.1(typescript@5.5.3): dependencies: clsx: 2.0.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 data-uri-to-buffer@2.0.2: {} @@ -9278,9 +8993,9 @@ snapshots: dependencies: '@babel/runtime': 7.24.7 - db0@0.1.4(better-sqlite3@11.0.0): + db0@0.1.4(better-sqlite3@11.1.1): optionalDependencies: - better-sqlite3: 11.0.0 + better-sqlite3: 11.1.1 debug@2.6.9: dependencies: @@ -9312,27 +9027,6 @@ snapshots: dependencies: type-detect: 4.0.8 - deep-equal@2.2.3: - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -9371,12 +9065,6 @@ snapshots: define-lazy-prop@3.0.0: {} - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - defu@6.1.4: {} delayed-stream@1.0.0: {} @@ -9403,7 +9091,7 @@ snapshots: '@types/debug': 0.0.30 '@types/get-port': 3.2.0 '@types/glob': 5.0.38 - '@types/lodash': 4.17.5 + '@types/lodash': 4.17.6 '@types/mkdirp': 0.5.2 '@types/node': 8.10.66 '@types/rimraf': 2.0.5 @@ -9473,7 +9161,7 @@ snapshots: dot-prop@9.0.0: dependencies: - type-fest: 4.20.0 + type-fest: 4.21.0 dotenv@16.4.5: {} @@ -9509,7 +9197,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.4.799: {} + electron-to-chromium@1.4.816: {} emoji-regex@8.0.0: {} @@ -9535,46 +9223,8 @@ snapshots: es-errors@1.3.0: {} - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - es6-promisify@7.0.0: {} - esbuild@0.20.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -9601,6 +9251,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + escalade@3.1.2: {} escape-goat@2.1.1: {} @@ -9613,34 +9290,34 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-unjs@0.3.2(eslint@9.5.0)(typescript@5.4.5): + eslint-config-unjs@0.3.2(eslint@9.6.0)(typescript@5.5.3): dependencies: - '@eslint/js': 9.4.0 - eslint: 9.5.0 - eslint-plugin-markdown: 5.0.0(eslint@9.5.0) - eslint-plugin-unicorn: 53.0.0(eslint@9.5.0) - globals: 15.4.0 - typescript: 5.4.5 - typescript-eslint: 7.13.0(eslint@9.5.0)(typescript@5.4.5) + '@eslint/js': 9.6.0 + eslint: 9.6.0 + eslint-plugin-markdown: 5.0.0(eslint@9.6.0) + eslint-plugin-unicorn: 53.0.0(eslint@9.6.0) + globals: 15.8.0 + typescript: 5.5.3 + typescript-eslint: 7.15.0(eslint@9.6.0)(typescript@5.5.3) transitivePeerDependencies: - supports-color - eslint-plugin-markdown@5.0.0(eslint@9.5.0): + eslint-plugin-markdown@5.0.0(eslint@9.6.0): dependencies: - eslint: 9.5.0 + eslint: 9.6.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@53.0.0(eslint@9.5.0): + eslint-plugin-unicorn@53.0.0(eslint@9.6.0): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@eslint/eslintrc': 3.1.0 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 9.5.0 + eslint: 9.6.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -9663,13 +9340,13 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.5.0: + eslint@9.6.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@eslint-community/regexpp': 4.10.1 - '@eslint/config-array': 0.16.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.17.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.5.0 + '@eslint/js': 9.6.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -9680,7 +9357,7 @@ snapshots: escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 - espree: 10.0.1 + espree: 10.1.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -9702,10 +9379,10 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.0.1: + espree@10.1.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 4.0.0 esquery@1.5.0: @@ -9770,7 +9447,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.2.0: + execa@9.3.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 @@ -9783,7 +9460,7 @@ snapshots: pretty-ms: 9.0.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 - yoctocolors: 2.0.2 + yoctocolors: 2.1.0 exit-hook@2.2.1: {} @@ -9829,10 +9506,7 @@ snapshots: extend@3.0.2: {} - farmhash@3.3.1: - dependencies: - node-addon-api: 5.1.0 - prebuild-install: 7.1.2 + farmhash-modern@1.1.0: {} fast-deep-equal@3.1.3: {} @@ -9906,32 +9580,32 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - firebase-admin@12.1.1: + firebase-admin@12.2.0: dependencies: '@fastify/busboy': 2.1.1 '@firebase/database-compat': 1.0.5 '@firebase/database-types': 1.0.3 - '@types/node': 20.14.2 - farmhash: 3.3.1 + '@types/node': 20.14.9 + farmhash-modern: 1.1.0 jsonwebtoken: 9.0.2 jwks-rsa: 3.1.0 long: 5.2.3 node-forge: 1.3.1 - uuid: 9.0.1 + uuid: 10.0.0 optionalDependencies: - '@google-cloud/firestore': 7.8.0 + '@google-cloud/firestore': 7.9.0 '@google-cloud/storage': 7.11.2 transitivePeerDependencies: - encoding - supports-color - firebase-functions@4.9.0(firebase-admin@12.1.1): + firebase-functions@4.9.0(firebase-admin@12.2.0): dependencies: '@types/cors': 2.8.17 '@types/express': 4.17.3 cors: 2.8.5 express: 4.19.2 - firebase-admin: 12.1.1 + firebase-admin: 12.2.0 protobufjs: 7.3.2 transitivePeerDependencies: - supports-color @@ -9949,7 +9623,7 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.2.0: + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -10006,8 +9680,6 @@ snapshots: functional-red-black-tree@1.0.1: optional: true - functions-have-names@1.2.3: {} - fuse.js@7.0.0: {} gauge@3.0.2: @@ -10022,13 +9694,13 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 - gaxios@6.6.0: + gaxios@6.7.0: dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.4(supports-color@9.4.0) + https-proxy-agent: 7.0.5(supports-color@9.4.0) is-stream: 2.0.1 node-fetch: 2.7.0 - uuid: 9.0.1 + uuid: 10.0.0 transitivePeerDependencies: - encoding - supports-color @@ -10036,7 +9708,7 @@ snapshots: gcp-metadata@6.1.0: dependencies: - gaxios: 6.6.0 + gaxios: 6.7.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -10093,7 +9765,7 @@ snapshots: consola: 3.2.3 defu: 6.1.4 node-fetch-native: 1.6.4 - nypm: 0.3.8 + nypm: 0.3.9 ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.1 @@ -10112,12 +9784,13 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.1: + glob@10.4.2: dependencies: - foreground-child: 3.2.0 + foreground-child: 3.2.1 jackspeak: 3.4.0 - minimatch: 9.0.4 + minimatch: 9.0.5 minipass: 7.1.2 + package-json-from-dist: 1.0.0 path-scurry: 1.11.1 glob@7.2.3: @@ -10129,14 +9802,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - global-dirs@3.0.1: dependencies: ini: 2.0.0 @@ -10145,7 +9810,7 @@ snapshots: globals@14.0.0: {} - globals@15.4.0: {} + globals@15.8.0: {} globby@11.1.0: dependencies: @@ -10156,7 +9821,7 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.1: + globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 @@ -10167,11 +9832,11 @@ snapshots: globrex@0.1.2: {} - google-auth-library@9.10.0: + google-auth-library@9.11.0: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 6.6.0 + gaxios: 6.7.0 gcp-metadata: 6.1.0 gtoken: 7.1.0 jws: 4.0.0 @@ -10180,18 +9845,18 @@ snapshots: - supports-color optional: true - google-gax@4.3.6: + google-gax@4.3.7: dependencies: - '@grpc/grpc-js': 1.10.9 + '@grpc/grpc-js': 1.10.10 '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 abort-controller: 3.0.0 duplexify: 4.1.3 - google-auth-library: 9.10.0 + google-auth-library: 9.11.0 node-fetch: 2.7.0 object-hash: 3.0.0 proto3-json-serializer: 2.0.2 - protobufjs: 7.3.0 + protobufjs: 7.3.2 retry-request: 7.0.2 uuid: 9.0.1 transitivePeerDependencies: @@ -10225,7 +9890,7 @@ snapshots: gtoken@7.1.0: dependencies: - gaxios: 6.6.0 + gaxios: 6.7.0 jws: 4.0.0 transitivePeerDependencies: - encoding @@ -10236,7 +9901,7 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.11.1: + h3@1.12.0: dependencies: cookie-es: 1.1.0 crossws: 0.2.4 @@ -10251,8 +9916,6 @@ snapshots: transitivePeerDependencies: - uWebSockets.js - has-bigints@1.0.2: {} - has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -10326,7 +9989,7 @@ snapshots: hast-util-is-body-ok-link: 3.0.0 hast-util-is-element: 3.0.0 - hast-util-raw@9.0.3: + hast-util-raw@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -10354,7 +10017,7 @@ snapshots: '@types/unist': 3.0.2 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.3 + hast-util-raw: 9.0.4 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 @@ -10456,7 +10119,7 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.4(supports-color@9.4.0): + https-proxy-agent@7.0.5(supports-color@9.4.0): dependencies: agent-base: 7.1.1(supports-color@9.4.0) debug: 4.3.5(supports-color@9.4.0) @@ -10496,6 +10159,13 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-in-the-middle@1.8.1: + dependencies: + acorn: 8.12.0 + acorn-import-attributes: 1.9.5(acorn@8.12.0) + cjs-module-lexer: 1.3.1 + module-details-from-path: 1.0.3 + import-lazy@2.1.0: {} imurmurhash@0.1.4: {} @@ -10522,12 +10192,6 @@ snapshots: is-ip: 3.1.0 p-event: 4.2.0 - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - ioredis@5.4.1: dependencies: '@ioredis/commands': 1.2.0 @@ -10562,26 +10226,12 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-arrayish@0.2.1: {} - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-buffer@1.1.6: {} is-builtin-module@3.2.1: @@ -10594,14 +10244,10 @@ snapshots: dependencies: ci-info: 2.0.0 - is-core-module@2.13.1: + is-core-module@2.14.0: dependencies: hasown: 2.0.2 - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.2 - is-decimal@1.0.4: {} is-docker@2.2.1: {} @@ -10637,16 +10283,10 @@ snapshots: dependencies: ip-regex: 4.3.0 - is-map@2.0.3: {} - is-module@1.0.0: {} is-npm@5.0.0: {} - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - is-number@7.0.0: {} is-obj@1.0.1: {} @@ -10661,33 +10301,14 @@ snapshots: dependencies: '@types/estree': 1.0.5 - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-regexp@1.0.0: {} - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - is-stream@2.0.1: {} is-stream@3.0.0: {} is-stream@4.0.1: {} - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 @@ -10702,13 +10323,6 @@ snapshots: dependencies: punycode: 2.3.1 - is-weakmap@2.0.2: {} - - is-weakset@2.0.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -10725,13 +10339,8 @@ snapshots: isarray@1.0.0: {} - isarray@2.0.5: {} - isexe@2.0.0: {} - isomorphic.js@0.2.5: - optional: true - istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -10740,7 +10349,7 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.4: + istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 debug: 4.3.5(supports-color@9.4.0) @@ -10759,9 +10368,9 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@1.21.6: {} + jiti@2.0.0-beta.3: {} - joi@17.13.1: + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -10769,7 +10378,9 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - jose@4.15.5: {} + jose@4.15.7: {} + + js-cookie@3.0.5: {} js-levenshtein@1.1.6: {} @@ -10848,7 +10459,7 @@ snapshots: '@types/express': 4.17.21 '@types/jsonwebtoken': 9.0.6 debug: 4.3.5(supports-color@9.4.0) - jose: 4.15.5 + jose: 4.15.7 limiter: 1.1.5 lru-memoizer: 2.3.0 transitivePeerDependencies: @@ -10898,11 +10509,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lib0@0.2.94: - dependencies: - isomorphic.js: 0.2.5 - optional: true - lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -10921,9 +10527,9 @@ snapshots: crossws: 0.2.4 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.11.1 + h3: 1.12.0 http-shutdown: 1.2.2 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 @@ -10937,7 +10543,7 @@ snapshots: local-pkg@0.5.0: dependencies: mlly: 1.7.1 - pkg-types: 1.1.1 + pkg-types: 1.1.3 locate-path@5.0.0: dependencies: @@ -10947,8 +10553,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.camelcase@4.3.0: - optional: true + lodash.camelcase@4.3.0: {} lodash.clonedeep@4.5.0: {} @@ -11007,7 +10612,7 @@ snapshots: devlop: 1.1.0 highlight.js: 11.9.0 - lru-cache@10.2.2: {} + lru-cache@10.3.0: {} lru-cache@5.1.1: dependencies: @@ -11426,18 +11031,18 @@ snapshots: min-indent@1.0.1: {} - miniflare@3.20240610.1: + miniflare@3.20240620.0: dependencies: '@cspotcode/source-map-support': 0.8.1 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.12.0 + acorn-walk: 8.3.3 capnp-ts: 0.7.0 exit-hook: 2.2.1 glob-to-regexp: 0.4.1 stoppable: 1.1.0 undici: 6.19.2 - workerd: 1.20240610.1 - ws: 8.17.0 + workerd: 1.20240620.1 + ws: 8.17.1 youch: 3.3.3 zod: 3.23.8 transitivePeerDependencies: @@ -11453,7 +11058,7 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -11480,33 +11085,35 @@ snapshots: mkdirp@1.0.4: {} - mkdist@1.5.1(typescript@5.4.5): + mkdist@1.5.3(typescript@5.5.3): dependencies: - autoprefixer: 10.4.19(postcss@8.4.38) + autoprefixer: 10.4.19(postcss@8.4.39) citty: 0.1.6 - cssnano: 7.0.2(postcss@8.4.38) + cssnano: 7.0.3(postcss@8.4.39) defu: 6.1.4 - esbuild: 0.20.2 + esbuild: 0.21.5 fs-extra: 11.2.0 - globby: 14.0.1 - jiti: 1.21.6 + globby: 14.0.2 + jiti: 2.0.0-beta.3 mlly: 1.7.1 mri: 1.2.0 pathe: 1.1.2 - pkg-types: 1.1.1 - postcss: 8.4.38 - postcss-nested: 6.0.1(postcss@8.4.38) + pkg-types: 1.1.3 + postcss: 8.4.39 + postcss-nested: 6.0.1(postcss@8.4.39) semver: 7.6.2 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 mlly@1.7.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 ufo: 1.5.3 + module-details-from-path@1.0.3: {} + mri@1.2.0: {} ms@2.0.0: {} @@ -11535,14 +11142,12 @@ snapshots: negotiator@0.6.3: {} - node-abi@3.64.0: + node-abi@3.65.0: dependencies: semver: 7.6.2 node-addon-api@4.3.0: {} - node-addon-api@5.1.0: {} - node-addon-api@7.1.0: {} node-domexception@1.0.0: {} @@ -11595,33 +11200,20 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.3.8: + nypm@0.3.9: dependencies: citty: 0.1.6 consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 + pkg-types: 1.1.3 ufo: 1.5.3 object-assign@4.1.1: {} object-hash@3.0.0: {} - object-inspect@1.13.1: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.5: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 + object-inspect@1.13.2: {} ofetch@1.3.4: dependencies: @@ -11660,13 +11252,13 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 2.2.0 - openapi-typescript@7.0.0(typescript@5.4.5): + openapi-typescript@7.0.0(typescript@5.5.3): dependencies: - '@redocly/openapi-core': 1.16.0(supports-color@9.4.0) + '@redocly/openapi-core': 1.17.0(supports-color@9.4.0) ansi-colors: 4.1.3 parse-json: 8.1.0 supports-color: 9.4.0 - typescript: 5.4.5 + typescript: 5.5.3 yargs-parser: 21.1.1 transitivePeerDependencies: - encoding @@ -11712,7 +11304,7 @@ snapshots: p-limit@5.0.0: dependencies: - yocto-queue: 1.0.0 + yocto-queue: 1.1.1 p-locate@4.1.0: dependencies: @@ -11728,6 +11320,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + package-json@6.5.0: dependencies: got: 9.6.0 @@ -11759,7 +11353,7 @@ snapshots: dependencies: '@babel/code-frame': 7.24.7 index-to-position: 0.1.2 - type-fest: 4.20.0 + type-fest: 4.21.0 parse-ms@2.1.0: {} @@ -11790,7 +11384,7 @@ snapshots: path-scurry@1.11.1: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.3.0 minipass: 7.1.2 path-to-regexp@0.1.7: {} @@ -11822,7 +11416,7 @@ snapshots: pirates@4.0.6: {} - pkg-types@1.1.1: + pkg-types@1.1.3: dependencies: confbox: 0.1.7 mlly: 1.7.1 @@ -11832,164 +11426,166 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-calc@10.0.0(postcss@8.4.38): + postcss-calc@10.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.0(postcss@8.4.38): + postcss-colormin@7.0.1(postcss@8.4.39): dependencies: browserslist: 4.23.1 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.0(postcss@8.4.38): + postcss-convert-values@7.0.1(postcss@8.4.39): dependencies: browserslist: 4.23.1 - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.0(postcss@8.4.38): + postcss-discard-comments@7.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 + postcss-selector-parser: 6.1.0 - postcss-discard-duplicates@7.0.0(postcss@8.4.38): + postcss-discard-duplicates@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-discard-empty@7.0.0(postcss@8.4.38): + postcss-discard-empty@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-discard-overridden@7.0.0(postcss@8.4.38): + postcss-discard-overridden@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-import@15.1.0(postcss@8.4.38): + postcss-import@15.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.38): + postcss-js@4.0.1(postcss@8.4.39): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.38 + postcss: 8.4.39 - postcss-load-config@4.0.2(postcss@8.4.38): + postcss-load-config@4.0.2(postcss@8.4.39): dependencies: lilconfig: 3.1.2 yaml: 2.4.5 optionalDependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-merge-longhand@7.0.1(postcss@8.4.38): + postcss-merge-longhand@7.0.2(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - stylehacks: 7.0.1(postcss@8.4.38) + stylehacks: 7.0.2(postcss@8.4.39) - postcss-merge-rules@7.0.1(postcss@8.4.38): + postcss-merge-rules@7.0.2(postcss@8.4.39): dependencies: browserslist: 4.23.1 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-minify-font-values@7.0.0(postcss@8.4.38): + postcss-minify-font-values@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.38): + postcss-minify-gradients@7.0.0(postcss@8.4.39): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.0(postcss@8.4.38): + postcss-minify-params@7.0.1(postcss@8.4.39): dependencies: browserslist: 4.23.1 - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.1(postcss@8.4.38): + postcss-minify-selectors@7.0.2(postcss@8.4.39): dependencies: - postcss: 8.4.38 + cssesc: 3.0.0 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-nested@6.0.1(postcss@8.4.38): + postcss-nested@6.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 - postcss-normalize-charset@7.0.0(postcss@8.4.38): + postcss-normalize-charset@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 - postcss-normalize-display-values@7.0.0(postcss@8.4.38): + postcss-normalize-display-values@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.38): + postcss-normalize-positions@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.38): + postcss-normalize-repeat-style@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.38): + postcss-normalize-string@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.38): + postcss-normalize-timing-functions@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.0(postcss@8.4.38): + postcss-normalize-unicode@7.0.1(postcss@8.4.39): dependencies: browserslist: 4.23.1 - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.38): + postcss-normalize-url@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.38): + postcss-normalize-whitespace@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.0(postcss@8.4.38): + postcss-ordered-values@7.0.1(postcss@8.4.39): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 5.0.0(postcss@8.4.39) + postcss: 8.4.39 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.0(postcss@8.4.38): + postcss-reduce-initial@7.0.1(postcss@8.4.39): dependencies: browserslist: 4.23.1 caniuse-api: 3.0.0 - postcss: 8.4.38 + postcss: 8.4.39 - postcss-reduce-transforms@7.0.0(postcss@8.4.38): + postcss-reduce-transforms@7.0.0(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.0: @@ -11997,20 +11593,20 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.38): + postcss-svgo@7.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.1(postcss@8.4.38): + postcss-unique-selectors@7.0.1(postcss@8.4.39): dependencies: - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 postcss-value-parser@4.2.0: {} - postcss@8.4.38: + postcss@8.4.39: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -12024,7 +11620,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.64.0 + node-abi: 3.65.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -12081,22 +11677,6 @@ snapshots: protobufjs: 7.3.2 optional: true - protobufjs@7.3.0: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 20.14.2 - long: 5.2.3 - optional: true - protobufjs@7.3.2: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -12109,7 +11689,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.14.2 + '@types/node': 20.14.9 long: 5.2.3 proxy-addr@2.0.7: @@ -12134,7 +11714,7 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.12.1: + qs@6.12.2: dependencies: side-channel: 1.0.6 @@ -12142,6 +11722,23 @@ snapshots: queue-tick@1.0.1: {} + radix-vue@1.8.5(vue@3.4.31(typescript@5.5.3)): + dependencies: + '@floating-ui/dom': 1.6.7 + '@floating-ui/vue': 1.1.1(vue@3.4.31(typescript@5.5.3)) + '@internationalized/date': 3.5.4 + '@internationalized/number': 3.5.3 + '@tanstack/vue-virtual': 3.8.1(vue@3.4.31(typescript@5.5.3)) + '@vueuse/core': 10.11.0(vue@3.4.31(typescript@5.5.3)) + '@vueuse/shared': 10.11.0(vue@3.4.31(typescript@5.5.3)) + aria-hidden: 1.2.4 + defu: 6.1.4 + fast-deep-equal: 3.1.3 + nanoid: 5.0.7 + vue: 3.4.31(typescript@5.5.3) + transitivePeerDependencies: + - '@vue/composition-api' + radix3@1.1.2: {} ramda@0.29.0: {} @@ -12239,13 +11836,6 @@ snapshots: regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - registry-auth-token@4.2.2: dependencies: rc: 1.2.8 @@ -12298,12 +11888,12 @@ snapshots: dependencies: '@types/hast': 3.0.4 hast-util-from-html: 2.0.1 - unified: 11.0.4 + unified: 11.0.5 rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.3 + hast-util-raw: 9.0.4 vfile: 6.0.1 rehype-sanitize@6.0.0: @@ -12315,7 +11905,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 hast-util-to-html: 9.0.1 - unified: 11.0.4 + unified: 11.0.5 remark-gfm@4.0.0: dependencies: @@ -12324,7 +11914,7 @@ snapshots: micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -12333,7 +11923,7 @@ snapshots: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.1 micromark-util-types: 2.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -12342,19 +11932,27 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 - unified: 11.0.4 + unified: 11.0.5 vfile: 6.0.1 remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + unified: 11.0.5 require-directory@2.1.1: {} require-from-string@2.0.2: {} + require-in-the-middle@7.3.0: + dependencies: + debug: 4.3.5(supports-color@9.4.0) + module-details-from-path: 1.0.3 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + requires-port@1.0.0: {} resolve-from@4.0.0: {} @@ -12363,7 +11961,7 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -12399,11 +11997,11 @@ snapshots: dependencies: glob: 7.2.3 - rollup-plugin-dts@6.1.1(rollup@4.18.0)(typescript@5.4.5): + rollup-plugin-dts@6.1.1(rollup@4.18.0)(typescript@5.5.3): dependencies: magic-string: 0.30.10 rollup: 4.18.0 - typescript: 5.4.5 + typescript: 5.5.3 optionalDependencies: '@babel/code-frame': 7.24.7 @@ -12521,13 +12119,6 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - setprototypeof@1.2.0: {} shebang-command@2.0.0: @@ -12538,12 +12129,14 @@ snapshots: shell-quote@1.8.1: {} + shimmer@1.2.1: {} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 siginfo@2.0.0: {} @@ -12613,10 +12206,6 @@ snapshots: std-env@3.7.0: {} - stop-iteration-iterator@1.0.0: - dependencies: - internal-slot: 1.0.7 - stoppable@1.1.0: {} stream-events@1.0.5: @@ -12698,19 +12287,17 @@ snapshots: stubs@3.0.0: optional: true - style-mod@4.1.2: {} - - stylehacks@7.0.1(postcss@8.4.38): + stylehacks@7.0.2(postcss@8.4.39): dependencies: browserslist: 4.23.1 - postcss: 8.4.38 + postcss: 8.4.39 postcss-selector-parser: 6.1.0 sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.4.1 + glob: 10.4.2 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -12760,17 +12347,17 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 lilconfig: 2.1.0 micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) + postcss: 8.4.39 + postcss-import: 15.1.0(postcss@8.4.39) + postcss-js: 4.0.1(postcss@8.4.39) + postcss-load-config: 4.0.2(postcss@8.4.39) + postcss-nested: 6.0.1(postcss@8.4.39) postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.35.0 @@ -12826,7 +12413,7 @@ snapshots: terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + acorn: 8.12.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -12890,9 +12477,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.4.5): + ts-api-utils@1.3.0(typescript@5.5.3): dependencies: - typescript: 5.4.5 + typescript: 5.5.3 ts-dedent@2.2.0: {} @@ -12922,7 +12509,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.20.0: {} + type-fest@4.21.0: {} type-is@1.6.18: dependencies: @@ -12933,50 +12520,49 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@7.13.0(eslint@9.5.0)(typescript@5.4.5): + typescript-eslint@7.15.0(eslint@9.6.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/eslint-plugin': 7.13.0(@typescript-eslint/parser@7.13.0(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.13.0(eslint@9.5.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.13.0(eslint@9.5.0)(typescript@5.4.5) - eslint: 9.5.0 + '@typescript-eslint/eslint-plugin': 7.15.0(@typescript-eslint/parser@7.15.0(eslint@9.6.0)(typescript@5.5.3))(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.15.0(eslint@9.6.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@9.6.0)(typescript@5.5.3) + eslint: 9.6.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color - typescript@5.4.5: {} + typescript@5.5.3: {} ufo@1.5.3: {} - unbuild@3.0.0-rc.2(patch_hash=rrfmssaqzf6ob23oou5wnx366m)(typescript@5.4.5): + unbuild@3.0.0-rc.5(typescript@5.5.3): dependencies: '@rollup/plugin-alias': 5.1.0(rollup@4.18.0) - '@rollup/plugin-commonjs': 25.0.8(rollup@4.18.0) + '@rollup/plugin-commonjs': 26.0.1(rollup@4.18.0) '@rollup/plugin-json': 6.1.0(rollup@4.18.0) '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.0) '@rollup/plugin-replace': 5.0.7(rollup@4.18.0) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - chalk: 5.3.0 citty: 0.1.6 consola: 3.2.3 defu: 6.1.4 - esbuild: 0.21.5 - globby: 14.0.1 + esbuild: 0.23.0 + globby: 14.0.2 hookable: 5.5.3 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 magic-string: 0.30.10 - mkdist: 1.5.1(typescript@5.4.5) + mkdist: 1.5.3(typescript@5.5.3) mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 pretty-bytes: 6.1.1 rollup: 4.18.0 - rollup-plugin-dts: 6.1.1(rollup@4.18.0)(typescript@5.4.5) + rollup-plugin-dts: 6.1.1(rollup@4.18.0)(typescript@5.5.3) scule: 1.3.0 ufo: 1.5.3 untyped: 1.4.2 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - sass - supports-color @@ -12986,10 +12572,10 @@ snapshots: unctx@2.3.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 estree-walker: 3.0.3 magic-string: 0.30.10 - unplugin: 1.10.1 + unplugin: 1.11.0 undici-types@5.26.5: {} @@ -13003,16 +12589,16 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 - unhead@1.9.12: + unhead@1.9.14: dependencies: - '@unhead/dom': 1.9.12 - '@unhead/schema': 1.9.12 - '@unhead/shared': 1.9.12 + '@unhead/dom': 1.9.14 + '@unhead/schema': 1.9.14 + '@unhead/shared': 1.9.14 hookable: 5.5.3 unicorn-magic@0.1.0: {} - unified@11.0.4: + unified@11.0.5: dependencies: '@types/unist': 3.0.2 bail: 2.0.2 @@ -13025,7 +12611,7 @@ snapshots: unimport@3.7.2(rollup@4.18.0): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) - acorn: 8.11.3 + acorn: 8.12.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.2 @@ -13033,10 +12619,10 @@ snapshots: magic-string: 0.30.10 mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 + pkg-types: 1.1.3 scule: 1.3.0 strip-literal: 2.1.0 - unplugin: 1.10.1 + unplugin: 1.11.0 transitivePeerDependencies: - rollup @@ -13080,9 +12666,9 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.10.1: + unplugin@1.11.0: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.2 @@ -13092,9 +12678,9 @@ snapshots: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.11.1 + h3: 1.12.0 listhen: 1.7.2 - lru-cache: 10.2.2 + lru-cache: 10.3.0 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 @@ -13118,7 +12704,7 @@ snapshots: '@babel/standalone': 7.24.7 '@babel/types': 7.24.7 defu: 6.1.4 - jiti: 1.21.6 + jiti: 2.0.0-beta.3 mri: 1.2.0 scule: 1.3.0 transitivePeerDependencies: @@ -13130,8 +12716,8 @@ snapshots: magic-string: 0.30.10 mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.1 - unplugin: 1.10.1 + pkg-types: 1.1.3 + unplugin: 1.11.0 update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: @@ -13180,9 +12766,12 @@ snapshots: utils-merge@1.0.1: {} + uuid@10.0.0: {} + uuid@8.3.2: {} - uuid@9.0.1: {} + uuid@9.0.1: + optional: true validate-npm-package-license@3.0.4: dependencies: @@ -13207,13 +12796,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@1.6.0(@types/node@20.14.2)(terser@5.31.1): + vite-node@1.6.0(@types/node@20.14.9)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.5(supports-color@9.4.0) pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.13(@types/node@20.14.2)(terser@5.31.1) + vite: 5.3.2(@types/node@20.14.9)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -13224,24 +12813,24 @@ snapshots: - supports-color - terser - vite@5.2.13(@types/node@20.14.2)(terser@5.31.1): + vite@5.3.2(@types/node@20.14.9)(terser@5.31.1): dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 + esbuild: 0.21.5 + postcss: 8.4.39 rollup: 4.18.0 optionalDependencies: - '@types/node': 20.14.2 + '@types/node': 20.14.9 fsevents: 2.3.3 terser: 5.31.1 - vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.2)(terser@5.31.1): + vitest@1.6.0(@edge-runtime/vm@3.2.0)(@types/node@20.14.9)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 + acorn-walk: 8.3.3 chai: 4.4.1 debug: 4.3.5(supports-color@9.4.0) execa: 8.0.1 @@ -13253,12 +12842,12 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.13(@types/node@20.14.2)(terser@5.31.1) - vite-node: 1.6.0(@types/node@20.14.2)(terser@5.31.1) + vite: 5.3.2(@types/node@20.14.9)(terser@5.31.1) + vite-node: 1.6.0(@types/node@20.14.9)(terser@5.31.1) why-is-node-running: 2.2.2 optionalDependencies: '@edge-runtime/vm': 3.2.0 - '@types/node': 20.14.2 + '@types/node': 20.14.9 transitivePeerDependencies: - less - lightningcss @@ -13268,33 +12857,31 @@ snapshots: - supports-color - terser - vue-demi@0.14.8(vue@3.4.27(typescript@5.4.5)): + vue-demi@0.14.8(vue@3.4.31(typescript@5.5.3)): dependencies: - vue: 3.4.27(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) - vue-router@4.3.3(vue@3.4.27(typescript@5.4.5)): + vue-router@4.4.0(vue@3.4.31(typescript@5.5.3)): dependencies: '@vue/devtools-api': 6.6.3 - vue: 3.4.27(typescript@5.4.5) + vue: 3.4.31(typescript@5.5.3) - vue-sonner@1.1.2: {} + vue-sonner@1.1.3: {} - vue@3.4.27(typescript@5.4.5): + vue@3.4.31(typescript@5.5.3): dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-sfc': 3.4.27 - '@vue/runtime-dom': 3.4.27 - '@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@5.4.5)) - '@vue/shared': 3.4.27 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.3)) + '@vue/shared': 3.4.31 optionalDependencies: - typescript: 5.4.5 - - w3c-keyname@2.2.8: {} + typescript: 5.5.3 wait-on@6.0.1: dependencies: axios: 0.25.0 - joi: 17.13.1 + joi: 17.13.3 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -13328,21 +12915,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -13370,13 +12942,13 @@ snapshots: word-wrap@1.2.5: {} - workerd@1.20240610.1: + workerd@1.20240620.1: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20240610.1 - '@cloudflare/workerd-darwin-arm64': 1.20240610.1 - '@cloudflare/workerd-linux-64': 1.20240610.1 - '@cloudflare/workerd-linux-arm64': 1.20240610.1 - '@cloudflare/workerd-windows-64': 1.20240610.1 + '@cloudflare/workerd-darwin-64': 1.20240620.1 + '@cloudflare/workerd-darwin-arm64': 1.20240620.1 + '@cloudflare/workerd-linux-64': 1.20240620.1 + '@cloudflare/workerd-linux-arm64': 1.20240620.1 + '@cloudflare/workerd-windows-64': 1.20240620.1 wrap-ansi@7.0.0: dependencies: @@ -13399,7 +12971,7 @@ snapshots: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - ws@8.17.0: {} + ws@8.17.1: {} xdg-basedir@4.0.0: {} @@ -13410,14 +12982,6 @@ snapshots: xmlbuilder@11.0.1: {} - y-codemirror.next@0.3.4(@codemirror/state@6.4.1)(@codemirror/view@6.28.0)(yjs@13.6.16): - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.0 - lib0: 0.2.94 - yjs: 13.6.16 - optional: true - y18n@5.0.8: {} yallist@3.1.1: {} @@ -13440,16 +13004,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yjs@13.6.16: - dependencies: - lib0: 0.2.94 - optional: true - yocto-queue@0.1.0: {} - yocto-queue@1.0.0: {} + yocto-queue@1.1.1: {} - yoctocolors@2.0.2: {} + yoctocolors@2.1.0: {} youch@3.3.3: dependencies: diff --git a/scripts/gen-presets.ts b/scripts/gen-presets.ts index 2998b70383..a205a8a80e 100644 --- a/scripts/gen-presets.ts +++ b/scripts/gen-presets.ts @@ -2,7 +2,7 @@ import { existsSync, readFileSync, readdirSync, writeFileSync } from "node:fs"; import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { consola } from "consola"; -import createJITI from "jiti"; +import { createJiti } from "jiti"; import { findTypeExports } from "mlly"; import type { NitroPreset, NitroPresetMeta } from "nitro/types"; import { camelCase, kebabCase, pascalCase, snakeCase } from "scule"; @@ -21,8 +21,7 @@ const presetDirs: string[] = readdirSync(presetsDir, { withFileTypes: true }) .map((dir) => dir.name); // --- Load presets --- -const jitiRequire = createJITI(presetsDir, { - esmResolve: true, +const jiti = createJiti(presetsDir, { interopDefault: true, alias: { nitro: fileURLToPath(new URL("../src/core/index.ts", import.meta.url)), @@ -37,7 +36,7 @@ const jitiRequire = createJITI(presetsDir, { const allPresets: (NitroPreset & { _meta?: NitroPresetMeta })[] = []; for (const preset of presetDirs) { const presetPath = resolve(presetsDir, preset, "preset.ts"); - const _presets = jitiRequire(presetPath); + const _presets = (await jiti.import(presetPath)) as NitroPreset[]; allPresets.push(..._presets); } diff --git a/src/core/module.ts b/src/core/module.ts index da6c1ab8a1..01fd85b2e9 100644 --- a/src/core/module.ts +++ b/src/core/module.ts @@ -1,4 +1,4 @@ -import jiti from "jiti"; +import { createJiti } from "jiti"; import type { Nitro, NitroModule, NitroModuleInput } from "nitro/types"; export async function installModules(nitro: Nitro) { @@ -18,7 +18,7 @@ export async function installModules(nitro: Nitro) { } } -function _resolveNitroModule( +async function _resolveNitroModule( mod: NitroModuleInput, nitroOptions: Nitro["options"] ): Promise { @@ -30,14 +30,13 @@ function _resolveNitroModule( // @ts-ignore globalThis.defineNitroModule || ((mod) => mod); - const _jiti = jiti(nitroOptions.rootDir, { + const jiti = createJiti(nitroOptions.rootDir, { interopDefault: true, - esmResolve: true, alias: nitroOptions.alias, }); - const _modPath = _jiti.resolve(mod); + const _modPath = jiti.esmResolve(mod); _url = _modPath; - mod = _jiti(_modPath) as NitroModule; + mod = (await jiti.import(_modPath)) as NitroModule; } if (typeof mod === "function") { @@ -49,8 +48,8 @@ function _resolveNitroModule( mod.setup = () => {}; } - return Promise.resolve({ + return { _url, ...mod, - }); + }; } diff --git a/src/rollup/plugins/externals.ts b/src/rollup/plugins/externals.ts index c112faefcd..aba61d2183 100644 --- a/src/rollup/plugins/externals.ts +++ b/src/rollup/plugins/externals.ts @@ -11,7 +11,7 @@ import { import { isDirectory } from "nitro/kit"; import type { NodeExternalsOptions } from "nitro/types"; import { dirname, isAbsolute, join, normalize, relative, resolve } from "pathe"; -import type { PackageJson } from "pkg-types"; +import type { PackageJson, PackageJsonExports } from "pkg-types"; import { readPackageJSON, writePackageJSON } from "pkg-types"; import type { Plugin } from "rollup"; import semver from "semver"; @@ -482,8 +482,10 @@ function compareVersions(v1 = "0.0.0", v2 = "0.0.0") { } } -export function applyProductionCondition(exports: PackageJson["exports"]) { - if (!exports || typeof exports === "string") { +export function applyProductionCondition( + exports: PackageJsonExports | undefined +) { + if (!exports || typeof exports === "string" || Array.isArray(exports)) { return; } if (exports.production) { From 24fa44468ba0745b38af8a9a03d33828a8b385c4 Mon Sep 17 00:00:00 2001 From: "@beer" <47961062+iiio2@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:39:06 +0600 Subject: [PATCH 24/32] docs(storage): fix typo (#2639) --- docs/1.guide/4.storage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/1.guide/4.storage.md b/docs/1.guide/4.storage.md index e937fd4f0f..6ecf1caa23 100644 --- a/docs/1.guide/4.storage.md +++ b/docs/1.guide/4.storage.md @@ -13,7 +13,7 @@ Nitro has built-in integration with [unjs/unstorage](https://unstorage.unjs.io) To use the storage layer, you can use the `useStorage()` and call `getItem(key)` to retrieve an item and `setItem(key, value)` to set an item. ```ts -// Default storage is in memory +// Default storage is in-memory await useStorage().setItem('test:foo', { hello: 'world' }) await useStorage().getItem('test:foo') From 48e8789acef71b284ee2380ef86839b27160424e Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 23 Aug 2024 10:39:06 +0200 Subject: [PATCH 25/32] chore: lint --- src/rollup/plugins/server-assets.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rollup/plugins/server-assets.ts b/src/rollup/plugins/server-assets.ts index a380130c0e..db7f19c122 100644 --- a/src/rollup/plugins/server-assets.ts +++ b/src/rollup/plugins/server-assets.ts @@ -8,7 +8,8 @@ import type { Plugin } from "rollup"; import { normalizeKey } from "unstorage"; import { virtual } from "./virtual"; -const createEtag = (_etag as unknown as { default: typeof import('etag')}).default || _etag +const createEtag = + (_etag as unknown as { default: typeof import("etag") }).default || _etag; interface ResolvedAsset { fsPath: string; From 27692e3c187d8d567a53cd30de773a8f4286885c Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Wed, 4 Sep 2024 20:48:13 +0200 Subject: [PATCH 26/32] chore: update undocs --- docs/bun.lockb | Bin 448679 -> 403100 bytes docs/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bun.lockb b/docs/bun.lockb index d7ebfafe69a4fe7030dc3cf391b379211a61e075..39cc69d8b15b7e87853f5476e17f19713a4206ef 100755 GIT binary patch delta 125441 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 delta 155602 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 z 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 z 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 Wc~2c)_U}l|Y84nHabc8Z@&5x7oJP9< diff --git a/docs/package.json b/docs/package.json index 0a537e2088..c03816713c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,6 +5,6 @@ "build": "undocs build" }, "devDependencies": { - "undocs": "^0.2.21" + "undocs": "^0.2.26" } } From 97dc8d690c401c6a60afae92ed16a6c85dc82571 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Wed, 4 Sep 2024 21:04:38 +0200 Subject: [PATCH 27/32] docs: remove old components --- docs/.docs/components/global/Ellipsis.vue | 15 -------- docs/.docs/components/global/IconNitro.vue | 3 -- docs/.docs/components/global/IconUnJS.vue | 32 ----------------- docs/.docs/components/global/Logo.vue | 16 --------- docs/.docs/public/favicon.ico | Bin 176045 -> 0 bytes docs/.docs/public/icon.png | Bin 36416 -> 0 bytes docs/.docs/public/nitro-dark.svg | 38 --------------------- docs/.docs/public/nitro-light.svg | 38 --------------------- 8 files changed, 142 deletions(-) delete mode 100644 docs/.docs/components/global/Ellipsis.vue delete mode 100644 docs/.docs/components/global/IconNitro.vue delete mode 100644 docs/.docs/components/global/IconUnJS.vue delete mode 100644 docs/.docs/components/global/Logo.vue delete mode 100644 docs/.docs/public/favicon.ico delete mode 100644 docs/.docs/public/icon.png delete mode 100644 docs/.docs/public/nitro-dark.svg delete mode 100644 docs/.docs/public/nitro-light.svg diff --git a/docs/.docs/components/global/Ellipsis.vue b/docs/.docs/components/global/Ellipsis.vue deleted file mode 100644 index e7e4b1c62d..0000000000 --- a/docs/.docs/components/global/Ellipsis.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/docs/.docs/components/global/IconNitro.vue b/docs/.docs/components/global/IconNitro.vue deleted file mode 100644 index 7cdb698f5c..0000000000 --- a/docs/.docs/components/global/IconNitro.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/.docs/components/global/IconUnJS.vue b/docs/.docs/components/global/IconUnJS.vue deleted file mode 100644 index 1a175cf96d..0000000000 --- a/docs/.docs/components/global/IconUnJS.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/docs/.docs/components/global/Logo.vue b/docs/.docs/components/global/Logo.vue deleted file mode 100644 index 8f5d59f58e..0000000000 --- a/docs/.docs/components/global/Logo.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/docs/.docs/public/favicon.ico b/docs/.docs/public/favicon.ico deleted file mode 100644 index 59886e68b83257f0a8d0d9d84905efbc56592f1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176045 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 X+BPVCI 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 diff --git a/docs/.docs/public/nitro-dark.svg b/docs/.docs/public/nitro-dark.svg deleted file mode 100644 index 28aea59c51..0000000000 --- a/docs/.docs/public/nitro-dark.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/.docs/public/nitro-light.svg b/docs/.docs/public/nitro-light.svg deleted file mode 100644 index 86f43f9b44..0000000000 --- a/docs/.docs/public/nitro-light.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 29170299a13210f3e678a2c96eea4b540477bb91 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 20 Sep 2024 12:45:40 +0200 Subject: [PATCH 28/32] chore: update undocs --- docs/bun.lockb | Bin 403100 -> 408421 bytes docs/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bun.lockb b/docs/bun.lockb index 39cc69d8b15b7e87853f5476e17f19713a4206ef..dce2c10653d830143f3e8645e3bf16e4f0b0116f 100755 GIT binary patch delta 75066 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 delta 73182 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 Tnn|FM2Upcbi4m*G_?LeHT5OZI diff --git a/docs/package.json b/docs/package.json index c03816713c..331cdc2609 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,6 +5,6 @@ "build": "undocs build" }, "devDependencies": { - "undocs": "^0.2.26" + "undocs": "^0.2.28" } } From 286c18cfa2f03b26c7383592600ec457ce5c6c07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9ban?= Date: Sat, 28 Sep 2024 08:58:57 +0200 Subject: [PATCH 29/32] fix(scanner)!: limit patterns scanned from `modules/` dir (#2681) --- src/core/scan.ts | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/core/scan.ts b/src/core/scan.ts index 523176896f..0a9aeeb6df 100644 --- a/src/core/scan.ts +++ b/src/core/scan.ts @@ -140,13 +140,20 @@ export async function scanTasks(nitro: Nitro) { } export async function scanModules(nitro: Nitro) { - const files = await scanFiles(nitro, "modules"); + const files = await scanFiles(nitro, "modules", [ + "*/index.{js,mjs,cjs,ts,mts,cts}", + "*.{js,mjs,cjs,ts,mts,cts}", + ]); return files.map((f) => f.fullPath); } -async function scanFiles(nitro: Nitro, name: string): Promise { +async function scanFiles( + nitro: Nitro, + name: string, + patterns: string | string[] = [GLOB_SCAN_PATTERN] +): Promise { const files = await Promise.all( - nitro.options.scanDirs.map((dir) => scanDir(nitro, dir, name)) + nitro.options.scanDirs.map((dir) => scanDir(nitro, dir, name, patterns)) ).then((r) => r.flat()); return files; } @@ -154,9 +161,16 @@ async function scanFiles(nitro: Nitro, name: string): Promise { async function scanDir( nitro: Nitro, dir: string, - name: string + name: string, + patterns: string | string[] ): Promise { - const fileNames = await globby(join(name, GLOB_SCAN_PATTERN), { + const globbyPattern: string[] = []; + // Normalize patterns to an array + for (const pattern of Array.isArray(patterns) ? patterns : [patterns]) { + globbyPattern.push(join(name, pattern)); + } + + const fileNames = await globby(globbyPattern, { cwd: dir, dot: true, ignore: nitro.options.ignore, From 67d1275c2be5a5e792bf7d2d4882e949ceb54570 Mon Sep 17 00:00:00 2001 From: Marvin <33938500+marvin-j97@users.noreply.github.com> Date: Mon, 30 Sep 2024 00:12:46 +0200 Subject: [PATCH 30/32] perf: limit open files in generateFSTree (#2458) Co-authored-by: Pooya Parsa --- src/core/prerender/prerender.ts | 2 +- src/core/prerender/utils.ts | 37 ------------------------------ src/core/utils/fs-tree.ts | 28 ++++++++++++++--------- src/core/utils/parallel.ts | 40 +++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 49 deletions(-) create mode 100644 src/core/utils/parallel.ts diff --git a/src/core/prerender/prerender.ts b/src/core/prerender/prerender.ts index dc6119ff75..550c379c76 100644 --- a/src/core/prerender/prerender.ts +++ b/src/core/prerender/prerender.ts @@ -11,11 +11,11 @@ import { joinURL, withBase, withoutBase } from "ufo"; import { build } from "../build/build"; import { createNitro } from "../nitro"; import { compressPublicAssets } from "../utils/compress"; +import { runParallel } from "../utils/parallel"; import { extractLinks, formatPrerenderRoute, matchesIgnorePattern, - runParallel, } from "./utils"; const JsonSigRx = /^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/; // From unjs/destr diff --git a/src/core/prerender/utils.ts b/src/core/prerender/utils.ts index b9e09ee26a..bb284f81a7 100644 --- a/src/core/prerender/utils.ts +++ b/src/core/prerender/utils.ts @@ -6,43 +6,6 @@ const allowedExtensions = new Set(["", ".json"]); const linkParents = new Map>(); -export async function runParallel( - inputs: Set, - cb: (input: T) => unknown | Promise, - opts: { concurrency: number; interval: number } -) { - const tasks = new Set>(); - - function queueNext(): undefined | Promise { - const route = inputs.values().next().value; - if (!route) { - return; - } - - inputs.delete(route); - const task = new Promise((resolve) => setTimeout(resolve, opts.interval)) - .then(() => cb(route)) - .catch((error) => { - console.error(error); - }); - - tasks.add(task); - return task.then(() => { - tasks.delete(task); - if (inputs.size > 0) { - return refillQueue(); - } - }); - } - - function refillQueue(): Promise { - const workers = Math.min(opts.concurrency - tasks.size, inputs.size); - return Promise.all(Array.from({ length: workers }, () => queueNext())); - } - - await refillQueue(); -} - const LINK_REGEX = /(?<=\s)href=(?!")["']?([^"'>]+)/g; const HTML_ENTITIES = { diff --git a/src/core/utils/fs-tree.ts b/src/core/utils/fs-tree.ts index 77bbc2fd30..0622e455f7 100644 --- a/src/core/utils/fs-tree.ts +++ b/src/core/utils/fs-tree.ts @@ -5,6 +5,7 @@ import { gzipSize } from "gzip-size"; import { dirname, relative, resolve } from "pathe"; import prettyBytes from "pretty-bytes"; import { isTest } from "std-env"; +import { runParallel } from "./parallel"; export async function generateFSTree( dir: string, @@ -16,17 +17,22 @@ export async function generateFSTree( const files = await globby("**/*.*", { cwd: dir, ignore: ["*.map"] }); - const items = ( - await Promise.all( - files.map(async (file) => { - const path = resolve(dir, file); - const src = await fsp.readFile(path); - const size = src.byteLength; - const gzip = options.compressedSizes ? await gzipSize(src) : 0; - return { file, path, size, gzip }; - }) - ) - ).sort((a, b) => a.path.localeCompare(b.path)); + const items: { file: string; path: string; size: number; gzip: number }[] = + []; + + await runParallel( + new Set(files), + async (file) => { + const path = resolve(dir, file); + const src = await fsp.readFile(path); + const size = src.byteLength; + const gzip = options.compressedSizes ? await gzipSize(src) : 0; + items.push({ file, path, size, gzip }); + }, + { concurrency: 10 } + ); + + items.sort((a, b) => a.path.localeCompare(b.path)); let totalSize = 0; let totalGzip = 0; diff --git a/src/core/utils/parallel.ts b/src/core/utils/parallel.ts new file mode 100644 index 0000000000..cc9b5d700e --- /dev/null +++ b/src/core/utils/parallel.ts @@ -0,0 +1,40 @@ +export async function runParallel( + inputs: Set, + cb: (input: T) => unknown | Promise, + opts: { concurrency: number; interval?: number } +) { + const tasks = new Set>(); + + function queueNext(): undefined | Promise { + const route = inputs.values().next().value; + if (!route) { + return; + } + + inputs.delete(route); + const task = ( + opts.interval + ? new Promise((resolve) => setTimeout(resolve, opts.interval)) + : Promise.resolve() + ) + .then(() => cb(route)) + .catch((error) => { + console.error(error); + }); + + tasks.add(task); + return task.then(() => { + tasks.delete(task); + if (inputs.size > 0) { + return refillQueue(); + } + }); + } + + function refillQueue(): Promise { + const workers = Math.min(opts.concurrency - tasks.size, inputs.size); + return Promise.all(Array.from({ length: workers }, () => queueNext())); + } + + await refillQueue(); +} From d4349002b6218397016ec32da9368db2a3074ce9 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Mon, 30 Sep 2024 11:43:55 +0200 Subject: [PATCH 31/32] chore: enable `interopDefault` for stub mode --- build.config.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build.config.ts b/build.config.ts index d8c12cd39b..7b4b467c2d 100644 --- a/build.config.ts +++ b/build.config.ts @@ -69,6 +69,12 @@ export default defineBuildConfig({ "firebase-functions", "@scalar/api-reference", ], + stubOptions: { + jiti: { + // TOODO: remove when unbuild upgraded + interopDefault: true, + }, + }, rollup: { output: { chunkFileNames(chunk: any) { From 359af68d2b3d51d740cf869d0f13aec0c5e9f565 Mon Sep 17 00:00:00 2001 From: Aarvin Roshin Date: Tue, 1 Oct 2024 02:08:57 -0700 Subject: [PATCH 32/32] feat: add pdf and wasm to compressible mime types (#2766) --- docs/3.config/0.index.md | 2 ++ src/core/utils/compress.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/3.config/0.index.md b/docs/3.config/0.index.md index 008507e31d..950343494e 100644 --- a/docs/3.config/0.index.md +++ b/docs/3.config/0.index.md @@ -163,6 +163,7 @@ List of compressible MIME types: - `application/json` - `application/opentype` - `application/otf` +- `application/pdf` - `application/pkcs7-mime` - `application/protobuf` - `application/rss+xml` @@ -171,6 +172,7 @@ List of compressible MIME types: - `application/vnd.apple.mpegurl` - `application/vnd.mapbox-vector-tile` - `application/vnd.ms-fontobject` +- `application/wasm` - `application/xhtml+xml` - `application/xml` - `application/x-font-opentype` diff --git a/src/core/utils/compress.ts b/src/core/utils/compress.ts index eee5e51ca5..422b887e84 100644 --- a/src/core/utils/compress.ts +++ b/src/core/utils/compress.ts @@ -90,6 +90,7 @@ const COMPRESSIBLE_MIMES_RE = new Set([ "application/json", "application/opentype", "application/otf", + "application/pdf", "application/pkcs7-mime", "application/protobuf", "application/rss+xml", @@ -98,6 +99,7 @@ const COMPRESSIBLE_MIMES_RE = new Set([ "application/vnd.apple.mpegurl", "application/vnd.mapbox-vector-tile", "application/vnd.ms-fontobject", + "application/wasm", "application/xhtml+xml", "application/xml", "application/x-font-opentype",