diff --git a/docs/test-dev.test.ts b/docs/test-dev.test2.ts
similarity index 100%
rename from docs/test-dev.test.ts
rename to docs/test-dev.test2.ts
diff --git a/docs/test-preview.test.ts b/docs/test-preview.test2.ts
similarity index 100%
rename from docs/test-preview.test.ts
rename to docs/test-preview.test2.ts
diff --git a/example/app-cloudflare/package.json b/example/app-cloudflare/package.json
index 25988ca..170f5d7 100644
--- a/example/app-cloudflare/package.json
+++ b/example/app-cloudflare/package.json
@@ -16,10 +16,10 @@
"@photonjs/core": "workspace:",
"typescript": "^5.8.3",
"vite": "^6.3.5",
- "wrangler": "^4.15.1"
+ "wrangler": "^4.19.1"
},
"dependencies": {
- "@universal-middleware/core": "^0.4.7",
+ "@universal-middleware/core": "^0.4.9",
"awesome-framework": "workspace:",
"hono": "^4.7.8"
}
diff --git a/example/app-cloudflare/testRun.ts b/example/app-cloudflare/testRun.ts
index a6411f2..3d21a51 100644
--- a/example/app-cloudflare/testRun.ts
+++ b/example/app-cloudflare/testRun.ts
@@ -25,6 +25,11 @@ function testRun(cmd: `pnpm run ${string}`) {
expect(await response.text()).toBe('The API Route')
})
+ test('/standalone', async () => {
+ const response: Response = await fetch(`${getServerUrl()}/standalone`)
+ expect(await response.text()).toBe('The /standalone Route')
+ })
+
test('/bar', async () => {
const response: Response = await fetch(`${getServerUrl()}/bar`)
expect(await response.text()).toBe('bar')
diff --git a/example/app-cloudflare/vite.config.ts b/example/app-cloudflare/vite.config.ts
index 4fc9485..238300e 100644
--- a/example/app-cloudflare/vite.config.ts
+++ b/example/app-cloudflare/vite.config.ts
@@ -1,4 +1,4 @@
-///
+///
/* The Vite plugin cloudflare() will be replaced by this:
import cloudflare from '@photonjs/cloudflare'
*/
@@ -10,7 +10,7 @@ export default defineConfig(({ mode }) => {
return {
// No photon server entry is defined, it will fallback to a virtual entry
photon: {
- handlers: {
+ entries: {
// foo entry declares its route with `enhance` directly inside the file
foo: 'src/middlewares/foo.ts',
// bar entry route is declared here, and `enhance` is not used
diff --git a/example/app-hono-cloudflare/package.json b/example/app-hono-cloudflare/package.json
index 669348b..7078e9b 100644
--- a/example/app-hono-cloudflare/package.json
+++ b/example/app-hono-cloudflare/package.json
@@ -16,7 +16,7 @@
"@photonjs/core": "workspace:",
"typescript": "^5.8.3",
"vite": "^6.3.5",
- "wrangler": "^4.15.1"
+ "wrangler": "^4.19.1"
},
"dependencies": {
"awesome-framework": "workspace:",
diff --git a/example/app-hono-cloudflare/server.ts b/example/app-hono-cloudflare/server.ts
index 3130014..21cff09 100644
--- a/example/app-hono-cloudflare/server.ts
+++ b/example/app-hono-cloudflare/server.ts
@@ -1,16 +1,12 @@
// Will be moved to @photonjs/hono
import { apply, serve } from '@photonjs/core/hono'
-import awesomeFramework from 'awesome-framework/universal-middleware'
import { Hono } from 'hono'
async function startServer() {
const app = new Hono()
- apply(
- app,
- // Adds the framework's middlewares
- awesomeFramework,
- )
+ // awesomeFramework will automatically be injected by apply
+ apply(app)
return serve(app)
}
diff --git a/example/app-hono-cloudflare/vite.config.ts b/example/app-hono-cloudflare/vite.config.ts
index 7c95c88..8887949 100644
--- a/example/app-hono-cloudflare/vite.config.ts
+++ b/example/app-hono-cloudflare/vite.config.ts
@@ -1,4 +1,3 @@
-///
/* The Vite plugin cloudflare() will be replaced by this:
import cloudflare from '@photonjs/cloudflare'
*/
diff --git a/example/awesome-framework/package.json b/example/awesome-framework/package.json
index ee388ab..14a8ac1 100644
--- a/example/awesome-framework/package.json
+++ b/example/awesome-framework/package.json
@@ -8,7 +8,7 @@
},
"dependencies": {
"@photonjs/core": "workspace:",
- "@universal-middleware/core": "^0.4.7",
+ "@universal-middleware/core": "^0.4.9",
"@universal-middleware/sirv": "^0.1.20"
},
"devDependencies": {
@@ -21,6 +21,7 @@
"./entry-client": "./dist/entry-client.js",
"./render": "./dist/render.js",
"./vite": "./dist/vite/index.js",
+ "./standalone": "./dist/photon/entries/standalone.js",
"./universal-middleware": {
"types": "./dist/photon/entries/prod.d.ts",
"development": {
diff --git a/example/awesome-framework/src/photon/entries/standalone.ts b/example/awesome-framework/src/photon/entries/standalone.ts
new file mode 100644
index 0000000..7702e2c
--- /dev/null
+++ b/example/awesome-framework/src/photon/entries/standalone.ts
@@ -0,0 +1,21 @@
+import { enhance } from '@universal-middleware/core'
+
+const standaloneMiddleware = enhance(
+ async () => {
+ return new Response('The /standalone Route', {
+ status: 200,
+ headers: {
+ 'Content-Type': 'text/plain',
+ },
+ })
+ },
+ // enhance() adds meta data (a Universal Middleware in itself is just a Request => Response function)
+ {
+ name: 'awesome-framework:standalone',
+ path: '/standalone',
+ method: 'GET',
+ },
+)
+
+// This middleware will be used as a standalone handler, which means it is not included by `./universal-middleware` export
+export default standaloneMiddleware
diff --git a/example/awesome-framework/src/photon/middlewares/logger.ts b/example/awesome-framework/src/photon/middlewares/logger.ts
index 189de9b..b3cc7e8 100644
--- a/example/awesome-framework/src/photon/middlewares/logger.ts
+++ b/example/awesome-framework/src/photon/middlewares/logger.ts
@@ -1,8 +1,8 @@
import { enhance, MiddlewareOrder } from '@universal-middleware/core'
export const loggerMiddleware = enhance(
- (request: Request) => {
- console.log('Request:', request.url)
+ (request: Request, ctx: Universal.Context) => {
+ console.log('Request:', request.url, 'Context:', ctx)
},
// enhance() adds meta data (a Universal Middleware in itself is just a Request => Response function)
{
diff --git a/example/awesome-framework/src/vite/photonPlugin.ts b/example/awesome-framework/src/vite/photonPlugin.ts
index 998e5b9..04519f5 100644
--- a/example/awesome-framework/src/vite/photonPlugin.ts
+++ b/example/awesome-framework/src/vite/photonPlugin.ts
@@ -3,9 +3,29 @@ import type { Plugin } from 'vite'
export function photonPlugin(): Plugin[] {
return installPhoton('awesome-framework', {
+ // Enables full installation of all Photon plugins
fullInstall: true,
+
+ // Disables code-splitting functionality for testing purposes
+ codeSplitting: {
+ framework: false,
+ },
+
+ // Always use those middlewares for all entries defined by Photon
resolveMiddlewares() {
return 'awesome-framework/universal-middleware'
},
+
+ // Configuration for entry points used by Photon
+ entries: {
+ standalone: {
+ // Unique identifier for this entry point. Is resolved by Vite
+ id: 'awesome-framework/standalone',
+
+ // Sets composition mode to 'isolated', preventing it from
+ // being composed with middlewares defined in `resolveMiddlewares`
+ compositionMode: 'isolated',
+ },
+ },
})
}
diff --git a/package.json b/package.json
index ac9fc8f..56aeae8 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"========= Build": "",
"build": "pnpm run build:photon && pnpm run build:awesome-framework",
"build:photon": "pnpm --recursive --filter {packages/*} run build",
- "build:awesome-framework": "cd example/awesome-framework/ && pnpm run build",
+ "build:awesome-framework": "pnpm --filter {example/awesome-framework} run build",
"========= Test": "",
"test": "test-e2e",
"========= Formatting": "",
@@ -22,5 +22,10 @@
"playwright": "^1.52.0",
"prettier": "^3.2.5"
},
+ "pnpm": {
+ "overrides": {
+ "@types/node": "^20.17.32"
+ }
+ },
"packageManager": "pnpm@9.15.9"
}
diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json
index 950ffca..adb08e5 100644
--- a/packages/adapter-cloudflare/package.json
+++ b/packages/adapter-cloudflare/package.json
@@ -23,16 +23,16 @@
"release:commit": "release-me commit"
},
"dependencies": {
- "@cloudflare/vite-plugin": "^1.0.12",
+ "@cloudflare/vite-plugin": "^1.5.0",
"@photonjs/core": "workspace:^",
- "@universal-middleware/cloudflare": "^0.4.8"
+ "@universal-middleware/cloudflare": "^0.4.10"
},
"devDependencies": {
"@brillout/release-me": "^0.4.3",
- "@cloudflare/workers-types": "^4.20250515.0",
- "@universal-middleware/core": "^0.4.7",
- "@universal-middleware/h3": "^0.4.9",
- "@universal-middleware/hono": "^0.4.10",
+ "@cloudflare/workers-types": "^4.20250604.0",
+ "@universal-middleware/core": "^0.4.9",
+ "@universal-middleware/h3": "^0.4.12",
+ "@universal-middleware/hono": "^0.4.15",
"crossws": "^0.3.5",
"h3": "^1.15.1",
"tsup": "^8.4.0",
diff --git a/packages/adapter-cloudflare/src/adapters/dev.ts b/packages/adapter-cloudflare/src/adapters/dev.ts
index e87a291..5111b69 100644
--- a/packages/adapter-cloudflare/src/adapters/dev.ts
+++ b/packages/adapter-cloudflare/src/adapters/dev.ts
@@ -1,14 +1,15 @@
import type { ExportedHandlerFetchHandler } from '@cloudflare/workers-types'
+import { createIncompatibleServerError, createMissingApplyError, createMissingExportError } from '../utils/errors.js'
export function asFetch(app: unknown, id: string): ExportedHandlerFetchHandler {
if (!app) {
- throw new Error(`[photon] Missing export default in ${JSON.stringify(id)}`)
+ throw createMissingExportError(id)
}
const server = (app as Record)[Symbol.for('photon:server')]
if (!server) {
- throw new Error('[photon] { apply } function needs to be called before export')
+ throw createMissingApplyError()
}
switch (server) {
@@ -30,7 +31,5 @@ export function asFetch(app: unknown, id: string): ExportedHandlerFetchHandler {
}
}
- throw new Error(
- `[photon] Clouflare target is not compatible with server "${server}". We recommend using "hono" instead.`,
- )
+ throw createIncompatibleServerError(server)
}
diff --git a/packages/adapter-cloudflare/src/adapters/h3.ts b/packages/adapter-cloudflare/src/adapters/h3.ts
index 8580e81..de8167f 100644
--- a/packages/adapter-cloudflare/src/adapters/h3.ts
+++ b/packages/adapter-cloudflare/src/adapters/h3.ts
@@ -1,13 +1,14 @@
import type { ExportedHandlerFetchHandler, Response } from '@cloudflare/workers-types'
import type { apply as applyAdapter } from '@universal-middleware/h3'
import { toWebHandler } from 'h3'
+import { createMissingDependencyError } from '../utils/errors.js'
async function tryImportCrossws() {
try {
const { default: wsAdapter } = await import('crossws/adapters/cloudflare')
return wsAdapter
} catch (e) {
- throw new Error('crossws is not installed', { cause: e })
+ throw createMissingDependencyError('crossws', e)
}
}
diff --git a/packages/adapter-cloudflare/src/plugin.ts b/packages/adapter-cloudflare/src/plugin.ts
index 1ee7229..8701629 100644
--- a/packages/adapter-cloudflare/src/plugin.ts
+++ b/packages/adapter-cloudflare/src/plugin.ts
@@ -1,13 +1,9 @@
-///
import { cloudflare as cloudflareVitePlugins, type PluginConfig } from '@cloudflare/vite-plugin'
-import { isPhotonMeta } from '@photonjs/core/api'
-import { supportedTargetServers } from '@photonjs/core/vite'
+import { supportedTargetServers, targetLoader } from '@photonjs/core/vite'
import type { Plugin } from 'vite'
const moduleId = 'photon:cloudflare'
-const virtualModuleId = `\0${moduleId}`
-// TODO: create actual virtual Target Entries for each server
export function cloudflare(config?: Omit): Plugin[] {
return [
{
@@ -19,88 +15,52 @@ export function cloudflare(config?: Omit): Plug
photon: {
// @cloudflare/vite-plugin has its own dev server
devServer: false,
+ codeSplitting: {
+ target: false,
+ },
+ // Should be set to the value of cloudflareVitePlugins -> viteEnvironment.name
+ // defaultBuildEnv: 'cloudflare',
},
}
},
},
},
- supportedTargetServers('cloudflare', ['hono', 'h3']),
- {
- name: `${moduleId}:resolver`,
-
- async resolveId(id, importer, opts) {
- if (id.startsWith(moduleId)) {
- const resolved = await this.resolve(id.replace(/^photon:cloudflare:/, ''), importer, opts)
-
- if (!resolved) {
- return this.error(`[photon][cloudflare] Cannot resolve ${id}`)
- }
-
- return {
- ...resolved,
- id: `${virtualModuleId}:${resolved.id}`,
- }
- }
- },
-
- // TODO add tests
- async load(id) {
- if (!id.startsWith(virtualModuleId)) return
- const actualId = id.slice(virtualModuleId.length + 1)
-
- const info = this.getModuleInfo(id)
-
- if (!isPhotonMeta(info?.meta)) {
- return this.error(`[photon][cloudflare] ${actualId} is not a Photon entry`)
- }
-
+ ...targetLoader('cloudflare', {
+ async load(id, { meta }) {
const isDev = this.environment.config.command === 'serve'
- if (info.meta.photon.type === 'server') {
- // `server` usually exists only during build time
- if (info.meta.photon.server) {
- return {
- // language=ts
- code: `import serverEntry from ${JSON.stringify(actualId)};
-import { asFetch } from "@photonjs/cloudflare/${info.meta.photon.server}";
+ // `server` usually exists only during build time
+ if (meta.server) {
+ return {
+ // language=ts
+ code: `import serverEntry from ${JSON.stringify(id)};
+ import { asFetch } from "@photonjs/cloudflare/${meta.server}";
-export const fetch = asFetch(serverEntry);
-export default { fetch };
-`,
- map: { mappings: '' },
- }
+ export const fetch = asFetch(serverEntry);
+ export default { fetch };
+ `,
+ map: { mappings: '' },
}
+ }
- if (isDev) {
- return {
- // language=ts
- code: `import serverEntry from ${JSON.stringify(actualId)};
-import { asFetch } from "@photonjs/cloudflare/dev";
-
-export const fetch = asFetch(serverEntry, ${JSON.stringify(actualId)});
-export default { fetch };
-`,
- map: { mappings: '' },
- }
- }
- } else {
+ if (isDev) {
return {
// language=ts
- code: `import handler from ${JSON.stringify(actualId)};
-import { getRuntime } from "@universal-middleware/cloudflare";
+ code: `import serverEntry from ${JSON.stringify(id)};
+import { asFetch } from "@photonjs/cloudflare/dev";
-export const fetch = (request, env, ctx) => {
- return handler(request, {}, getRuntime(env, ctx))
-};
+export const fetch = asFetch(serverEntry, ${JSON.stringify(id)});
export default { fetch };
`,
map: { mappings: '' },
}
}
- return this.error(`[photon][cloudflare] Unable to load ${actualId}`)
+ return this.error(`[photon][cloudflare] Unable to load ${id}`)
},
- },
+ }),
+ supportedTargetServers('cloudflare', ['hono', 'h3']),
+ // FIXME do not enforce ssr env?
...cloudflareVitePlugins({ ...config, viteEnvironment: { name: 'ssr' } }),
]
}
diff --git a/packages/adapter-cloudflare/src/utils/errors.ts b/packages/adapter-cloudflare/src/utils/errors.ts
new file mode 100644
index 0000000..641c082
--- /dev/null
+++ b/packages/adapter-cloudflare/src/utils/errors.ts
@@ -0,0 +1,28 @@
+import { PhotonBugError, PhotonConfigError, PhotonDependencyError, PhotonUsageError } from '@photonjs/core/errors'
+
+// Utility functions for common error scenarios
+export function createMissingExportError(id: string): PhotonUsageError {
+ return new PhotonUsageError(`Missing export default in ${JSON.stringify(id)}`)
+}
+
+export function createMissingApplyError(): PhotonUsageError {
+ return new PhotonUsageError('{ apply } function needs to be called before export')
+}
+
+export function createIncompatibleServerError(server: string): PhotonConfigError {
+ return new PhotonConfigError(
+ `Cloudflare target is not compatible with server "${server}". We recommend using "hono" instead.`,
+ )
+}
+
+export function createMissingDependencyError(dependency: string, cause?: unknown): PhotonDependencyError {
+ return new PhotonDependencyError(
+ `${dependency} is not installed. Please install ${dependency} to use this functionality with Cloudflare.`,
+ { cause },
+ )
+}
+
+export function assert(condition: unknown): asserts condition {
+ if (condition) return
+ throw new PhotonBugError()
+}
diff --git a/packages/photonjs/build.js b/packages/photonjs/build.js
new file mode 100644
index 0000000..56d199d
--- /dev/null
+++ b/packages/photonjs/build.js
@@ -0,0 +1,103 @@
+import { build } from 'tsup'
+
+const externalServers = ['elysia', 'fastify', 'h3', 'hono']
+
+const commonOptions = {
+ format: ['esm'],
+ target: 'es2022',
+ esbuildOptions(opts) {
+ opts.outbase = 'src'
+ },
+ dts: {
+ compilerOptions: {
+ rootDir: './',
+ },
+ },
+ outDir: 'dist',
+ treeshake: true,
+ removeNodeProtocol: false,
+ external: externalServers.concat(/^photon:get-middlewares:/).concat(/^@photonjs\/core/),
+}
+
+await build({
+ ...commonOptions,
+ platform: 'node',
+ entry: {
+ plugin: './src/plugin/index.ts',
+ api: './src/api.ts',
+ dev: './src/dev.ts',
+ assert: './src/utils/assert.ts',
+ index: './src/index.ts',
+ },
+})
+
+await build({
+ ...commonOptions,
+ platform: 'neutral',
+ entry: {
+ // serve (noop)
+ 'elysia/serve': './src/serve/noop/elysia.ts',
+ 'express/serve': './src/serve/noop/express.ts',
+ 'fastify/serve': './src/serve/noop/fastify.ts',
+ 'h3/serve': './src/serve/noop/h3.ts',
+ 'hattip/serve': './src/serve/noop/hattip.ts',
+ 'hono/serve': './src/serve/noop/hono.ts',
+ // apply (edge)
+ 'elysia/apply.edge': './src/apply/edge/elysia.ts',
+ 'h3/apply.edge': './src/apply/edge/h3.ts',
+ 'hattip/apply.edge': './src/apply/edge/hattip.ts',
+ 'hono/apply.edge': './src/apply/edge/hono.ts',
+ },
+})
+
+await build({
+ ...commonOptions,
+ platform: 'node',
+ entry: {
+ // serve (bun)
+ 'elysia/serve.bun': './src/serve/bun/elysia.ts',
+ 'h3/serve.bun': './src/serve/bun/h3.ts',
+ 'hattip/serve.bun': './src/serve/bun/hattip.ts',
+ 'hono/serve.bun': './src/serve/bun/hono.ts',
+ // serve (deno)
+ 'elysia/serve.deno': './src/serve/deno/elysia.ts',
+ 'h3/serve.deno': './src/serve/deno/h3.ts',
+ 'hattip/serve.deno': './src/serve/deno/hattip.ts',
+ 'hono/serve.deno': './src/serve/deno/hono.ts',
+ // serve (node)
+ 'elysia/serve.node': './src/serve/node/elysia.ts',
+ 'express/serve.node': './src/serve/node/express.ts',
+ 'fastify/serve.node': './src/serve/node/fastify.ts',
+ 'h3/serve.node': './src/serve/node/h3.ts',
+ 'hattip/serve.node': './src/serve/node/hattip.ts',
+ 'hono/serve.node': './src/serve/node/hono.ts',
+ // apply (dev)
+ 'elysia/apply.dev': './src/apply/dev/elysia.ts',
+ 'express/apply.dev': './src/apply/dev/express.ts',
+ 'fastify/apply.dev': './src/apply/dev/fastify.ts',
+ 'h3/apply.dev': './src/apply/dev/h3.ts',
+ 'hattip/apply.dev': './src/apply/dev/hattip.ts',
+ 'hono/apply.dev': './src/apply/dev/hono.ts',
+ // apply (node)
+ 'elysia/apply': './src/apply/node/elysia.ts',
+ 'express/apply': './src/apply/node/express.ts',
+ 'fastify/apply': './src/apply/node/fastify.ts',
+ 'h3/apply': './src/apply/node/h3.ts',
+ 'hattip/apply': './src/apply/node/hattip.ts',
+ 'hono/apply': './src/apply/node/hono.ts',
+ },
+})
+
+await build({
+ ...commonOptions,
+ platform: 'neutral',
+ entry: {
+ // servers
+ elysia: './src/servers/elysia.ts',
+ express: './src/servers/express.ts',
+ fastify: './src/servers/fastify.ts',
+ h3: './src/servers/h3.ts',
+ hattip: './src/servers/hattip.ts',
+ hono: './src/servers/hono.ts',
+ },
+})
diff --git a/packages/photonjs/package.json b/packages/photonjs/package.json
index 0dbc713..ece1530 100644
--- a/packages/photonjs/package.json
+++ b/packages/photonjs/package.json
@@ -9,6 +9,7 @@
"./vite": "./dist/plugin.js",
"./api": "./dist/api.js",
"./dev": "./dist/dev.js",
+ "./errors": "./dist/assert.js",
".": "./dist/index.js",
"./virtual": {
"types": "./virtual.d.ts"
@@ -247,7 +248,7 @@
},
"scripts": {
"dev": "tsup --watch",
- "build": "rm -rf dist && tsup",
+ "build": "rm -rf dist && node build.js",
"release": "release-me patch",
"release:minor": "release-me minor",
"release:major": "release-me major",
@@ -256,19 +257,20 @@
"dependencies": {
"@brillout/picocolors": "^1.0.26",
"@brillout/vite-plugin-server-entry": "^0.7.5",
+ "@universal-middleware/cloudflare": "^0.4.10",
"@universal-middleware/compress": "^0.2.30",
- "@universal-middleware/core": "^0.4.7",
- "@universal-middleware/elysia": "^0.5.1",
- "@universal-middleware/express": "^0.4.16",
- "@universal-middleware/fastify": "^0.5.18",
- "@universal-middleware/h3": "^0.4.10",
- "@universal-middleware/hattip": "^0.4.9",
- "@universal-middleware/hono": "^0.4.12",
+ "@universal-middleware/core": "^0.4.9",
+ "@universal-middleware/elysia": "^0.5.3",
+ "@universal-middleware/express": "^0.4.18",
+ "@universal-middleware/fastify": "^0.5.20",
+ "@universal-middleware/h3": "^0.4.12",
+ "@universal-middleware/hattip": "^0.4.11",
+ "@universal-middleware/hono": "^0.4.15",
"@universal-middleware/sirv": "^0.1.20",
- "arktype": "^2.1.20",
"estree-walker": "^3.0.3",
"hono": "^4.7.7",
- "oxc-transform": "^0.64.0"
+ "ts-deepmerge": "^7.0.3",
+ "zod": "^3.25.64"
},
"peerDependencies": {
"vite": ">=6"
@@ -291,7 +293,6 @@
"fastify": "^5.3.0",
"h3": "^1.15.1",
"magic-string": "^0.30.17",
- "rollup": "4.38.0",
"tsup": "^8.4.0",
"typescript": "^5.8.3",
"unplugin": "^2.3.2",
diff --git a/packages/photonjs/src/api.ts b/packages/photonjs/src/api.ts
index 8553ecc..a6df193 100644
--- a/packages/photonjs/src/api.ts
+++ b/packages/photonjs/src/api.ts
@@ -1,16 +1,18 @@
-import 'vite'
-import './types.js'
+import './vite-types.js'
export { isPhotonMeta, type PhotonMeta } from './plugin/utils/entry.js'
export { resolvePhotonConfig } from './validators/coerce.js'
-export { setPhotonHandler } from './api/setPhotonEntry.js'
-
-declare module 'vite' {
- interface UserConfig {
- photon?: Photon.Config
- }
-
- interface ResolvedConfig {
- photon: Photon.ConfigResolved
- }
-}
+export {
+ addPhotonEntry,
+ updatePhotonEntry,
+ getPhotonServerIdWithEntry,
+} from './api/api.js'
+export {
+ PhotonError,
+ PhotonBugError,
+ PhotonUsageError,
+ PhotonConfigError,
+ PhotonRuntimeError,
+ PhotonDependencyError,
+} from './utils/assert.js'
+export { getPhotonMeta } from './utils/meta.js'
diff --git a/packages/photonjs/src/api/api.ts b/packages/photonjs/src/api/api.ts
new file mode 100644
index 0000000..8929df3
--- /dev/null
+++ b/packages/photonjs/src/api/api.ts
@@ -0,0 +1,59 @@
+import { z } from 'zod/v4'
+import type { PluginContext } from '../plugin/utils/rollupTypes.js'
+import type { Photon } from '../types.js'
+import { PhotonConfigError, PhotonUsageError } from '../utils/assert.js'
+import { entryToPhoton } from '../validators/coerce.js'
+import { PhotonEntryServerConfig, PhotonEntryUniversalHandler } from '../validators/validators.js'
+import { merge } from 'ts-deepmerge'
+
+/**
+ * Registers a new Photon entry.
+ * @throws {PhotonConfigError} will throw an error if an entry with this name already exists.
+ */
+export function addPhotonEntry(pluginContext: PluginContext, name: string, entry: Photon.EntryPartial) {
+ if (pluginContext.environment.config.afterBuildStart) {
+ throw new PhotonUsageError('Cannot use addPhotonEntry entry after buildStart hook.')
+ }
+ if (pluginContext.environment.config.photon.entries.some((e) => e.name === entry.name)) {
+ throw new PhotonConfigError(`Photon entry with name "${entry.name}" already exists.`)
+ }
+
+ const parsed = z
+ .union([PhotonEntryUniversalHandler, PhotonEntryServerConfig])
+ .parse(entryToPhoton('handler-entry', entry, name))
+
+ if (pluginContext.environment.config.photon.codeSplitting.framework && parsed.type === 'server-config') {
+ throw new PhotonConfigError(
+ `Photon entry with name "${entry.name}" is of type "server-config" but code splitting is enabled. Please disable code splitting or use "universal-handler" instead.`,
+ )
+ }
+
+ pluginContext.environment.config.photon.entries.push(parsed)
+}
+
+/**
+ * Updates an existing Photon entry.
+ * @throws {PhotonConfigError} will throw an error if no entry with this name already exists.
+ */
+export function updatePhotonEntry(pluginContext: PluginContext, name: string, entry: Photon.EntryPartial) {
+ const foundEntry = pluginContext.environment.config.photon.entries.find((e) => e.name === entry.name)
+ if (!foundEntry) {
+ throw new PhotonConfigError(`Photon entry with name "${entry.name}" not found.`)
+ }
+
+ const parsed = z
+ .union([PhotonEntryUniversalHandler, PhotonEntryServerConfig])
+ .parse(entryToPhoton('handler-entry', entry, name))
+
+ if (pluginContext.environment.config.photon.codeSplitting.framework && parsed.type === 'server-config') {
+ throw new PhotonConfigError(
+ `Photon entry with name "${entry.name}" is of type "server-config" but code splitting is enabled. Please disable code splitting or use "universal-handler" instead.`,
+ )
+ }
+
+ Object.assign(foundEntry, merge(foundEntry, parsed))
+}
+
+export function getPhotonServerIdWithEntry(condition: 'dev' | 'node' | 'edge', handlerId: string) {
+ return `photon:server-entry-with-entry:${condition}:${handlerId}`
+}
diff --git a/packages/photonjs/src/api/setPhotonEntry.ts b/packages/photonjs/src/api/setPhotonEntry.ts
deleted file mode 100644
index 094accc..0000000
--- a/packages/photonjs/src/api/setPhotonEntry.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { PluginContext } from 'rollup'
-import { asPhotonEntryId } from '../plugin/utils/virtual.js'
-
-export function setPhotonHandler(pluginContext: PluginContext, fileName: string, entry: Photon.EntryUniversalHandler) {
- pluginContext.environment.config.photon.handlers[fileName] = {
- ...entry,
- id: asPhotonEntryId(entry.id, 'handler-entry'),
- }
-}
diff --git a/packages/photonjs/src/apply/common.ts b/packages/photonjs/src/apply/common.ts
new file mode 100644
index 0000000..10bdacb
--- /dev/null
+++ b/packages/photonjs/src/apply/common.ts
@@ -0,0 +1,91 @@
+import {
+ type EnhancedMiddleware,
+ getUniversalProp,
+ nameSymbol,
+ type UniversalHandler,
+ type UniversalMiddleware,
+} from '@universal-middleware/core'
+import { extractUniversal } from '../plugin/utils/universal.js'
+
+function errorMessageMiddleware(_id: string, index: number) {
+ return `Additional middleware at index ${index} default export must respect the following type: UniversalMiddleware | UniversalMiddleware[]. Each individual middleware must be wrapped with enhance helper. See https://universal-middleware.dev/helpers/enhance`
+}
+
+type Apply = (app: App, middlewares: EnhancedMiddleware[]) => void
+type AsyncApply = (app: App, middlewares: EnhancedMiddleware[]) => Promise
+
+export function createApply(
+ server: string,
+ applyAdapter: Apply,
+ getUniversalEntries: () => UniversalHandler[],
+ getUniversalMiddlewares: () => UniversalMiddleware[],
+ devServerMiddleware?: () => UniversalMiddleware,
+) {
+ return function apply(app: T, additionalMiddlewares?: UniversalMiddleware[]): T {
+ const middlewares = getUniversalMiddlewares()
+ const entries = getUniversalEntries()
+ if (devServerMiddleware) {
+ middlewares.unshift(devServerMiddleware())
+ }
+
+ // dedupe
+ if (additionalMiddlewares) {
+ let index = 0
+ for (const middleware of extractUniversal(additionalMiddlewares, '', errorMessageMiddleware)) {
+ const i = middlewares.findIndex(
+ (m) => getUniversalProp(m, nameSymbol) === getUniversalProp(middleware, nameSymbol),
+ )
+ if (i !== -1) {
+ middlewares.splice(i, 1)
+ }
+ middlewares.push(middleware)
+ index++
+ }
+ }
+
+ applyAdapter(app, [...middlewares, ...entries])
+
+ // biome-ignore lint/suspicious/noExplicitAny:
+ ;(app as any)[Symbol.for('photon:server')] = server
+
+ return app
+ }
+}
+
+export function createAsyncApply(
+ server: string,
+ applyAdapter: AsyncApply,
+ getUniversalEntries: () => UniversalHandler[],
+ getUniversalMiddlewares: () => UniversalMiddleware[],
+ devServerMiddleware?: () => UniversalMiddleware,
+) {
+ return async function apply(app: T, additionalMiddlewares?: UniversalMiddleware[]): Promise {
+ const middlewares = getUniversalMiddlewares()
+ const entries = getUniversalEntries()
+ if (devServerMiddleware) {
+ middlewares.unshift(devServerMiddleware())
+ }
+
+ // dedupe
+ if (additionalMiddlewares) {
+ let index = 0
+ for (const middleware of extractUniversal(additionalMiddlewares, '', errorMessageMiddleware)) {
+ const i = middlewares.findIndex(
+ (m) => getUniversalProp(m, nameSymbol) === getUniversalProp(middleware, nameSymbol),
+ )
+ if (i !== -1) {
+ middlewares.splice(i, 1)
+ }
+ middlewares.push(middleware)
+ index++
+ }
+ }
+
+ await applyAdapter(app, [...middlewares, ...entries])
+
+ // biome-ignore lint/suspicious/noExplicitAny:
+ ;(app as any)[Symbol.for('photon:server')] = server
+
+ return app
+ }
+}
diff --git a/packages/photonjs/src/apply/dev/elysia.ts b/packages/photonjs/src/apply/dev/elysia.ts
new file mode 100644
index 0000000..67d2e27
--- /dev/null
+++ b/packages/photonjs/src/apply/dev/elysia.ts
@@ -0,0 +1,15 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:dev:elysia'
+import type { RuntimeAdapterTarget, UniversalMiddleware } from '@universal-middleware/core'
+import { type App, apply as applyAdapter } from '@universal-middleware/elysia'
+import { createApply } from '../common.js'
+import { devServerMiddleware } from '@photonjs/core/dev'
+
+export const apply: (app: T, additionalMiddlewares?: UniversalMiddleware[]) => T = createApply(
+ 'elysia',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+ devServerMiddleware,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'elysia'>
diff --git a/packages/photonjs/src/apply/dev/express.ts b/packages/photonjs/src/apply/dev/express.ts
new file mode 100644
index 0000000..ab274cd
--- /dev/null
+++ b/packages/photonjs/src/apply/dev/express.ts
@@ -0,0 +1,15 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:dev:express'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/express'
+import { createApply } from '../common.js'
+import { devServerMiddleware } from '@photonjs/core/dev'
+
+export const apply = createApply(
+ 'express',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+ devServerMiddleware,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'express'>
diff --git a/packages/photonjs/src/apply/dev/fastify.ts b/packages/photonjs/src/apply/dev/fastify.ts
new file mode 100644
index 0000000..5da4024
--- /dev/null
+++ b/packages/photonjs/src/apply/dev/fastify.ts
@@ -0,0 +1,15 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:dev:fastify'
+import { devServerMiddleware } from '@photonjs/core/dev'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/fastify'
+import { createAsyncApply } from '../common.js'
+
+export const apply = createAsyncApply(
+ 'fastify',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+ devServerMiddleware,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'fastify'>
diff --git a/packages/photonjs/src/apply/dev/h3.ts b/packages/photonjs/src/apply/dev/h3.ts
new file mode 100644
index 0000000..6002832
--- /dev/null
+++ b/packages/photonjs/src/apply/dev/h3.ts
@@ -0,0 +1,9 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:dev:h3'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/h3'
+import { createApply } from '../common.js'
+import { devServerMiddleware } from '@photonjs/core/dev'
+
+export const apply = createApply('h3', applyAdapter, getUniversalEntries, getUniversalMiddlewares, devServerMiddleware)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'h3'>
diff --git a/packages/photonjs/src/apply/dev/hattip.ts b/packages/photonjs/src/apply/dev/hattip.ts
new file mode 100644
index 0000000..11993cb
--- /dev/null
+++ b/packages/photonjs/src/apply/dev/hattip.ts
@@ -0,0 +1,15 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:dev:hattip'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/hattip'
+import { createApply } from '../common.js'
+import { devServerMiddleware } from '@photonjs/core/dev'
+
+export const apply = createApply(
+ 'hattip',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+ devServerMiddleware,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'hattip'>
diff --git a/packages/photonjs/src/apply/dev/hono.ts b/packages/photonjs/src/apply/dev/hono.ts
new file mode 100644
index 0000000..eb7bdce
--- /dev/null
+++ b/packages/photonjs/src/apply/dev/hono.ts
@@ -0,0 +1,15 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:dev:hono'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/hono'
+import { createApply } from '../common.js'
+import { devServerMiddleware } from '@photonjs/core/dev'
+
+export const apply = createApply(
+ 'hono',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+ devServerMiddleware,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'hono'>
diff --git a/packages/photonjs/src/apply/edge/elysia.ts b/packages/photonjs/src/apply/edge/elysia.ts
new file mode 100644
index 0000000..04b974d
--- /dev/null
+++ b/packages/photonjs/src/apply/edge/elysia.ts
@@ -0,0 +1,13 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:edge:elysia'
+import type { RuntimeAdapterTarget, UniversalMiddleware } from '@universal-middleware/core'
+import { type App, apply as applyAdapter } from '@universal-middleware/elysia'
+import { createApply } from '../common.js'
+
+export const apply: (app: T, additionalMiddlewares?: UniversalMiddleware[]) => T = createApply(
+ 'elysia',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'elysia'>
diff --git a/packages/photonjs/src/apply/edge/h3.ts b/packages/photonjs/src/apply/edge/h3.ts
new file mode 100644
index 0000000..16bb084
--- /dev/null
+++ b/packages/photonjs/src/apply/edge/h3.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:edge:h3'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/h3'
+import { createApply } from '../common.js'
+
+export const apply = createApply('h3', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'h3'>
diff --git a/packages/photonjs/src/apply/edge/hattip.ts b/packages/photonjs/src/apply/edge/hattip.ts
new file mode 100644
index 0000000..bc2b643
--- /dev/null
+++ b/packages/photonjs/src/apply/edge/hattip.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:edge:hattip'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/hattip'
+import { createApply } from '../common.js'
+
+export const apply = createApply('hattip', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'hattip'>
diff --git a/packages/photonjs/src/apply/edge/hono.ts b/packages/photonjs/src/apply/edge/hono.ts
new file mode 100644
index 0000000..52e0e49
--- /dev/null
+++ b/packages/photonjs/src/apply/edge/hono.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:edge:hono'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/hono'
+import { createApply } from '../common.js'
+
+export const apply = createApply('hono', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'hono'>
diff --git a/packages/photonjs/src/apply/esbuild.ts b/packages/photonjs/src/apply/esbuild.ts
deleted file mode 100644
index e427e6f..0000000
--- a/packages/photonjs/src/apply/esbuild.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { createEsbuildPlugin } from 'unplugin'
-import { virtualApplyFactory } from './virtualApply.js'
-
-export default createEsbuildPlugin(virtualApplyFactory)
diff --git a/packages/photonjs/src/apply/node/elysia.ts b/packages/photonjs/src/apply/node/elysia.ts
new file mode 100644
index 0000000..a17b0ea
--- /dev/null
+++ b/packages/photonjs/src/apply/node/elysia.ts
@@ -0,0 +1,13 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:node:elysia'
+import type { RuntimeAdapterTarget, UniversalMiddleware } from '@universal-middleware/core'
+import { type App, apply as applyAdapter } from '@universal-middleware/elysia'
+import { createApply } from '../common.js'
+
+export const apply: (app: T, additionalMiddlewares?: UniversalMiddleware[]) => T = createApply(
+ 'elysia',
+ applyAdapter,
+ getUniversalEntries,
+ getUniversalMiddlewares,
+)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'elysia'>
diff --git a/packages/photonjs/src/apply/node/express.ts b/packages/photonjs/src/apply/node/express.ts
new file mode 100644
index 0000000..47aa019
--- /dev/null
+++ b/packages/photonjs/src/apply/node/express.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:node:express'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/express'
+import { createApply } from '../common.js'
+
+export const apply = createApply('express', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'express'>
diff --git a/packages/photonjs/src/apply/node/fastify.ts b/packages/photonjs/src/apply/node/fastify.ts
new file mode 100644
index 0000000..8809e9f
--- /dev/null
+++ b/packages/photonjs/src/apply/node/fastify.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:node:fastify'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/fastify'
+import { createAsyncApply } from '../common.js'
+
+export const apply = createAsyncApply('fastify', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'fastify'>
diff --git a/packages/photonjs/src/apply/node/h3.ts b/packages/photonjs/src/apply/node/h3.ts
new file mode 100644
index 0000000..7e03fcc
--- /dev/null
+++ b/packages/photonjs/src/apply/node/h3.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:node:h3'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/h3'
+import { createApply } from '../common.js'
+
+export const apply = createApply('h3', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'h3'>
diff --git a/packages/photonjs/src/apply/node/hattip.ts b/packages/photonjs/src/apply/node/hattip.ts
new file mode 100644
index 0000000..b18ddce
--- /dev/null
+++ b/packages/photonjs/src/apply/node/hattip.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:node:hattip'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/hattip'
+import { createApply } from '../common.js'
+
+export const apply = createApply('hattip', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'hattip'>
diff --git a/packages/photonjs/src/apply/node/hono.ts b/packages/photonjs/src/apply/node/hono.ts
new file mode 100644
index 0000000..f51fcd2
--- /dev/null
+++ b/packages/photonjs/src/apply/node/hono.ts
@@ -0,0 +1,8 @@
+import { getUniversalEntries, getUniversalMiddlewares } from 'photon:get-middlewares:node:hono'
+import type { RuntimeAdapterTarget } from '@universal-middleware/core'
+import { apply as applyAdapter } from '@universal-middleware/hono'
+import { createApply } from '../common.js'
+
+export const apply = createApply('hono', applyAdapter, getUniversalEntries, getUniversalMiddlewares)
+
+export type RuntimeAdapter = RuntimeAdapterTarget<'hono'>
diff --git a/packages/photonjs/src/apply/virtualApply.ts b/packages/photonjs/src/apply/virtualApply.ts
deleted file mode 100644
index d8decbb..0000000
--- a/packages/photonjs/src/apply/virtualApply.ts
+++ /dev/null
@@ -1,207 +0,0 @@
-import oxc from 'oxc-transform'
-import type { UnpluginFactory } from 'unplugin'
-import { assert } from '../utils/assert.js'
-
-const re_apply = /^photon:virtual-apply:(?dev|edge|node):(?[^:]+)(?.*)/
-const re_index = /^photon:virtual-index:(?[^:]+)(?.*)/
-interface MatchGroups {
- condition?: 'dev' | 'edge' | 'node'
- server: string
- rest: string
-}
-
-function test(id: string, re: RegExp): MatchGroups | null {
- const match = id.match(re)
- if (!match) return null
- return match.groups as unknown as MatchGroups
-}
-
-function compileApply(id: string) {
- const match = test(id, re_apply)
- if (!match) throw new Error(`Invalid id ${id}`)
-
- const isAsync = match.server === 'fastify'
-
- //language=ts
- const code = `import { apply as applyAdapter } from '@universal-middleware/${match.server}';
-import { getUniversalMiddlewares, getUniversalEntries, extractUniversal, errorMessageMiddleware } from 'photon:get-middlewares:${match.condition}:${match.server}${match.rest}';
-import { type RuntimeAdapterTarget, type UniversalMiddleware, getUniversalProp, nameSymbol } from '@universal-middleware/core';
-${match.condition === 'dev' ? 'import { devServerMiddleware } from "@photonjs/core/dev";' : ''}
-
-function errorMessageMiddleware(id, index) {
- return \`PhotonError: additional middleware at index \${index} default export must respect the following type: UniversalMiddleware | UniversalMiddleware[]. Each individual middleware must be wrapped with enhance helper. See https://universal-middleware.dev/helpers/enhance\`
-}
-
-export ${isAsync ? 'async' : ''} function apply(app: Parameters[0], additionalMiddlewares?: UniversalMiddleware[]): ${isAsync ? 'Promise[0]>' : 'Parameters[0]'} {
- const middlewares = getUniversalMiddlewares();
- const entries = getUniversalEntries();
- ${match.condition === 'dev' ? 'middlewares.unshift(devServerMiddleware());' : ''}
-
- // dedupe
- if (additionalMiddlewares) {
- let index = 0;
- for (const middleware of extractUniversal(additionalMiddlewares, '', errorMessageMiddleware)) {
- const i = middlewares.findIndex(m => getUniversalProp(m, nameSymbol) === getUniversalProp(middleware, nameSymbol));
- if (i !== -1) {
- middlewares.splice(i, 1);
- }
- middlewares.push(middleware);
- index++;
- }
- }
-
- ${isAsync ? 'await' : ''} applyAdapter(app, [...middlewares, ...entries]);
-
- app[Symbol.for('photon:server')] = ${JSON.stringify(match.server)};
-
- return app;
-}
-
-export type RuntimeAdapter = RuntimeAdapterTarget<${JSON.stringify(match.server)}>;
-`
- const result = oxc.transform(`${match.server}.${match.condition}.ts`, code, {
- sourcemap: true,
- typescript: {
- declaration: {},
- },
- })
-
- return {
- ...match,
- ...result,
- }
-}
-
-function compileIndex(id: string) {
- const match = test(id, re_index)
- if (!match) throw new Error(`Invalid id ${id}`)
-
- //language=ts
- const code = `export { apply, type RuntimeAdapter } from '@photonjs/core/${match.server}/apply'
-export { serve } from '@photonjs/core/${match.server}/serve'
-`
- const result = oxc.transform(`${match.server}.ts`, code, {
- sourcemap: true,
- typescript: {
- declaration: {},
- },
- })
-
- return {
- ...match,
- ...result,
- }
-}
-
-const entries = {
- // -- apply
- // dev
- 'elysia/apply.dev': 'photon:virtual-apply:dev:elysia',
- 'express/apply.dev': 'photon:virtual-apply:dev:express',
- 'fastify/apply.dev': 'photon:virtual-apply:dev:fastify',
- 'h3/apply.dev': 'photon:virtual-apply:dev:h3',
- 'hattip/apply.dev': 'photon:virtual-apply:dev:hattip',
- 'hono/apply.dev': 'photon:virtual-apply:dev:hono',
- // edge
- 'elysia/apply.edge': 'photon:virtual-apply:edge:elysia',
- 'h3/apply.edge': 'photon:virtual-apply:edge:h3',
- 'hattip/apply.edge': 'photon:virtual-apply:edge:hattip',
- 'hono/apply.edge': 'photon:virtual-apply:edge:hono',
- // node
- 'elysia/apply': 'photon:virtual-apply:node:elysia',
- 'express/apply': 'photon:virtual-apply:node:express',
- 'fastify/apply': 'photon:virtual-apply:node:fastify',
- 'h3/apply': 'photon:virtual-apply:node:h3',
- 'hattip/apply': 'photon:virtual-apply:node:hattip',
- 'hono/apply': 'photon:virtual-apply:node:hono',
- // -- index,
- elysia: 'photon:virtual-index:elysia',
- express: 'photon:virtual-index:express',
- fastify: 'photon:virtual-index:fastify',
- h3: 'photon:virtual-index:h3',
- hattip: 'photon:virtual-index:hattip',
- hono: 'photon:virtual-index:hono',
-}
-
-export const virtualApplyFactory: UnpluginFactory = () => {
- return {
- name: 'photon:virtual-apply',
-
- esbuild: {
- config(opts) {
- opts.entryPoints ??= {}
- assert(!Array.isArray(opts.entryPoints))
- Object.assign(opts.entryPoints, entries)
-
- opts.external ??= []
- opts.external.push('@photonjs/core/elysia/apply')
- opts.external.push('@photonjs/core/elysia/serve')
- opts.external.push('@photonjs/core/express/apply')
- opts.external.push('@photonjs/core/express/serve')
- opts.external.push('@photonjs/core/fastify/apply')
- opts.external.push('@photonjs/core/fastify/serve')
- opts.external.push('@photonjs/core/h3/apply')
- opts.external.push('@photonjs/core/h3/serve')
- opts.external.push('@photonjs/core/hattip/apply')
- opts.external.push('@photonjs/core/hattip/serve')
- opts.external.push('@photonjs/core/hono/apply')
- opts.external.push('@photonjs/core/hono/serve')
- },
- },
-
- async resolveId(id) {
- if (test(id, re_apply) || test(id, re_index)) {
- return id
- }
- },
-
- loadInclude(id) {
- return Boolean(test(id, re_apply) || test(id, re_index))
- },
-
- load(id) {
- {
- const match = test(id, re_apply)
- if (match) {
- const compiled = compileApply(id)
- const fileName = Object.entries(entries).find(([, v]) => v === id)?.[0]
- assert(fileName)
-
- this.emitFile({
- type: 'asset',
- fileName: `${fileName}.d.ts`,
- // biome-ignore lint/style/noNonNullAssertion:
- source: compiled.declaration!,
- })
-
- return {
- code: compiled.code,
- // biome-ignore lint/style/noNonNullAssertion:
- map: compiled.map!,
- }
- }
- }
- {
- const match = test(id, re_index)
- if (match) {
- const compiled = compileIndex(id)
- const fileName = Object.entries(entries).find(([, v]) => v === id)?.[0]
- assert(fileName)
-
- this.emitFile({
- type: 'asset',
- fileName: `${fileName}.d.ts`,
- // biome-ignore lint/style/noNonNullAssertion:
- source: compiled.declaration!,
- })
-
- return {
- code: compiled.code,
- // biome-ignore lint/style/noNonNullAssertion:
- map: compiled.map!,
- }
- }
- }
- },
- }
-}
diff --git a/packages/photonjs/src/index.ts b/packages/photonjs/src/index.ts
index 93489c9..eebe39f 100644
--- a/packages/photonjs/src/index.ts
+++ b/packages/photonjs/src/index.ts
@@ -1 +1,12 @@
+import './vite-types.js'
+
export * as api from './api.js'
+export {
+ PhotonError,
+ PhotonBugError,
+ PhotonUsageError,
+ PhotonConfigError,
+ PhotonRuntimeError,
+ PhotonDependencyError,
+} from './utils/assert.js'
+export type { Photon } from './types.js'
diff --git a/packages/photonjs/src/plugin/index.ts b/packages/photonjs/src/plugin/index.ts
index aefd926..545285d 100644
--- a/packages/photonjs/src/plugin/index.ts
+++ b/packages/photonjs/src/plugin/index.ts
@@ -8,9 +8,11 @@ import { mirrorMeta } from './plugins/mirrorMeta.js'
import { photonEntry } from './plugins/photonEntry.js'
import { resolvePhotonConfigPlugin } from './plugins/resolvePhotonConfigPlugin.js'
import { supportedTargetServers } from './plugins/supportedServers.js'
-import '../types.js'
+import { targetLoader } from './plugins/targetLoader.js'
+import '../vite-types.js'
+import type { Photon } from '../types.js'
-export { photon, installPhoton, supportedTargetServers, type InstallPhotonOptions, photon as default }
+export { photon, installPhoton, supportedTargetServers, targetLoader, type InstallPhotonOptions, photon as default }
function photon(config?: Photon.Config): Plugin[] {
return [
@@ -40,13 +42,3 @@ function installPhoton(
return plugins
}
-
-declare module 'vite' {
- interface UserConfig {
- photon?: Photon.Config
- }
-
- interface ResolvedConfig {
- photon: Photon.ConfigResolved
- }
-}
diff --git a/packages/photonjs/src/plugin/plugins/commonConfig.ts b/packages/photonjs/src/plugin/plugins/commonConfig.ts
index 7460120..d2208b1 100644
--- a/packages/photonjs/src/plugin/plugins/commonConfig.ts
+++ b/packages/photonjs/src/plugin/plugins/commonConfig.ts
@@ -1,4 +1,5 @@
-import type { Plugin } from 'vite'
+import { defaultServerConditions, type Plugin } from 'vite'
+import { singleton } from '../utils/dedupe.js'
import { isBun } from '../utils/isBun.js'
import { isDeno } from '../utils/isDeno.js'
@@ -6,26 +7,58 @@ export { commonConfig }
function commonConfig(): Plugin[] {
return [
- {
- name: 'photon:commonConfig',
+ singleton({
+ name: 'photon:common-config',
configEnvironment(name, config) {
if (!config.consumer) {
config.consumer = name === 'client' ? 'client' : 'server'
}
+
+ let additionalResolveConfig: { externalConditions?: string[]; conditions?: string[]; noExternal?: string } = {}
+
+ if (isBun) {
+ additionalResolveConfig = {
+ conditions: ['bun', ...defaultServerConditions],
+ externalConditions: ['bun', ...defaultServerConditions],
+ }
+ }
+
+ if (isDeno) {
+ additionalResolveConfig = {
+ conditions: ['deno', ...defaultServerConditions],
+ externalConditions: ['deno', ...defaultServerConditions],
+ }
+ }
+
+ // do not override `noExternal: true`
+ if (config.resolve?.noExternal !== true) {
+ additionalResolveConfig.noExternal = '@photonjs/core'
+ }
+
return {
resolve: {
- noExternal: '@photonjs/core',
- externalConditions:
- config.consumer === 'server'
- ? [...(isBun ? ['bun'] : isDeno ? ['deno'] : []), 'node', 'development|production']
- : [],
+ ...additionalResolveConfig,
},
build: {
target: 'es2022',
},
}
},
- },
+ }),
+ singleton({
+ name: 'photon:set-after-build-start',
+ enforce: 'post',
+ buildStart: {
+ order: 'post',
+ handler() {
+ Object.defineProperty(this.environment.config, 'afterBuildStart', {
+ get() {
+ return true
+ },
+ })
+ },
+ },
+ }),
]
}
diff --git a/packages/photonjs/src/plugin/plugins/devServer.ts b/packages/photonjs/src/plugin/plugins/devServer.ts
index d058f2b..84e663f 100644
--- a/packages/photonjs/src/plugin/plugins/devServer.ts
+++ b/packages/photonjs/src/plugin/plugins/devServer.ts
@@ -10,8 +10,23 @@ import type {
import { fork } from 'node:child_process'
import pc from '@brillout/picocolors'
+import {
+ enhance,
+ getUniversalProp,
+ type HttpMethod,
+ methodSymbol,
+ nameSymbol,
+ orderSymbol,
+ pathSymbol,
+ type UniversalHandler,
+ type UniversalMiddleware,
+} from '@universal-middleware/core'
import { globalStore } from '../../runtime/globalStore.js'
+import type { Photon } from '../../types.js'
import { assert, assertUsage } from '../../utils/assert.js'
+import { resolvePhotonConfig } from '../../validators/coerce.js'
+import type { PhotonEntryUniversalHandler, SupportedServers } from '../../validators/types.js'
+import { singleton } from '../utils/dedupe.js'
import { isPhotonMetaConfig } from '../utils/entry.js'
import { isBun } from '../utils/isBun.js'
import { logViteInfo } from '../utils/logVite.js'
@@ -27,6 +42,61 @@ export function isRunnableDevEnvironment(environment: Environment): environment
return 'runner' in environment
}
+// TODO cleanup or reuse?
+async function importMiddleware(vite: ViteDevServer, middleware: string) {
+ const envName = vite.config.photon.devServer ? vite.config.photon.devServer.env : 'ssr'
+ const env = vite.environments[envName]
+ assertUsage(env, `Environment ${envName} not found`)
+ assertUsage(isRunnableDevEnvironment(env), `Environment ${envName} is not runnable`)
+
+ return envImportAndCheckDefaultExport(env, middleware, false)
+}
+
+async function importHandler(vite: ViteDevServer, handler: PhotonEntryUniversalHandler) {
+ const envName = handler.env ?? 'ssr'
+ const env = vite.environments[envName]
+ assertUsage(env, `Environment ${envName} not found`)
+ assertUsage(isRunnableDevEnvironment(env), `Environment ${envName} is not runnable`)
+
+ const handlerResolved = await env.pluginContainer.resolveId(handler.id, undefined, {
+ isEntry: true,
+ })
+ assertUsage(
+ handlerResolved?.id,
+ `Cannot find handler ${pc.cyan(handler.id)}. Make sure its path is relative to the root of your project.`,
+ )
+
+ return envImportAndCheckDefaultExport(env, handlerResolved.id, false).then((defaultExport) => {
+ const name = getUniversalProp(defaultExport, nameSymbol)
+ const path = getUniversalProp(defaultExport, pathSymbol)
+ const order = getUniversalProp(defaultExport, orderSymbol)
+ const method = getUniversalProp(defaultExport, methodSymbol)
+ const toEnhance: { path?: string; method?: HttpMethod[] | HttpMethod; name?: string; order?: number } = {}
+ if (handler.route) {
+ toEnhance.path = handler.route
+ toEnhance.method = ['GET', 'POST']
+ } else if (path) {
+ toEnhance.path = path
+ }
+ if (!name) {
+ toEnhance.name = handlerResolved.id
+ } else {
+ toEnhance.name = name
+ }
+ if (order) {
+ toEnhance.order = order
+ }
+ if (method) {
+ toEnhance.method = method
+ }
+ return enhance((request, context, runtime) => {
+ context.photon ??= {}
+ context.photon.handler = handler
+ return defaultExport(request, context, runtime)
+ }, toEnhance)
+ })
+}
+
export function devServer(config?: Photon.Config): Plugin {
let resolvedEntryId: string
let HMRServer: ReturnType | undefined
@@ -42,16 +112,17 @@ export function devServer(config?: Photon.Config): Plugin {
}
}
- return {
+ return singleton({
name: 'photon:devserver',
apply(_config, { command, mode }) {
return command === 'serve' && mode !== 'test'
},
- enforce: 'pre',
+ enforce: 'post',
config: {
order: 'post',
handler(userConfig) {
- if (userConfig.photon?.devServer === false) return
+ const resolvedPhotonConfig = resolvePhotonConfig(userConfig.photon)
+ if (resolvedPhotonConfig.devServer === false) return
// FIXME
if (isBun) {
return {
@@ -113,14 +184,19 @@ export function devServer(config?: Photon.Config): Plugin {
}
if (vite.config.photon.hmr === true) {
+ const envName = vite.config.photon.devServer.env
+ const env = vite.environments[envName]
+ assertUsage(env, `Environment ${envName} does not exists`)
+
// Once existing server is closed and invalidated, reimport its updated entry file
- vite.environments.ssr.hot.on('photon:server-closed', () => {
+ env.hot.on('photon:server-closed', () => {
setupHMRProxyDone = false
- assertUsage(isRunnableDevEnvironment(vite.environments.ssr), 'SSR environment is not runnable')
- ssrImportAndCheckDefaultExport(vite.environments.ssr, resolvedEntryId)
+ assertUsage(isRunnableDevEnvironment(env), `${envName} environment is not runnable`)
+ envImportAndCheckDefaultExport(env, resolvedEntryId)
})
- vite.environments.ssr.hot.on('photon:reloaded', () => {
+ env.hot.on('photon:reloaded', () => {
+ // TODO do not full reload the client?
vite.environments.client.hot.send({ type: 'full-reload' })
})
}
@@ -135,14 +211,11 @@ export function devServer(config?: Photon.Config): Plugin {
setupErrorHandlers()
}
patchViteServer(vite)
- if (
- config?.devServer === undefined ||
- (typeof config?.devServer === 'object' && config?.devServer?.autoServe !== false)
- ) {
+ if (vite.config.photon.devServer.autoServe) {
initializeServerEntry(vite)
}
},
- }
+ })
// Bypass "vite dev" CLI checks on usage
function patchViteServer(vite: ViteDevServer) {
@@ -209,8 +282,13 @@ export function devServer(config?: Photon.Config): Plugin {
}
async function initializeServerEntry(vite: ViteDevServer) {
+ assert(vite.config.photon.devServer)
+ const envName = vite.config.photon.devServer.env
+ const env = vite.environments[envName]
+ assertUsage(env, `Environment ${envName} does not exists`)
+
const index = vite.config.photon.server
- const indexResolved = await vite.environments.ssr.pluginContainer.resolveId(index.id, undefined, {
+ const indexResolved = await env.pluginContainer.resolveId(index.id, undefined, {
isEntry: true,
})
assertUsage(
@@ -218,14 +296,20 @@ export function devServer(config?: Photon.Config): Plugin {
`Cannot find server entry ${pc.cyan(index.id)}. Make sure its path is relative to the root of your project.`,
)
resolvedEntryId = indexResolved.id
- const ssr = vite.environments.ssr
- assertUsage(isRunnableDevEnvironment(ssr), 'SSR environment is not runnable')
- ssrImportAndCheckDefaultExport(ssr, resolvedEntryId)
+ assertUsage(isRunnableDevEnvironment(env), `${envName} environment is not runnable`)
+ return envImportAndCheckDefaultExport(env, resolvedEntryId)
}
}
-function ssrImportAndCheckDefaultExport(ssr: RunnableDevEnvironment, resolvedId: string) {
- ssr.runner
+const photonServerSymbol = Symbol.for('photon:server')
+
+function envImportAndCheckDefaultExport(
+ env: RunnableDevEnvironment,
+ resolvedId: string,
+): Promise<{ [photonServerSymbol]: SupportedServers }>
+function envImportAndCheckDefaultExport(env: RunnableDevEnvironment, resolvedId: string, isServer: false): Promise
+function envImportAndCheckDefaultExport(env: RunnableDevEnvironment, resolvedId: string, isServer = true) {
+ return env.runner
.import(resolvedId)
.then((mod) => {
assertUsage(mod && 'default' in mod, `Missing export default in ${JSON.stringify(resolvedId)}`)
@@ -233,10 +317,13 @@ function ssrImportAndCheckDefaultExport(ssr: RunnableDevEnvironment, resolvedId:
!(mod.default instanceof Promise),
`Replace \`export default\` by \`export default await\` in ${JSON.stringify(resolvedId)}`,
)
- assertUsage(
- Symbol.for('photon:server') in mod.default,
- `{ apply } function needs to be called before export in ${JSON.stringify(resolvedId)}`,
- )
+ if (isServer) {
+ assertUsage(
+ photonServerSymbol in mod.default,
+ `{ apply } function needs to be called before export in ${JSON.stringify(resolvedId)}`,
+ )
+ }
+ return mod.default
})
.catch(logRestartMessage)
}
diff --git a/packages/photonjs/src/plugin/plugins/fallback.ts b/packages/photonjs/src/plugin/plugins/fallback.ts
index f8ec269..79623ad 100644
--- a/packages/photonjs/src/plugin/plugins/fallback.ts
+++ b/packages/photonjs/src/plugin/plugins/fallback.ts
@@ -1,15 +1,26 @@
import type { Plugin } from 'vite'
+import { singleton } from '../utils/dedupe.js'
import { ifPhotonModule } from '../utils/virtual.js'
export { fallback }
function fallback(): Plugin {
- return {
+ return singleton({
name: 'photon:fallback',
resolveId(id) {
return ifPhotonModule('fallback-entry', id, () => {
- return id
+ return {
+ id,
+ meta: {
+ photon: {
+ id,
+ resolvedId: id,
+ type: 'server',
+ server: 'hono',
+ },
+ },
+ }
})
},
@@ -17,18 +28,14 @@ function fallback(): Plugin {
return ifPhotonModule('fallback-entry', id, () => {
//language=ts
return {
- code: `import { apply, serve } from '@photonjs/core/hono'
-import { Hono } from 'hono'
+ code: `
+import { apply, serve } from 'photon:resolve-from-photon:@photonjs/core/hono'
+import { Hono } from 'photon:resolve-from-photon:hono'
function startServer() {
const app = new Hono()
apply(app)
-
- const port = process.env.PORT || 3000
-
- return serve(app, {
- port: +port
- })
+ return serve(app)
}
export default startServer()
@@ -37,5 +44,5 @@ export default startServer()
}
})
},
- }
+ })
}
diff --git a/packages/photonjs/src/plugin/plugins/getMiddlewaresPlugin.ts b/packages/photonjs/src/plugin/plugins/getMiddlewaresPlugin.ts
index bd70415..c0d6d6f 100644
--- a/packages/photonjs/src/plugin/plugins/getMiddlewaresPlugin.ts
+++ b/packages/photonjs/src/plugin/plugins/getMiddlewaresPlugin.ts
@@ -1,30 +1,56 @@
-import type { PluginContext } from 'rollup'
import type { Plugin } from 'vite'
+import { getPhotonMeta } from '../../utils/meta.js'
+import { singleton } from '../utils/dedupe.js'
+import type { PluginContext } from '../utils/rollupTypes.js'
import { ifPhotonModule } from '../utils/virtual.js'
-function getAllPhotonMiddlewares(pluginContext: PluginContext, condition: 'dev' | 'edge' | 'node', server: string) {
- const handlers = pluginContext.environment.config.photon.handlers
- // non-index entries are always considered Universal Handlers
- const universalEntries = Object.values(handlers).map((e) => e.id)
+async function getAllPhotonMiddlewares(
+ pluginContext: PluginContext,
+ condition: 'dev' | 'edge' | 'node',
+ server: string,
+ handlerId?: string,
+) {
+ const isDev = condition === 'dev'
+ const defaultBuildEnv = pluginContext.environment.config.photon.defaultBuildEnv
+ const currentEnv = pluginContext.environment.name
+ const metaHandler = handlerId ? await getPhotonMeta(pluginContext, handlerId, 'handler-entry') : null
+
+ // middlewares
const getMiddlewares = pluginContext.environment.config.photon.middlewares ?? []
- const middlewares = getMiddlewares
- .map((m) => m.call(pluginContext, condition, server))
- .filter((x) => typeof x === 'string' || Array.isArray(x))
- .flat(1)
+ const middlewares =
+ metaHandler?.compositionMode === 'isolated'
+ ? []
+ : getMiddlewares
+ .map((m) => m.call(pluginContext, condition as 'dev' | 'node' | 'edge', server))
+ .filter((x) => typeof x === 'string' || Array.isArray(x))
+ .flat(1)
+
+ // handlers
+ let universalEntries = pluginContext.environment.config.photon.entries.filter((e) => e.type === 'universal-handler')
+ if (!isDev) {
+ // Only inject entries for the current environment
+ universalEntries = universalEntries.filter((h) => (h.env || defaultBuildEnv) === currentEnv)
+ if (pluginContext.environment.config.photon.codeSplitting.target) {
+ // Do not inject isolated entries when target supports code splitting
+ universalEntries = universalEntries.filter((h) => h.compositionMode !== 'isolated')
+ }
+ }
+ const universalEntriesIds = metaHandler ? [metaHandler.id] : universalEntries.map((e) => e.id)
//language=javascript
return `
import { getUniversal, nameSymbol } from 'photon:resolve-from-photon:@universal-middleware/core';
+import { PhotonConfigError } from 'photon:resolve-from-photon:@photonjs/core/errors';
${middlewares.map((m, i) => `import m${i} from ${JSON.stringify(m)};`).join('\n')}
-${universalEntries.map((m, i) => `import u${i} from ${JSON.stringify(m)};`).join('\n')}
+${universalEntriesIds.map((m, i) => `import u${i} from ${JSON.stringify(m)};`).join('\n')}
function errorMessageMiddleware(id) {
- return \`PhotonError: "\${id}" default export must respect the following type: UniversalMiddleware | UniversalMiddleware[]. Each individual middleware must be wrapped with enhance helper. See https://universal-middleware.dev/helpers/enhance\`
+ return \`"\${id}" default export must respect the following type: UniversalMiddleware | UniversalMiddleware[]. Each individual middleware must be wrapped with enhance helper. See https://universal-middleware.dev/helpers/enhance\`
}
function errorMessageEntry(id) {
- return \`PhotonError: "\${id}" default export must respect the following type: UniversalHandler. Make sure this entry have a route defined through Photon config or through enhance helper (https://universal-middleware.dev/helpers/enhance)\`
+ return \`"\${id}" default export must respect the following type: UniversalHandler. Make sure this entry have a route defined through Photon config or through enhance helper (https://universal-middleware.dev/helpers/enhance)\`
}
export function extractUniversal(mi, id, errorMessage) {
@@ -35,7 +61,7 @@ export function extractUniversal(mi, id, errorMessage) {
if (typeof m === 'function' && nameSymbol in m) {
return m;
}
- throw new Error(errorMessage(id, i));
+ throw new PhotonConfigError(errorMessage(id, i));
}
);
}
@@ -45,28 +71,34 @@ export function getUniversalMiddlewares() {
}
export function getUniversalEntries() {
- return [${universalEntries.map((m, i) => `extractUniversal(u${i}, ${JSON.stringify(m)}, errorMessageEntry)`).join(', ')}].flat(1);
+ return [${universalEntriesIds.map((m, i) => `extractUniversal(u${i}, ${JSON.stringify(m)}, errorMessageEntry)`).join(', ')}].flat(1);
}
`
}
export function getMiddlewaresPlugin(): Plugin[] {
return [
- {
+ singleton({
name: 'photon:get-middlewares',
- async resolveId(id) {
- return ifPhotonModule('get-middlewares', id, () => id)
+ async resolveId(id, _importer, opts) {
+ return ifPhotonModule('get-middlewares', id, () => ({
+ id,
+ moduleSideEffects: false,
+ meta: {
+ photonHandler: opts.attributes.photonHandler,
+ },
+ }))
},
load(id) {
- return ifPhotonModule('get-middlewares', id, ({ condition, server }) => {
+ return ifPhotonModule('get-middlewares', id, async ({ condition, server, handler }) => {
return {
- code: getAllPhotonMiddlewares(this, condition as 'dev' | 'edge' | 'node', server),
+ code: await getAllPhotonMiddlewares(this, condition as 'dev' | 'edge' | 'node', server, handler),
map: { mappings: '' } as const,
}
})
},
- },
+ }),
]
}
diff --git a/packages/photonjs/src/plugin/plugins/installPhoton.ts b/packages/photonjs/src/plugin/plugins/installPhoton.ts
index 75837f8..139e6c0 100644
--- a/packages/photonjs/src/plugin/plugins/installPhoton.ts
+++ b/packages/photonjs/src/plugin/plugins/installPhoton.ts
@@ -1,7 +1,7 @@
-import type { CustomPluginOptions, PluginContext, ResolvedId } from 'rollup'
import type { Plugin } from 'vite'
import type { GetPhotonCondition } from '../../validators/types.js'
import { resolveFirst } from '../utils/resolve.js'
+import type { PluginContext } from '../utils/rollupTypes.js'
import { ifPhotonModule } from '../utils/virtual.js'
export interface InstallPhotonBaseOptions {
@@ -9,19 +9,19 @@ export interface InstallPhotonBaseOptions {
}
export function installPhotonBase(name: string, options?: InstallPhotonBaseOptions): Plugin[] {
- let resolvedName: ResolvedId | null | undefined = undefined
+ let resolvedName: Awaited> = undefined
function photonVirtualModuleResolver(
id: string,
importer?: string,
opts?: {
attributes?: Record
- custom?: CustomPluginOptions
+ custom?: Record
isEntry?: boolean
skipSelf?: boolean
},
) {
- return async function resolvePhotonVirtualModule(this: PluginContext) {
+ return async function resolvePhotonVirtualModule(this: Pick) {
// first, try basic resolve
let resolved = await this.resolve(id, importer, opts)
diff --git a/packages/photonjs/src/plugin/plugins/mirrorMeta.ts b/packages/photonjs/src/plugin/plugins/mirrorMeta.ts
index a5686f0..c65cbae 100644
--- a/packages/photonjs/src/plugin/plugins/mirrorMeta.ts
+++ b/packages/photonjs/src/plugin/plugins/mirrorMeta.ts
@@ -1,15 +1,17 @@
import { getUniversalProp, pathSymbol } from '@universal-middleware/core'
import { walk } from 'estree-walker'
import MagicString from 'magic-string'
-import { createRunnableDevEnvironment, type Plugin } from 'vite'
+import { createRunnableDevEnvironment, type Plugin, type RunnableDevEnvironment } from 'vite'
import { assert, assertUsage } from '../../utils/assert.js'
-import type { PhotonEntryServer } from '../../validators/types.js'
-import { isPhotonMeta } from '../utils/entry.js'
+import { createDeferred } from '../../utils/deferred.js'
+import { singleton } from '../utils/dedupe.js'
+import { isPhotonMeta, type PhotonMeta } from '../utils/entry.js'
export function mirrorMeta(): Plugin[] {
+ let lastSsr: Promise | undefined
return [
// Extract Universal Middleware metadata and add them to Photon meta
- {
+ singleton({
name: 'photon:runtime-meta-to-photon',
enforce: 'pre',
apply: 'build',
@@ -17,15 +19,22 @@ export function mirrorMeta(): Plugin[] {
async moduleParsed(info) {
// Import the module in RunnableDevEnvironment during build to extract exports
if (isPhotonMeta(info.meta) && info.meta.photon.type === 'universal-handler' && !info.meta.photon.route) {
- const ssr = createRunnableDevEnvironment('inline_ssr', this.environment.config, {
- runnerOptions: {
- hmr: {
- logger: false,
- },
- },
- hot: false,
- })
- await ssr.init()
+ const ssr = lastSsr
+ ? await lastSsr
+ : createRunnableDevEnvironment('inline_ssr', this.environment.config, {
+ runnerOptions: {
+ hmr: {
+ logger: false,
+ },
+ },
+ hot: false,
+ })
+ if (!lastSsr) {
+ const deferred = createDeferred()
+ lastSsr = deferred.promise
+ await ssr.init()
+ deferred.resolve(ssr)
+ }
try {
const mod = await ssr.runner.import(info.id)
@@ -39,26 +48,32 @@ export function mirrorMeta(): Plugin[] {
}
}
} finally {
- await ssr.runner.close()
+ // await ssr.runner.close()
}
}
},
+ async buildEnd() {
+ if (lastSsr && !(await lastSsr).runner.isClosed()) {
+ return (await lastSsr).runner.close()
+ }
+ },
+
sharedDuringBuild: true,
- },
+ }),
// Extract Photon meta of an entry, and apply them to runtime through enhance
- {
+ singleton({
name: 'photon:photon-meta-to-runtime',
applyToEnvironment(env) {
- return env.name !== 'inline_ssr'
+ return !env.name.includes('inline_ssr')
},
transform(code, id) {
const info = this.getModuleInfo(id)
if (!info) return
- if (isPhotonMeta(info.meta) && (info.meta.photon as PhotonEntryServer).route) {
+ if (isPhotonMeta(info.meta) && info.meta.photon.route && info.meta.photon.type === 'universal-handler') {
const ast = this.parse(code)
const magicString = new MagicString(code)
@@ -70,7 +85,8 @@ export function mirrorMeta(): Plugin[] {
if (
!hasEnhanceImport &&
node.type === 'ImportDeclaration' &&
- node.source.value === '@universal-middleware/core'
+ typeof node.source.value === 'string' &&
+ node.source.value.includes('@universal-middleware/core')
) {
// Check if enhance is among the imported specifiers
for (const specifier of node.specifiers) {
@@ -112,6 +128,7 @@ export function mirrorMeta(): Plugin[] {
name: ${JSON.stringify(id)},
method: ['GET', 'POST'],
path: ${JSON.stringify(info.meta.photon.route)},
+ context: ${JSON.stringify({ photon: photonMetaAsContext(info.meta.photon) })},
immutable: false
})`,
)
@@ -122,9 +139,11 @@ export function mirrorMeta(): Plugin[] {
assertUsage(hasExportDefault, `Entry ${id} must have a default export`)
if (!hasEnhanceImport) {
- magicString.prepend(`import { enhance } from '@universal-middleware/core';\n`)
+ magicString.prepend(`import { enhance } from 'photon:resolve-from-photon:@universal-middleware/core';\n`)
}
+ if (!magicString.hasChanged()) return
+
return {
code: magicString.toString(),
map: magicString.generateMap(),
@@ -133,6 +152,11 @@ export function mirrorMeta(): Plugin[] {
},
sharedDuringBuild: true,
- },
+ }),
]
}
+
+function photonMetaAsContext(photonMeta: PhotonMeta) {
+ const { id, resolvedId, ...photonMetaClean } = photonMeta
+ return photonMetaClean
+}
diff --git a/packages/photonjs/src/plugin/plugins/photonEntry.ts b/packages/photonjs/src/plugin/plugins/photonEntry.ts
index 9cf0c08..3efaad3 100644
--- a/packages/photonjs/src/plugin/plugins/photonEntry.ts
+++ b/packages/photonjs/src/plugin/plugins/photonEntry.ts
@@ -1,27 +1,19 @@
-import type { ModuleInfo, PluginContext } from 'rollup'
+import { walk } from 'estree-walker'
+import MagicString from 'magic-string'
import type { Plugin } from 'vite'
import { assert, assertUsage } from '../../utils/assert.js'
import { resolvePhotonConfig } from '../../validators/coerce.js'
import type { SupportedServers } from '../../validators/types.js'
+import { singleton } from '../utils/dedupe.js'
import { isPhotonMeta } from '../utils/entry.js'
-import { ifPhotonModule } from '../utils/virtual.js'
-
-const idsToServers: Record = {
- '@photonjs/hono': 'hono',
- '@photonjs/hattip': 'hattip',
- '@photonjs/express': 'express',
- '@photonjs/fastify': 'fastify',
- '@photonjs/h3': 'h3',
- '@photonjs/elysia': 'elysia',
- '@photonjs/core/hono': 'hono',
- '@photonjs/core/hattip': 'hattip',
- '@photonjs/core/express': 'express',
- '@photonjs/core/fastify': 'fastify',
- '@photonjs/core/h3': 'h3',
- '@photonjs/core/elysia': 'elysia',
-}
+import type { ModuleInfo, PluginContext } from '../utils/rollupTypes.js'
+import { importsToServer } from '../utils/servers.js'
+import { asPhotonEntryId, ifPhotonModule, virtualModulesRegex } from '../utils/virtual.js'
+
+const serverImports = new Set(Object.keys(importsToServer))
+const re_photonHandler = /[?&]photonHandler=/
-function computePhotonMeta(
+function computePhotonMetaServer(
pluginContext: PluginContext,
resolvedIdsToServers: Record,
info: ModuleInfo,
@@ -68,10 +60,15 @@ function computePhotonMeta(
}
}
+function cleanImport(imp: string) {
+ const s = 'photon:resolve-from-photon:'
+ return imp.startsWith(s) ? imp.slice(s.length) : imp
+}
+
const resolvedIdsToServers: Record = {}
export function photonEntry(): Plugin[] {
return [
- {
+ singleton({
name: 'photon:set-input',
apply: 'build',
enforce: 'post',
@@ -83,18 +80,14 @@ export function photonEntry(): Plugin[] {
config: {
order: 'post',
handler(config) {
- const { handlers, server } = resolvePhotonConfig(config.photon)
+ const { server } = resolvePhotonConfig(config.photon)
return {
environments: {
ssr: {
build: {
rollupOptions: {
- input: Object.assign(
- // TODO make sure that handlers do not overwrite server entry name
- { index: server.id },
- Object.fromEntries(Object.entries(handlers).map(([key, value]) => [key, value.id])),
- ),
+ input: { index: server.id },
},
},
},
@@ -104,8 +97,8 @@ export function photonEntry(): Plugin[] {
},
sharedDuringBuild: true,
- },
- {
+ }),
+ singleton({
name: 'photon:compute-meta',
apply: 'build',
enforce: 'pre',
@@ -115,11 +108,11 @@ export function photonEntry(): Plugin[] {
},
async resolveId(id, importer, opts) {
- if (id in idsToServers) {
+ if (id in importsToServer) {
const resolved = await this.resolve(id, importer, opts)
if (resolved) {
// biome-ignore lint/style/noNonNullAssertion:
- resolvedIdsToServers[resolved.id] = idsToServers[id]!
+ resolvedIdsToServers[resolved.id] = importsToServer[id]!
}
}
},
@@ -129,14 +122,14 @@ export function photonEntry(): Plugin[] {
handler(info) {
if (isPhotonMeta(info.meta) && info.meta.photon.type === 'server') {
// Must be kept synchronous
- computePhotonMeta(this, resolvedIdsToServers, info)
+ computePhotonMetaServer(this, resolvedIdsToServers, info)
}
},
},
sharedDuringBuild: true,
- },
- {
+ }),
+ singleton({
name: 'photon:resolve-importer',
enforce: 'pre',
@@ -154,30 +147,195 @@ export function photonEntry(): Plugin[] {
},
},
sharedDuringBuild: true,
- },
- {
+ }),
+ singleton({
+ name: 'photon:resolve-server-with-entry',
+ enforce: 'pre',
+
+ resolveId: {
+ filter: {
+ id: virtualModulesRegex['server-entry-with-entry'],
+ },
+ order: 'post',
+ handler(id) {
+ return ifPhotonModule('server-entry-with-entry', id, async ({ entry }) => {
+ const handlerOrConfig = this.environment.config.photon.entries.find((e) => e.name === entry)
+ assertUsage(handlerOrConfig, `Unable to find entry "${entry}"`)
+
+ return {
+ id,
+ meta: {
+ photon: {
+ ...this.environment.config.photon.server,
+ // Additional handler meta take precedence
+ ...handlerOrConfig,
+ type: 'server',
+ id,
+ resolvedId: id,
+ },
+ },
+ resolvedBy: 'photon',
+ }
+ })
+ },
+ },
+
+ load: {
+ filter: {
+ id: virtualModulesRegex['server-entry-with-entry'],
+ },
+ handler(id) {
+ return ifPhotonModule('server-entry-with-entry', id, async ({ entry }) => {
+ const resolved = await this.resolve(this.environment.config.photon.server.id, undefined, {
+ isEntry: true,
+ })
+ assert(resolved)
+
+ const loaded = await this.load({ id: resolved.id })
+ assert(loaded.code)
+
+ const handlerOrConfig = this.environment.config.photon.entries.find((e) => e.name === entry)
+ assert(handlerOrConfig)
+
+ const code = loaded.code
+
+ // All entries are bundled in server-config entries
+ if (handlerOrConfig.type === 'server-config') {
+ return { code }
+ }
+
+ const ast = this.parse(code)
+ const magicString = new MagicString(code)
+
+ walk(ast, {
+ enter(node) {
+ if (
+ node.type === 'ImportDeclaration' &&
+ typeof node.source.value === 'string' &&
+ serverImports.has(cleanImport(node.source.value))
+ ) {
+ let foundApply = false
+ // Check if { apply } is among the imported specifiers
+ for (const specifier of node.specifiers) {
+ if (
+ specifier.type === 'ImportSpecifier' &&
+ specifier.imported &&
+ 'name' in specifier.imported &&
+ specifier.imported.name === 'apply'
+ ) {
+ foundApply = true
+ break
+ }
+ }
+ if (foundApply) {
+ const { end } = node.source as unknown as { start: number; end: number }
+
+ // Adding a query parameter that will be used to rewrite `photon:get-middlewares` imports
+ magicString.appendRight(end - 1, `?${new URLSearchParams({ photonHandler: entry }).toString()}`)
+ }
+ }
+ },
+ })
+
+ if (!magicString.hasChanged()) return
+
+ return {
+ code: magicString.toString(),
+ map: magicString.generateMap(),
+ }
+ })
+ },
+ },
+
+ sharedDuringBuild: true,
+ }),
+ singleton({
+ name: 'photon:transform-get-middlewares-import',
+ enforce: 'pre',
+
+ resolveId: {
+ filter: {
+ id: re_photonHandler,
+ },
+ async handler(id, importer, opts) {
+ const [actualId, query] = id.split('?')
+ // biome-ignore lint/style/noNonNullAssertion:
+ const resolved = await this.resolve(actualId!, importer, opts)
+ assert(resolved)
+
+ return {
+ id: `${resolved.id}?${query}`,
+ resolvedBy: 'photon',
+ }
+ },
+ },
+
+ load: {
+ filter: {
+ id: re_photonHandler,
+ },
+ async handler(id) {
+ const [actualId, query] = id.split('?')
+ // biome-ignore lint/style/noNonNullAssertion:
+ const loaded = await this.load({ id: actualId! })
+ assert(loaded.code)
+
+ const handlerId = new URLSearchParams(query).get('photonHandler')
+ assert(handlerId)
+
+ const newCode = loaded.code
+ // Forward query parameters to apply imports
+ .replace(/@photonjs\/core\/([^/]+)\/apply/, `@photonjs/core/$1/apply?${query}`)
+ // Transform get-middleware import
+ .replace(/photon:get-middlewares:(.+?):(\w+)/, `photon:get-middlewares:$1:$2:${handlerId}`)
+
+ return {
+ code: newCode,
+ map: { mappings: '' },
+ }
+ },
+ },
+ }),
+ singleton({
name: 'photon:resolve-server',
enforce: 'pre',
resolveId: {
+ filter: {
+ id: virtualModulesRegex['server-entry'],
+ },
order: 'post',
handler(id, _importer, opts) {
return ifPhotonModule('server-entry', id, async ({ entry: actualId }) => {
+ const entry = this.environment.config.photon.server
+
if (!actualId) {
- return this.resolve(this.environment.config.photon.server.id, undefined, { isEntry: true })
+ return this.resolve(this.environment.config.photon.server.id, undefined, {
+ isEntry: true,
+ custom: {
+ setPhotonMeta: entry,
+ },
+ })
}
const resolved = await this.resolve(actualId, undefined, {
...opts,
isEntry: true,
skipSelf: false,
+ custom: {
+ setPhotonMeta: entry,
+ },
})
assertUsage(resolved, `Cannot resolve ${actualId} to a server entry`)
- const entry = this.environment.config.photon.server
entry.resolvedId = resolved.id
+ // Ensure early resolution of photon meta during build
+ if (this.environment.config.command === 'build') {
+ await this.load({ ...resolved, resolveDependencies: true })
+ }
+
return {
...resolved,
meta: {
@@ -189,38 +347,61 @@ export function photonEntry(): Plugin[] {
},
},
sharedDuringBuild: true,
- },
- {
+ }),
+ singleton({
name: 'photon:resolve-handler',
enforce: 'pre',
resolveId: {
+ filter: {
+ id: virtualModulesRegex['handler-entry'],
+ },
order: 'post',
- handler(id, importer, opts) {
+ handler(id, _importer, opts) {
return ifPhotonModule('handler-entry', id, async ({ entry: actualId }) => {
+ const idWithPhotonPrefix = asPhotonEntryId(id, 'handler-entry')
+ const handlers = this.environment.config.photon.entries.filter((e) => e.type === 'universal-handler')
+ let entry = handlers.find((e) => asPhotonEntryId(e.id, 'handler-entry') === idWithPhotonPrefix)
+
let resolved = await this.resolve(actualId, undefined, {
...opts,
isEntry: true,
skipSelf: false,
+ custom: {
+ setPhotonMeta: entry,
+ },
})
- // Try to resolve by handler key
- if (!resolved && actualId in this.environment.config.photon.handlers) {
- // biome-ignore lint/style/noNonNullAssertion:
- resolved = await this.resolve(this.environment.config.photon.handlers[actualId]!.id, undefined, {
- ...opts,
- isEntry: true,
- skipSelf: false,
- })
+ // Try to resolve by handler name
+ if (!resolved) {
+ const handler = handlers.find((e) => e.name === actualId)
+ if (handler) {
+ resolved = await this.resolve(handler.id, undefined, {
+ ...opts,
+ isEntry: true,
+ skipSelf: false,
+ custom: {
+ setPhotonMeta: entry,
+ },
+ })
+ }
}
assertUsage(resolved, `Cannot resolve ${actualId} to a handler entry`)
- const entry = Object.values(this.environment.config.photon.handlers).find((e) => e.id === id)
+ if (!entry) {
+ const resolvedIdWithPhotonPrefix = asPhotonEntryId(resolved.id, 'handler-entry')
+ entry = handlers.find((e) => e.id === resolvedIdWithPhotonPrefix)
+ }
assertUsage(entry, `Cannot find a handler for ${resolved.id}`)
entry.resolvedId = resolved.id
+ // Ensure early resolution of photon meta during build
+ if (this.environment.config.command === 'build') {
+ await this.load({ ...resolved, resolveDependencies: true })
+ }
+
return {
...resolved,
meta: {
@@ -232,6 +413,26 @@ export function photonEntry(): Plugin[] {
},
},
sharedDuringBuild: true,
- },
+ }),
+ singleton({
+ name: 'photon:trickle-meta',
+ enforce: 'pre',
+
+ async resolveId(id, imports, opts) {
+ if (opts.custom?.setPhotonMeta) {
+ const resolved = await this.resolve(id, imports, opts)
+
+ if (!resolved) return
+
+ return {
+ ...resolved,
+ meta: {
+ ...resolved.meta,
+ photon: opts.custom.setPhotonMeta,
+ },
+ }
+ }
+ },
+ }),
]
}
diff --git a/packages/photonjs/src/plugin/plugins/resolvePhotonConfigPlugin.ts b/packages/photonjs/src/plugin/plugins/resolvePhotonConfigPlugin.ts
index 7dba12c..2903535 100644
--- a/packages/photonjs/src/plugin/plugins/resolvePhotonConfigPlugin.ts
+++ b/packages/photonjs/src/plugin/plugins/resolvePhotonConfigPlugin.ts
@@ -1,59 +1,62 @@
import type { Plugin } from 'vite'
+import type { Photon } from '../../types.js'
+import { PhotonConfigError } from '../../utils/assert.js'
import { resolvePhotonConfig } from '../../validators/coerce.js'
+import { singleton } from '../utils/dedupe.js'
+let resolvedPhotonConfig: Photon.ConfigResolved | null = null
export function resolvePhotonConfigPlugin(pluginConfig?: Photon.Config): Plugin[] {
- return [
- {
+ const plugins: Plugin[] = [
+ singleton({
name: 'photon:resolve-config',
enforce: 'pre',
- config(userConfig) {
- // Custom config merging
- // TODO unit tests
- if (pluginConfig || userConfig.photon) {
- userConfig.photon ??= {}
- const resolvedUserConfig = resolvePhotonConfig(userConfig.photon)
- const resolvedPluginConfig = resolvePhotonConfig(pluginConfig)
-
- // server
- userConfig.photon.server = userConfig.photon?.server ? resolvedUserConfig.server : resolvedPluginConfig.server
-
- // handlers
- userConfig.photon.handlers = Object.assign({}, resolvedPluginConfig.handlers, resolvedUserConfig.handlers)
-
- // middlewares
- userConfig.photon.middlewares ??= []
- if (resolvedPluginConfig.middlewares) {
- userConfig.photon.middlewares.push(...resolvedPluginConfig.middlewares)
- }
- if (resolvedUserConfig.middlewares) {
- userConfig.photon.middlewares.push(...resolvedUserConfig.middlewares)
- }
-
- // devServer
- if (pluginConfig?.devServer) {
- userConfig.photon.devServer = resolvedPluginConfig.devServer ?? true
- }
- if (userConfig.photon.devServer === false) {
- userConfig.photon.devServer = false
- } else if (typeof resolvedUserConfig.devServer === 'object') {
- userConfig.photon.devServer =
- typeof userConfig.photon.devServer === 'boolean'
- ? resolvedUserConfig.devServer
- : { ...userConfig.photon.devServer, ...resolvedUserConfig.devServer }
+ config: {
+ order: 'pre',
+ handler() {
+ return {
+ photon: [],
}
-
- // hmr
- userConfig.photon.hmr = userConfig.photon?.hmr ? resolvedUserConfig.hmr : resolvedPluginConfig.hmr
- }
+ },
},
configResolved: {
order: 'pre',
handler(config) {
- config.photon = resolvePhotonConfig(config.photon)
+ // Ensures that a unique photon config exists across all envs
+ if (resolvedPhotonConfig === null) {
+ // biome-ignore lint/suspicious/noExplicitAny:
+ resolvedPhotonConfig = resolvePhotonConfig(config.photon as any)
+ }
+ if (resolvedPhotonConfig.codeSplitting.framework) {
+ const serverConfigEntries = resolvedPhotonConfig.entries.filter((e) => e.type === 'server-config')
+ if (serverConfigEntries.length > 0) {
+ throw new PhotonConfigError(
+ 'server-config entries are not supported when codeSplitting.framework is true. Please disable code splitting or remove server-config entries.',
+ )
+ }
+ }
+ config.photon = resolvedPhotonConfig
},
},
- },
+ }),
]
+
+ if (pluginConfig) {
+ plugins.push({
+ name: 'photon:manual-config',
+ enforce: 'pre',
+
+ config: {
+ order: 'pre',
+ handler() {
+ return {
+ photon: [pluginConfig],
+ }
+ },
+ },
+ })
+ }
+
+ return plugins
}
diff --git a/packages/photonjs/src/plugin/plugins/supportedServers.ts b/packages/photonjs/src/plugin/plugins/supportedServers.ts
index 03554c0..0414795 100644
--- a/packages/photonjs/src/plugin/plugins/supportedServers.ts
+++ b/packages/photonjs/src/plugin/plugins/supportedServers.ts
@@ -1,26 +1,8 @@
import type { Plugin } from 'vite'
import type { SupportedServers } from '../../validators/types.js'
+import { importsToServer } from '../utils/servers.js'
-export { supportedTargetServers }
-
-function getImports(id: string) {
- return [id, `@photonjs/${id}`, `@photonjs/core/${id}`]
-}
-
-const serversToIds: Record = {
- hono: getImports('hono'),
- hattip: getImports('hattip'),
- elysia: getImports('elysia'),
- h3: getImports('h3'),
- express: getImports('express'),
- fastify: getImports('fastify'),
-}
-
-const idsToServers = Object.fromEntries(
- Object.entries(serversToIds).flatMap(([k, v]) => v.map((x) => [x, k])),
-) as Record
-
-function supportedTargetServers(name: string, servers: SupportedServers[], recommend = 'hono'): Plugin {
+export function supportedTargetServers(name: string, servers: SupportedServers[], recommend = 'hono'): Plugin {
const serversSet = new Set(servers)
return {
@@ -28,9 +10,9 @@ function supportedTargetServers(name: string, servers: SupportedServers[], recom
enforce: 'pre',
resolveId(id) {
- if (idsToServers[id] && !serversSet.has(idsToServers[id])) {
+ if (importsToServer[id] && !serversSet.has(importsToServer[id])) {
this.error(
- `[photon][${name}] \`${idsToServers[id]}\` is not supported while targetting \`${name}\`. We recommend using \`${recommend}\` instead.`,
+ `[photon][${name}] \`${importsToServer[id]}\` is not supported while targetting \`${name}\`. We recommend using \`${recommend}\` instead.`,
)
}
},
diff --git a/packages/photonjs/src/plugin/plugins/targetLoader.ts b/packages/photonjs/src/plugin/plugins/targetLoader.ts
new file mode 100644
index 0000000..3267845
--- /dev/null
+++ b/packages/photonjs/src/plugin/plugins/targetLoader.ts
@@ -0,0 +1,117 @@
+import type { Plugin } from 'vite'
+import { getPhotonServerIdWithEntry } from '../../api/api.js'
+import type { Photon } from '../../types.js'
+import { getPhotonMeta } from '../../utils/meta.js'
+import { escapeStringRegexp } from '../utils/escapeStringRegexp.js'
+import type { LoadResult, PluginContext } from '../utils/rollupTypes.js'
+
+type LoadHook = (
+ this: PluginContext,
+ id: string,
+ options: {
+ meta: Photon.EntryServer
+ ssr?: boolean
+ },
+) => Promise | LoadResult
+
+export function targetLoader(
+ name: string,
+ options: { load: LoadHook } & Omit,
+): Plugin[] {
+ const prefix = `photon:${name}`
+ const re_prefix = new RegExp(`^${escapeStringRegexp(prefix)}:`)
+
+ return [
+ {
+ name: `photon:target-loader:${name}:emit`,
+
+ apply: 'build',
+ enforce: 'post',
+
+ buildStart: {
+ order: 'post',
+ handler() {
+ const envName = this.environment.name
+ const photon = this.environment.config.photon
+ const isEdge = this.environment.config.resolve.conditions.some((x) =>
+ ['edge-light', 'worker', 'workerd', 'edge'].includes(x),
+ )
+
+ if (photon.defaultBuildEnv === envName) {
+ this.emitFile({
+ type: 'chunk',
+ fileName: photon.server.target || photon.server.name,
+ id: `${prefix}:${photon.server.id}`,
+ })
+ }
+
+ // Emit handlers, each wrapped behind the server entry
+ for (const entry of photon.entries) {
+ if (
+ (entry.env || 'ssr') === envName &&
+ // if framework codeSplitting is enabled or if a target has explicitely been set, emit a new entry
+ (photon.codeSplitting.framework || entry.target)
+ ) {
+ this.emitFile({
+ type: 'chunk',
+ fileName: entry.target || entry.name,
+ id: `${prefix}:${getPhotonServerIdWithEntry(isEdge ? 'edge' : 'node', entry.name)}`,
+ })
+ }
+ }
+ },
+ },
+
+ sharedDuringBuild: true,
+ },
+ {
+ ...options,
+ name: `photon:target-loader:${name}:loader`,
+
+ resolveId: {
+ filter: {
+ id: re_prefix,
+ },
+
+ async handler(id, importer, opts) {
+ const resolved = await this.resolve(id.replace(re_prefix, ''), importer, opts)
+
+ if (!resolved) {
+ return this.error(`[photon][${name}] Cannot resolve ${id}`)
+ }
+
+ return {
+ ...resolved,
+ // tag module as target entry for other plugins to use
+ meta: {
+ ...resolved.meta,
+ photonConfig: {
+ ...resolved.meta?.photonConfig,
+ isTargetEntry: true,
+ },
+ },
+ id: `${prefix}:${resolved.id}`,
+ }
+ },
+ },
+
+ load: {
+ filter: {
+ id: re_prefix,
+ },
+
+ async handler(id, opts) {
+ const actualId = id.slice(prefix.length + 1)
+ // At this point, all handlers are wrapped with the server entry, so the entry type is always "server"
+ const meta = (await getPhotonMeta(this, id)) as Photon.EntryServer
+ return options.load.call(this, actualId, {
+ ...opts,
+ meta,
+ })
+ },
+ },
+
+ sharedDuringBuild: true,
+ },
+ ]
+}
diff --git a/packages/photonjs/src/plugin/utils/dedupe.ts b/packages/photonjs/src/plugin/utils/dedupe.ts
new file mode 100644
index 0000000..5aecfd3
--- /dev/null
+++ b/packages/photonjs/src/plugin/utils/dedupe.ts
@@ -0,0 +1,28 @@
+import type { Plugin } from 'vite'
+
+export function singleton(originalPlugin: Plugin): Plugin {
+ const originalConfigResolved = originalPlugin.configResolved
+
+ originalPlugin.configResolved = {
+ order: originalConfigResolved && 'order' in originalConfigResolved ? originalConfigResolved.order : 'pre',
+ handler(c) {
+ const duplicates = c.plugins.filter((p) => p.name === originalPlugin.name).slice(1)
+ for (const p of duplicates) {
+ const keysToDelete = Object.keys(p).filter((k) => k !== 'name')
+ p.name += ':disabled'
+ for (const key of keysToDelete) {
+ // @ts-ignore
+ delete p[key]
+ }
+ }
+ if (originalConfigResolved) {
+ if (typeof originalConfigResolved === 'function') {
+ return originalConfigResolved.call(this, c)
+ }
+ return originalConfigResolved.handler.call(this, c)
+ }
+ },
+ }
+
+ return originalPlugin
+}
diff --git a/packages/photonjs/src/plugin/utils/entry.ts b/packages/photonjs/src/plugin/utils/entry.ts
index 12ba0a6..04c5c98 100644
--- a/packages/photonjs/src/plugin/utils/entry.ts
+++ b/packages/photonjs/src/plugin/utils/entry.ts
@@ -1,25 +1,17 @@
-import type { CustomPluginOptions } from 'rollup'
-import type { SupportedServers } from '../../validators/types.js'
+import type { Photon } from '../../types.js'
-export function isPhotonMeta(meta?: CustomPluginOptions): meta is { photon: PhotonMeta } {
+// biome-ignore lint/suspicious/noExplicitAny:
+type AnyRecord = Record
+
+export function isPhotonMeta(meta?: T): meta is T & { photon: PhotonMeta } {
return Boolean(meta && 'photon' in meta)
}
-export function isPhotonMetaConfig(meta?: CustomPluginOptions): meta is { photonConfig: PhotonMetaConfig } {
+export function isPhotonMetaConfig(meta?: T): meta is T & { photonConfig: PhotonMetaConfig } {
return Boolean(meta && 'photonConfig' in meta)
}
-export interface PhotonMetaServer {
- type: 'server'
- server: SupportedServers
-}
-
-export interface PhotonMetaUniversalHandler {
- type: 'universal-handler'
- route?: string
-}
-
-export type PhotonMeta = PhotonMetaServer | PhotonMetaUniversalHandler
+export type PhotonMeta = Photon.EntryServer | Photon.EntryUniversalHandler
export interface PhotonMetaConfig {
/**
@@ -27,4 +19,5 @@ export interface PhotonMetaConfig {
* a 'full-reload' will occur.
*/
isGlobal?: boolean
+ isTargetEntry?: boolean
}
diff --git a/packages/photonjs/src/plugin/utils/escapeStringRegexp.ts b/packages/photonjs/src/plugin/utils/escapeStringRegexp.ts
new file mode 100644
index 0000000..3f69ace
--- /dev/null
+++ b/packages/photonjs/src/plugin/utils/escapeStringRegexp.ts
@@ -0,0 +1,4 @@
+// Credit: https://github.com/sindresorhus/escape-string-regexp/blob/main/index.js
+export function escapeStringRegexp(subject: string) {
+ return subject.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d')
+}
diff --git a/packages/photonjs/src/plugin/utils/resolve.ts b/packages/photonjs/src/plugin/utils/resolve.ts
index 100625d..9cbbb32 100644
--- a/packages/photonjs/src/plugin/utils/resolve.ts
+++ b/packages/photonjs/src/plugin/utils/resolve.ts
@@ -1,5 +1,5 @@
-import type { PluginContext } from 'rollup'
import type { Nullable } from 'unplugin'
+import type { PluginContext } from './rollupTypes.js'
interface Opts {
source: Parameters[0]
@@ -7,7 +7,7 @@ interface Opts {
opts?: Parameters[2]
}
-export async function resolveFirst(pluginContext: PluginContext, tryToResolve: Nullable[]) {
+export async function resolveFirst(pluginContext: Pick, tryToResolve: Nullable[]) {
const resolving = await Promise.all(
(tryToResolve.filter(Boolean) as Opts[]).map(({ source, importer, opts }) =>
pluginContext.resolve(source, importer, opts),
diff --git a/packages/photonjs/src/plugin/utils/rollupTypes.ts b/packages/photonjs/src/plugin/utils/rollupTypes.ts
new file mode 100644
index 0000000..8319144
--- /dev/null
+++ b/packages/photonjs/src/plugin/utils/rollupTypes.ts
@@ -0,0 +1,10 @@
+import type { Plugin } from 'vite'
+
+// biome-ignore lint/suspicious/noExplicitAny:
+export type PluginContext = ThisParameterType any>>
+
+// biome-ignore lint/suspicious/noExplicitAny:
+export type ModuleInfo = Parameters any>>[0]
+
+// biome-ignore lint/suspicious/noExplicitAny:
+export type LoadResult = Awaited any>>>
diff --git a/packages/photonjs/src/plugin/utils/servers.ts b/packages/photonjs/src/plugin/utils/servers.ts
new file mode 100644
index 0000000..decd04a
--- /dev/null
+++ b/packages/photonjs/src/plugin/utils/servers.ts
@@ -0,0 +1,18 @@
+import type { SupportedServers } from '../../validators/types.js'
+
+function getImports(id: string) {
+ return [id, `@photonjs/${id}`, `@photonjs/core/${id}`]
+}
+
+export const serversToImports: Record = {
+ hono: getImports('hono'),
+ hattip: getImports('hattip'),
+ elysia: getImports('elysia'),
+ h3: getImports('h3'),
+ express: getImports('express'),
+ fastify: getImports('fastify'),
+}
+
+export const importsToServer = Object.fromEntries(
+ Object.entries(serversToImports).flatMap(([k, v]) => v.map((x) => [x, k])),
+) as Record
diff --git a/packages/photonjs/src/plugin/utils/universal.ts b/packages/photonjs/src/plugin/utils/universal.ts
new file mode 100644
index 0000000..d975f5a
--- /dev/null
+++ b/packages/photonjs/src/plugin/utils/universal.ts
@@ -0,0 +1,20 @@
+import { type EnhancedMiddleware, getUniversal, nameSymbol } from '@universal-middleware/core'
+import { PhotonConfigError } from '../../utils/assert.js'
+
+type ErrorMessage = (id: string, i: number) => string
+
+export function extractUniversal(
+ mi: EnhancedMiddleware | EnhancedMiddleware[],
+ id: string,
+ errorMessage: ErrorMessage,
+) {
+ return [mi]
+ .flat(Number.POSITIVE_INFINITY)
+ .map((x) => getUniversal(x as EnhancedMiddleware))
+ .map((m, i) => {
+ if (typeof m === 'function' && nameSymbol in m) {
+ return m
+ }
+ throw new PhotonConfigError(errorMessage(id, i))
+ })
+}
diff --git a/packages/photonjs/src/plugin/utils/virtual.ts b/packages/photonjs/src/plugin/utils/virtual.ts
index b3c7734..b424d8c 100644
--- a/packages/photonjs/src/plugin/utils/virtual.ts
+++ b/packages/photonjs/src/plugin/utils/virtual.ts
@@ -1,50 +1,49 @@
-import { type Out, type Type, type } from 'arktype'
-import { assert } from '../../utils/assert.js'
-
-type ToLiteral = T extends `\${${infer _}}` ? string : T
-type ToParse = T extends `\${${infer X}?}`
- ? { [K in X]?: string }
- : T extends `\${${infer X}}`
- ? { [K in X]: string }
- : // biome-ignore lint/complexity/noBannedTypes:
- {}
-
-type Literal = T extends `${infer A}:${infer B}` ? `${ToLiteral}:${Literal}` : ToLiteral
-type Parse = T extends `${infer A}:${infer B}` ? ToParse & Parse : ToParse
-
-export function literal(pattern: T) {
- const regex = new RegExp(
- `^${pattern.replace(/:\$\{(.*?)\?}/g, '(?::(?<$1>.*))?').replace(/\$\{(.*?)}/g, '(?<$1>.*)')}\$`,
- )
- return type(regex)
- .configure({ expected: pattern })
- .pipe.try((x) => {
+export function regexGroups(regex: RegExp) {
+ return {
+ regex,
+ match(x?: string) {
+ if (x === undefined) return null
const match = x.match(regex)
- assert(match)
- return match.groups as Parse
- // biome-ignore lint/complexity/noBannedTypes:
- }) as Type<(In: Literal) => Out>, {}>
+ if (match === null) return null
+ return match.groups as T
+ },
+ }
}
-export const virtualModules = {
- 'handler-entry': literal('photon:handler-entry:${entry}'),
- 'server-entry': literal('photon:server-entry:${entry?}'),
- 'fallback-entry': literal('photon:fallback-entry'),
- 'resolve-from-photon': literal('photon:resolve-from-photon:${module}'),
- 'get-middlewares': literal('photon:get-middlewares:${condition}:${server}'),
+const virtualModules = {
+ 'virtual-entry': regexGroups<{ uniqueId: string; entry: string }>(
+ /^photon:virtual-entry:(?.+?):(?.+)/,
+ ),
+ 'handler-entry': regexGroups<{ entry: string }>(/^photon:handler-entry:(?.+)/),
+ 'server-entry': regexGroups<{ entry?: string }>(/^photon:server-entry(?:$|:(?.+))/),
+ 'server-entry-with-entry': regexGroups<{ condition: string; entry: string }>(
+ /^photon:server-entry-with-entry:(?.+?):(?.+)/,
+ ),
+ 'fallback-entry': regexGroups(/^photon:fallback-entry/),
+ 'resolve-from-photon': regexGroups<{ module: string }>(/^photon:resolve-from-photon:(?.+)/),
+ 'get-middlewares': regexGroups<{ condition: string; server: string; handler?: string }>(
+ /^photon:get-middlewares:(?.+?):(?[^:]+)(?::(?.+))?/,
+ ),
}
+export const virtualModulesRegex = Object.fromEntries(
+ Object.entries(virtualModules).map(([k, v]) => [k, v.regex]),
+) as Record
+
type VirtualModuleKeys = keyof typeof virtualModules
+type ExtractArgs = NonNullable<
+ ReturnType<(typeof virtualModules)[K extends VirtualModuleKeys ? K : K[number]]['match']>
+>
export function ifPhotonModule<
K extends VirtualModuleKeys | VirtualModuleKeys[],
// biome-ignore lint/suspicious/noExplicitAny:
- F extends (arg: (typeof virtualModules)[K extends VirtualModuleKeys ? K : K[number]]['infer']) => any,
+ F extends (arg: ExtractArgs) => any,
>(key: K, value: unknown, callback: F): null | ReturnType
export function ifPhotonModule<
K extends VirtualModuleKeys | VirtualModuleKeys[],
// biome-ignore lint/suspicious/noExplicitAny:
- F extends (arg: (typeof virtualModules)[K extends VirtualModuleKeys ? K : K[number]]['infer']) => any,
+ F extends (arg: ExtractArgs) => any,
R,
>(
key: K,
@@ -60,7 +59,7 @@ export function ifPhotonModule<
export function ifPhotonModule<
K extends VirtualModuleKeys | VirtualModuleKeys[],
// biome-ignore lint/suspicious/noExplicitAny:
- F extends (arg: (typeof virtualModules)[K extends VirtualModuleKeys ? K : K[number]]['infer']) => any,
+ F extends (arg: ExtractArgs) => any,
>(key: K, value: unknown, callback: F, next: unknown = null): unknown | ReturnType {
function returnOrThrow() {
if (next instanceof Error) {
@@ -75,22 +74,25 @@ export function ifPhotonModule<
if (Array.isArray(key)) {
for (const k of key) {
- const r = ifPhotonModule(k as VirtualModuleKeys, value, callback)
+ // biome-ignore lint/suspicious/noExplicitAny:
+ const r = ifPhotonModule(k as VirtualModuleKeys, value, callback as any)
if (r !== null) return r
}
return returnOrThrow()
}
- const out = virtualModules[key as VirtualModuleKeys](value)
+ // biome-ignore lint/suspicious/noExplicitAny:
+ const out = virtualModules[key as VirtualModuleKeys].match(value as any)
- if (out instanceof type.errors) {
+ if (out === null) {
return returnOrThrow()
}
- return callback(out)
+ // biome-ignore lint/suspicious/noExplicitAny:
+ return callback(out as any)
}
-export function asPhotonEntryId(id: string, type: 'handler-entry' | 'server-entry') {
+export function asPhotonEntryId(id: string, type: 'handler-entry' | 'server-entry' | 'server-config') {
if (id.startsWith(`photon:${type}`)) {
return id
}
diff --git a/packages/photonjs/src/servers/elysia.ts b/packages/photonjs/src/servers/elysia.ts
new file mode 100644
index 0000000..17f9e55
--- /dev/null
+++ b/packages/photonjs/src/servers/elysia.ts
@@ -0,0 +1,2 @@
+export { apply, type RuntimeAdapter } from '@photonjs/core/elysia/apply'
+export { serve } from '@photonjs/core/elysia/serve'
diff --git a/packages/photonjs/src/servers/express.ts b/packages/photonjs/src/servers/express.ts
new file mode 100644
index 0000000..1bf20fb
--- /dev/null
+++ b/packages/photonjs/src/servers/express.ts
@@ -0,0 +1,2 @@
+export { apply, type RuntimeAdapter } from '@photonjs/core/express/apply'
+export { serve } from '@photonjs/core/express/serve'
diff --git a/packages/photonjs/src/servers/fastify.ts b/packages/photonjs/src/servers/fastify.ts
new file mode 100644
index 0000000..b573b54
--- /dev/null
+++ b/packages/photonjs/src/servers/fastify.ts
@@ -0,0 +1,2 @@
+export { apply, type RuntimeAdapter } from '@photonjs/core/fastify/apply'
+export { serve } from '@photonjs/core/fastify/serve'
diff --git a/packages/photonjs/src/servers/h3.ts b/packages/photonjs/src/servers/h3.ts
new file mode 100644
index 0000000..a08842a
--- /dev/null
+++ b/packages/photonjs/src/servers/h3.ts
@@ -0,0 +1,2 @@
+export { apply, type RuntimeAdapter } from '@photonjs/core/h3/apply'
+export { serve } from '@photonjs/core/h3/serve'
diff --git a/packages/photonjs/src/servers/hattip.ts b/packages/photonjs/src/servers/hattip.ts
new file mode 100644
index 0000000..c6564e3
--- /dev/null
+++ b/packages/photonjs/src/servers/hattip.ts
@@ -0,0 +1,2 @@
+export { apply, type RuntimeAdapter } from '@photonjs/core/hattip/apply'
+export { serve } from '@photonjs/core/hattip/serve'
diff --git a/packages/photonjs/src/servers/hono.ts b/packages/photonjs/src/servers/hono.ts
new file mode 100644
index 0000000..c4b919e
--- /dev/null
+++ b/packages/photonjs/src/servers/hono.ts
@@ -0,0 +1,2 @@
+export { apply, type RuntimeAdapter } from '@photonjs/core/hono/apply'
+export { serve } from '@photonjs/core/hono/serve'
diff --git a/packages/photonjs/src/types.ts b/packages/photonjs/src/types.ts
index ae652d8..4f744f0 100644
--- a/packages/photonjs/src/types.ts
+++ b/packages/photonjs/src/types.ts
@@ -2,20 +2,30 @@ import type {
PhotonConfig,
PhotonConfigResolved,
PhotonEntryBase,
+ PhotonEntryPartial,
PhotonEntryServer,
+ PhotonEntryServerConfig,
+ PhotonEntryServerPartial,
PhotonEntryUniversalHandler,
} from './validators/types.js'
-declare global {
- export namespace Photon {
- export interface EntryBase extends PhotonEntryBase {}
- export interface EntryServer extends EntryBase, PhotonEntryServer {}
- export interface EntryUniversalHandler extends EntryBase, PhotonEntryUniversalHandler {}
+export namespace Photon {
+ export interface EntryBase extends PhotonEntryBase {}
+ export interface EntryServer extends EntryBase, PhotonEntryServer {}
+ export interface EntryServerPartial extends Omit, PhotonEntryServerPartial {}
+ export interface EntryServerConfig extends Omit, PhotonEntryServerConfig {}
+ export interface EntryPartial extends Omit, PhotonEntryPartial {}
+ export interface EntryUniversalHandler extends EntryBase, PhotonEntryUniversalHandler {}
- export type Entry = EntryServer | EntryUniversalHandler
+ export type Entry = EntryServer | EntryUniversalHandler | EntryServerConfig
- export interface Config extends PhotonConfig {}
+ export interface Config extends PhotonConfig {
+ server?: string | EntryServerPartial
+ entries?: Record
+ }
- export interface ConfigResolved extends PhotonConfigResolved {}
+ export interface ConfigResolved extends PhotonConfigResolved {
+ server: EntryServer
+ entries: (EntryUniversalHandler | EntryServerConfig)[]
}
}
diff --git a/packages/photonjs/src/utils/assert.ts b/packages/photonjs/src/utils/assert.ts
index ea05b7b..6af56a6 100644
--- a/packages/photonjs/src/utils/assert.ts
+++ b/packages/photonjs/src/utils/assert.ts
@@ -1,17 +1,81 @@
-export { assert, assertUsage }
+export {
+ assert,
+ assertUsage,
+ PhotonError,
+ PhotonBugError,
+ PhotonUsageError,
+ PhotonConfigError,
+ PhotonRuntimeError,
+ PhotonDependencyError,
+}
import pc from '@brillout/picocolors'
+/**
+ * Base class for all PhotonJS errors
+ */
+abstract class PhotonError extends Error {
+ protected constructor(category: string, message: string, options?: ErrorOptions) {
+ super(`${red(`[photon][${category}]`)} ${message}`, options)
+ this.name = this.constructor.name
+ }
+}
+
+/**
+ * Internal PhotonJS bugs that should be reported to maintainers
+ */
+class PhotonBugError extends PhotonError {
+ constructor(message?: string, options?: ErrorOptions) {
+ const defaultMessage =
+ 'You stumbled upon a PhotonJS bug. Reach out on GitHub and copy-paste this error — a maintainer will fix the bug.'
+ super('Bug', `${message || defaultMessage}`, options)
+ }
+}
+
+/**
+ * User errors due to incorrect usage
+ */
+class PhotonUsageError extends PhotonError {
+ constructor(message: string, options?: ErrorOptions) {
+ super('Wrong Usage', message, options)
+ }
+}
+
+/**
+ * Configuration errors
+ */
+class PhotonConfigError extends PhotonError {
+ constructor(message: string, options?: ErrorOptions) {
+ super('Config Error', message, options)
+ }
+}
+
+/**
+ * Runtime errors during execution
+ */
+class PhotonRuntimeError extends PhotonError {
+ constructor(message: string, options?: ErrorOptions) {
+ super('Runtime Error', message, options)
+ }
+}
+
+/**
+ * Missing dependency errors
+ */
+class PhotonDependencyError extends PhotonError {
+ constructor(message: string, options?: ErrorOptions) {
+ super('Dependency Error', message, options)
+ }
+}
+
function assert(condition: unknown): asserts condition {
if (condition) return
- throw new Error(
- `${red('[photon][Bug]')} You stumbled upon a PhotonJS bug. Reach out on GitHub and copy-paste this error — a maintainer will fix the bug.`,
- )
+ throw new PhotonBugError()
}
function assertUsage(condition: unknown, message: string): asserts condition {
if (condition) return
- throw new Error(`${red('[photon][Wrong Usage]')} ${message}`)
+ throw new PhotonUsageError(message)
}
function red(str: string) {
diff --git a/packages/photonjs/src/utils/deferred.ts b/packages/photonjs/src/utils/deferred.ts
new file mode 100644
index 0000000..e171799
--- /dev/null
+++ b/packages/photonjs/src/utils/deferred.ts
@@ -0,0 +1,17 @@
+export interface Deferred {
+ promise: Promise
+ resolve: (value: T | PromiseLike) => void
+ reject: (reason?: unknown) => void
+}
+
+export function createDeferred(): Deferred {
+ let resolve!: (value: T | PromiseLike) => void
+ let reject!: (reason?: unknown) => void
+
+ const promise = new Promise((res, rej) => {
+ resolve = res
+ reject = rej
+ })
+
+ return { promise, resolve, reject }
+}
diff --git a/packages/photonjs/src/utils/meta.ts b/packages/photonjs/src/utils/meta.ts
new file mode 100644
index 0000000..66fb9a2
--- /dev/null
+++ b/packages/photonjs/src/utils/meta.ts
@@ -0,0 +1,47 @@
+import { isPhotonMeta, type PhotonMeta } from '../plugin/utils/entry.js'
+import type { PluginContext } from '../plugin/utils/rollupTypes.js'
+import { asPhotonEntryId } from '../plugin/utils/virtual.js'
+import type { Photon } from '../types.js'
+import { assertUsage, PhotonUsageError } from './assert.js'
+
+interface HintToMeta {
+ 'handler-entry': Photon.EntryUniversalHandler
+ 'server-entry': Photon.EntryServer
+}
+
+/**
+ * Retrieves Photon metadata associated with a specific entry
+ */
+export async function getPhotonMeta(
+ pluginContext: PluginContext,
+ id: string,
+ hint?: T,
+): Promise {
+ const actualId = hint ? asPhotonEntryId(id, hint) : id
+
+ {
+ const info = pluginContext.getModuleInfo(actualId)
+ if (isPhotonMeta(info?.meta)) {
+ // biome-ignore lint/suspicious/noExplicitAny:
+ return info.meta.photon as any
+ }
+ }
+
+ const resolved = await pluginContext.resolve(actualId, undefined, { isEntry: true })
+ assertUsage(resolved, `Could not resolve ${actualId}`)
+
+ if (isPhotonMeta(resolved.meta)) {
+ // biome-ignore lint/suspicious/noExplicitAny:
+ return resolved.meta.photon as any
+ }
+
+ {
+ const info = pluginContext.getModuleInfo(resolved.id)
+ if (isPhotonMeta(info?.meta)) {
+ // biome-ignore lint/suspicious/noExplicitAny:
+ return info.meta.photon as any
+ }
+ }
+
+ throw new PhotonUsageError(`Could not find Photon meta for "${id}" (hint: ${hint})`)
+}
diff --git a/packages/photonjs/src/validators/coerce.ts b/packages/photonjs/src/validators/coerce.ts
index d1a5c2e..86565f9 100644
--- a/packages/photonjs/src/validators/coerce.ts
+++ b/packages/photonjs/src/validators/coerce.ts
@@ -1,76 +1,159 @@
-import { match, type } from 'arktype'
+import { isBun } from '../plugin/utils/isBun.js'
+import { isDeno } from '../plugin/utils/isDeno.js'
import { asPhotonEntryId } from '../plugin/utils/virtual.js'
-import type {
- PhotonConfig,
- PhotonConfigResolved,
- PhotonEntryBase,
- PhotonEntryServer,
- PhotonEntryUniversalHandler,
-} from './types.js'
+import type { Photon } from '../types.js'
+import { assert, PhotonConfigError } from '../utils/assert.js'
+import type { PhotonConfig, PhotonEntryPartial, PhotonEntryServerPartial } from './types.js'
import * as Validators from './validators.js'
-function entryToPhoton<
- T extends 'handler-entry' | 'server-entry',
- Entry = T extends 'server-entry' ? PhotonEntryServer : PhotonEntryUniversalHandler,
->(entry: string | Entry, type: T): Entry {
- if (typeof entry === 'string')
+export function entryToPhoton(
+ defaultType: 'server-entry',
+ entry: string | PhotonEntryServerPartial,
+ name: 'index',
+): Photon.EntryServer
+export function entryToPhoton(
+ defaultType: 'handler-entry',
+ entry: string | PhotonEntryPartial,
+ name: string,
+): Photon.EntryUniversalHandler | Photon.EntryServerConfig
+export function entryToPhoton(
+ defaultType: 'server-entry' | 'handler-entry',
+ entry: string | PhotonEntryServerPartial | PhotonEntryPartial,
+ name: string,
+): Photon.Entry {
+ assert(name)
+ if (typeof entry === 'string') {
return {
- id: asPhotonEntryId(entry, type),
- type: type === 'server-entry' ? 'server' : 'universal-handler',
- } as Entry
+ id: asPhotonEntryId(entry, defaultType),
+ name,
+ type: defaultType === 'server-entry' ? 'server' : 'universal-handler',
+ }
+ }
+ if (entry.type === 'server-config' || entry.id === 'photon:server-entry' || !entry.id) {
+ return {
+ ...entry,
+ id: 'photon:server-entry',
+ type: 'server-config',
+ name,
+ }
+ }
return {
...entry,
- type: type === 'server-entry' ? 'server' : 'universal-handler',
- id: asPhotonEntryId((entry as PhotonEntryBase).id, type),
+ id: asPhotonEntryId(entry.id, defaultType),
+ type: defaultType === 'server-entry' ? 'server' : 'universal-handler',
+ name,
}
}
-function handlersToPhoton(
- handlers: Record | string>,
-): Record {
- return Object.fromEntries(
- Object.entries(handlers).map(([key, value]) => [
- key,
- entryToPhoton(value as PhotonEntryUniversalHandler, 'handler-entry'),
- ]),
- )
+function entriesToPhoton(
+ entries: PhotonConfig['entries'],
+): (Photon.EntryUniversalHandler | Photon.EntryServerConfig)[] {
+ return Object.entries(entries ?? {}).map(([key, value]) => entryToPhoton('handler-entry', value, key))
}
-export function resolvePhotonConfig(config: PhotonConfig | undefined): PhotonConfigResolved {
- const out = Validators.PhotonConfig.pipe.try((c) => {
- const toRest = match
- .in()
- .case({ '[string]': 'unknown' }, (v) => {
- const { handlers, server, hmr, middlewares, ...rest } = v
- return rest
- })
- .default(() => ({}))
+function excludeTrue(v: T): Partial> {
+ if (v === true) return {}
+ return v as Exclude
+}
- const handlers = handlersToPhoton(c.handlers ?? {})
- const server = c.server
- ? entryToPhoton(c.server, 'server-entry')
+const resolver = Validators.PhotonConfig.transform((c) => {
+ return Validators.PhotonConfigResolved.parse({
+ // Allows Photon targets to add custom options
+ ...c,
+ entries: entriesToPhoton(c.entries),
+ server: c.server
+ ? entryToPhoton('server-entry', c.server, 'index')
: entryToPhoton(
+ 'server-entry',
{
id: 'photon:fallback-entry',
type: 'server',
server: 'hono',
},
- 'server-entry',
- )
- const hmr = c.hmr ?? true
- const middlewares = c.middlewares ?? []
- // Allows Photon targets to add custom options
- const rest = toRest(c)
+ 'index',
+ ),
+ devServer:
+ c.devServer === false
+ ? false
+ : {
+ env: excludeTrue(c.devServer)?.env ?? 'ssr',
+ autoServe: excludeTrue(c.devServer)?.autoServe ?? true,
+ },
+ middlewares: c.middlewares ?? [],
+ codeSplitting: {
+ framework: c.codeSplitting?.framework ?? true,
+ target: c.codeSplitting?.target ?? false,
+ },
+ defaultBuildEnv: c.defaultBuildEnv ?? 'ssr',
+ hmr: c.hmr ?? (isBun || isDeno ? 'prefer-restart' : true),
+ })
+})
- return {
- handlers,
- server,
- hmr,
- middlewares,
- ...rest,
+export function mergePhotonConfig(configs: Photon.Config[]): Photon.Config {
+ const resolving: Photon.Config = {}
+ resolving.entries = {}
+ resolving.middlewares = []
+ resolving.codeSplitting = {}
+ for (const config of configs) {
+ // server
+ if (config.server) {
+ resolving.server = config.server
+ }
+
+ // entries
+ // Check for duplicate entries
+ if (config.entries) {
+ const names = new Set()
+ for (const name of [...Object.keys(resolving.entries), ...Object.keys(config.entries)]) {
+ if (names.has(name)) {
+ throw new PhotonConfigError(`Duplicate entry name: ${name}`)
+ }
+ names.add(name)
+ }
+ Object.assign(resolving.entries, config.entries)
}
- }, Validators.PhotonConfigResolved)(config)
- if (out instanceof type.errors) return out.throw()
- return out
+ // middlewares
+ if (config.middlewares) {
+ resolving.middlewares.push(...config.middlewares)
+ }
+
+ // devServer
+ // if devServer has already been set to false, keep it that way
+ if (resolving.devServer !== false) {
+ if (config.devServer === false) {
+ resolving.devServer = false
+ } else if (config.devServer) {
+ resolving.devServer = config.devServer
+ }
+ }
+
+ // hmr
+ if (typeof config.hmr !== 'undefined') {
+ resolving.hmr = config.hmr
+ }
+
+ // codeSplitting
+ // if codeSplitting has already been set to false, keep it that way
+ if (resolving.codeSplitting.framework !== false) {
+ if (typeof config.codeSplitting?.framework !== 'undefined') {
+ resolving.codeSplitting.framework = config.codeSplitting.framework
+ }
+ }
+ if (resolving.codeSplitting.target !== false) {
+ if (typeof config.codeSplitting?.target !== 'undefined') {
+ resolving.codeSplitting.target = config.codeSplitting.target
+ }
+ }
+
+ if (config.defaultBuildEnv) {
+ resolving.defaultBuildEnv = config.defaultBuildEnv
+ }
+ }
+ return resolving
+}
+
+export function resolvePhotonConfig(config: Photon.Config | Photon.Config[] | undefined): Photon.ConfigResolved {
+ const _config: Photon.Config | undefined = Array.isArray(config) ? mergePhotonConfig(config) : config
+ return resolver.parse(_config ?? {})
}
diff --git a/packages/photonjs/src/validators/types.ts b/packages/photonjs/src/validators/types.ts
index 30ef44b..2e212e9 100644
--- a/packages/photonjs/src/validators/types.ts
+++ b/packages/photonjs/src/validators/types.ts
@@ -1,13 +1,17 @@
+import type { z } from 'zod/v4'
import type * as Validators from './validators.js'
-export type SupportedServers = typeof Validators.SupportedServers.infer
+export type SupportedServers = z.infer
-export type PhotonEntryServer = typeof Validators.PhotonEntryServer.infer
-export type PhotonEntryUniversalHandler = typeof Validators.PhotonEntryUniversalHandler.infer
-export type PhotonEntryBase = typeof Validators.PhotonEntryBase.infer
+export type PhotonEntryServer = z.infer
+export type PhotonEntryServerPartial = z.infer
+export type PhotonEntryServerConfig = z.infer
+export type PhotonEntryUniversalHandler = z.infer
+export type PhotonEntryBase = z.infer
+export type PhotonEntryPartial = z.infer
-export type PhotonConfig = typeof Validators.PhotonConfig.infer
+export type PhotonConfig = z.infer
-export type PhotonConfigResolved = typeof Validators.PhotonConfigResolved.infer
+export type PhotonConfigResolved = z.infer
export type GetPhotonCondition = Validators.GetPhotonCondition
diff --git a/packages/photonjs/src/validators/validators.ts b/packages/photonjs/src/validators/validators.ts
index 6538426..34cf78b 100644
--- a/packages/photonjs/src/validators/validators.ts
+++ b/packages/photonjs/src/validators/validators.ts
@@ -1,53 +1,112 @@
-import { type } from 'arktype'
-import type { PluginContext } from 'rollup'
+import type { ViteDevServer } from 'vite'
+import { z } from 'zod/v4'
+import type { PluginContext } from '../plugin/utils/rollupTypes.js'
-// FIXME server should be optional?
+// FIXME should server be optional?
export type GetPhotonCondition = (
- this: PluginContext,
+ this: ViteDevServer | PluginContext,
condition: 'dev' | 'edge' | 'node',
server: string,
// biome-ignore lint/suspicious/noConfusingVoidType:
) => string | string[] | undefined | null | void
-export const SupportedServers = type("'hono' | 'hattip' | 'elysia' | 'express' | 'fastify' | 'h3'")
+export const SupportedServers = z.enum(['hono', 'hattip', 'elysia', 'express', 'fastify', 'h3'])
-export const PhotonEntryBase = type({
- id: 'string',
- 'route?': 'string',
- 'resolvedId?': 'string',
+export const PhotonEntryBase = z.object({
+ id: z.string(),
+ name: z.string(),
+ target: z.string().optional(),
+ route: z.string().optional(),
+ resolvedId: z.string().optional(),
})
-export const PhotonEntryServer = type({
- '...': PhotonEntryBase,
- type: "'server'",
- 'server?': SupportedServers,
-})
+export const PhotonEntryServer = PhotonEntryBase.extend({
+ type: z.literal('server'),
+ server: SupportedServers.optional(),
+}).loose()
-export const PhotonEntryUniversalHandler = type({
- '...': PhotonEntryBase,
- type: "'universal-handler'",
+export const PhotonEntryServerPartial = PhotonEntryServer.extend({
+ type: PhotonEntryServer.shape.type.optional(),
})
+ .omit({
+ name: true,
+ })
+ .loose()
-export const PhotonConfig = type({
- 'handlers?': {
- '[string]': type('string').or(PhotonEntryUniversalHandler.partial()),
- },
- 'server?': type('string').or(PhotonEntryServer.partial()),
- 'hmr?': "boolean | 'prefer-restart'",
- 'middlewares?': 'Array | undefined' as type.cast,
- 'devServer?': type('boolean').or({
- 'autoServe?': 'boolean',
- }),
+export const PhotonEntryUniversalHandler = PhotonEntryBase.extend({
+ type: z.literal('universal-handler'),
+ /**
+ * If undefined or 'auto', all middlewares will be applied to it.
+ * If 'isolated', no middlewares will be applied.
+ * @alpha
+ */
+ compositionMode: z.enum(['isolated', 'auto']).optional(),
+ env: z.string().optional(),
+}).loose()
+
+export const PhotonEntryServerConfig = PhotonEntryBase.extend({
+ id: z.literal('photon:server-entry'),
+ type: z.literal('server-config'),
+ compositionMode: PhotonEntryUniversalHandler.shape.compositionMode,
+ env: PhotonEntryUniversalHandler.shape.env,
+}).loose()
+
+export const PhotonEntryPartial = PhotonEntryUniversalHandler.extend({
+ type: z.enum(['universal-handler', 'server-config']).optional(),
+}).partial()
+
+export const PhotonConfig = z.looseObject({
+ server: z.union([z.string(), PhotonEntryServerPartial]).optional(),
+ // This means that only a framework setting codeSplitting: false can also add entries without .id
+ entries: z.record(z.string(), z.union([z.string(), PhotonEntryPartial])).optional(),
+ hmr: z.union([z.boolean(), z.literal('prefer-restart')]).optional(),
+ middlewares: z
+ .array(
+ z.custom((fn) => {
+ return typeof fn === 'function'
+ }),
+ )
+ .optional(),
+ defaultBuildEnv: z.string().optional(),
+ /**
+ * Can be set to false by frameworks or deployment targets if code splitting is not supported
+ */
+ codeSplitting: z
+ .object({
+ framework: z.boolean().optional(),
+ target: z.boolean().optional(),
+ })
+ .optional(),
+ devServer: z
+ .union([
+ z.boolean(),
+ z.object({
+ env: z.string().optional(),
+ autoServe: z.boolean().optional(),
+ }),
+ ])
+ .optional(),
})
-export const PhotonConfigResolved = type({
- handlers: {
- '[string]': PhotonEntryUniversalHandler,
- },
+export const PhotonConfigResolved = z.looseObject({
server: PhotonEntryServer,
- hmr: "boolean | 'prefer-restart'",
- middlewares: 'Array' as type.cast,
- 'devServer?': type('boolean').or({
- 'autoServe?': 'boolean',
+ entries: z.array(z.union([PhotonEntryUniversalHandler, PhotonEntryServerConfig])),
+ hmr: z.union([z.boolean(), z.literal('prefer-restart')]),
+ middlewares: z.array(
+ z.custom((fn) => {
+ return typeof fn === 'function'
+ }),
+ ),
+ defaultBuildEnv: z.string(),
+ codeSplitting: z.object({
+ framework: z.boolean(),
+ target: z.boolean(),
}),
+ devServer: z.union([
+ z.literal(false),
+ z.object({
+ env: z.string(),
+ autoServe: z.boolean(),
+ }),
+ ]),
})
diff --git a/packages/photonjs/src/vite-types.ts b/packages/photonjs/src/vite-types.ts
new file mode 100644
index 0000000..25ac5b8
--- /dev/null
+++ b/packages/photonjs/src/vite-types.ts
@@ -0,0 +1,13 @@
+///
+import type { Photon } from './types.js'
+
+declare module 'vite' {
+ interface UserConfig {
+ photon?: Photon.Config | Photon.Config[]
+ afterBuildStart?: boolean
+ }
+
+ interface ResolvedConfig {
+ photon: Photon.ConfigResolved
+ }
+}
diff --git a/packages/photonjs/tsup.config.ts b/packages/photonjs/tsup.config.ts
deleted file mode 100644
index eb33d82..0000000
--- a/packages/photonjs/tsup.config.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { builtinModules } from 'node:module'
-import { defineConfig, type Options as TsupOptions } from 'tsup'
-import virtualApply from './src/apply/esbuild.js'
-
-const externalServers: (string | RegExp)[] = ['elysia', 'fastify', 'h3', 'hono']
-
-const commonOptions: TsupOptions = {
- format: ['esm'],
- target: 'es2022',
- esbuildOptions(opts) {
- opts.outbase = 'src'
- },
- dts: true,
- outDir: 'dist',
- treeshake: true,
- removeNodeProtocol: false,
-}
-
-export default defineConfig([
- {
- ...commonOptions,
- platform: 'neutral',
- entry: {
- // serve (noop)
- 'elysia/serve': './src/serve/noop/elysia.ts',
- 'express/serve': './src/serve/noop/express.ts',
- 'fastify/serve': './src/serve/noop/fastify.ts',
- 'h3/serve': './src/serve/noop/h3.ts',
- 'hattip/serve': './src/serve/noop/hattip.ts',
- 'hono/serve': './src/serve/noop/hono.ts',
- // serve (bun)
- 'elysia/serve.bun': './src/serve/bun/elysia.ts',
- 'h3/serve.bun': './src/serve/bun/h3.ts',
- 'hattip/serve.bun': './src/serve/bun/hattip.ts',
- 'hono/serve.bun': './src/serve/bun/hono.ts',
- // serve (deno)
- 'elysia/serve.deno': './src/serve/deno/elysia.ts',
- 'h3/serve.deno': './src/serve/deno/h3.ts',
- 'hattip/serve.deno': './src/serve/deno/hattip.ts',
- 'hono/serve.deno': './src/serve/deno/hono.ts',
- // serve (node)
- 'elysia/serve.node': './src/serve/node/elysia.ts',
- 'express/serve.node': './src/serve/node/express.ts',
- 'fastify/serve.node': './src/serve/node/fastify.ts',
- 'h3/serve.node': './src/serve/node/h3.ts',
- 'hattip/serve.node': './src/serve/node/hattip.ts',
- 'hono/serve.node': './src/serve/node/hono.ts',
- },
- esbuildPlugins: [virtualApply()],
- external: externalServers
- .concat(...builtinModules.flatMap((e) => [e, `node:${e}`]))
- .concat(/^photon:get-middlewares:/)
- .concat('@photonjs/core/dev'),
- },
- {
- ...commonOptions,
- platform: 'node',
- entry: {
- plugin: './src/plugin/index.ts',
- api: './src/api.ts',
- dev: './src/dev.ts',
- index: './src/index.ts',
- },
- },
-])
diff --git a/packages/photonjs/virtual.d.ts b/packages/photonjs/virtual.d.ts
index d5210c4..6516c7e 100644
--- a/packages/photonjs/virtual.d.ts
+++ b/packages/photonjs/virtual.d.ts
@@ -3,3 +3,8 @@ declare module 'photon:fallback-entry' {
const handler: any
export default handler
}
+
+declare module 'photon:get-middlewares:*' {
+ export const getUniversalEntries: () => import('@universal-middleware/core').UniversalHandler[]
+ export const getUniversalMiddlewares: () => import('@universal-middleware/core').UniversalMiddleware[]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c4b1f9a..a45c42e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,6 +4,9 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
+overrides:
+ '@types/node': ^20.17.32
+
importers:
.:
@@ -13,31 +16,31 @@ importers:
version: 1.9.4
'@brillout/test-e2e':
specifier: ^0.6.8
- version: 0.6.8
+ version: 0.6.14
playwright:
specifier: ^1.52.0
- version: 1.52.0
+ version: 1.54.1
prettier:
specifier: ^3.2.5
- version: 3.5.3
+ version: 3.6.2
docs:
dependencies:
'@brillout/docpress':
specifier: ^0.12.4
- version: 0.12.6(@algolia/client-search@5.25.0)(@types/react@18.3.21)(@vitejs/plugin-react-swc@3.9.0(vite@6.3.5(@types/node@20.17.47)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.38.0)(search-insights@2.17.3)(typescript@5.8.3)(vike@0.4.229(vite@6.3.5(@types/node@20.17.47)))(vite@6.3.5(@types/node@20.17.47))
+ version: 0.12.6(@algolia/client-search@5.34.0)(@types/react@18.3.23)(@vitejs/plugin-react-swc@3.11.0(vite@6.3.5(@types/node@20.19.9)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.45.1)(search-insights@2.17.3)(typescript@5.8.3)(vike@0.4.236(vite@6.3.5(@types/node@20.19.9)))(vite@6.3.5(@types/node@20.19.9))
'@types/node':
specifier: ^20.17.32
- version: 20.17.47
+ version: 20.19.9
'@types/react':
specifier: ^18.3.8
- version: 18.3.21
+ version: 18.3.23
'@types/react-dom':
specifier: ^18.3.0
- version: 18.3.7(@types/react@18.3.21)
+ version: 18.3.7(@types/react@18.3.23)
'@vitejs/plugin-react-swc':
specifier: ^3.8.1
- version: 3.9.0(vite@6.3.5(@types/node@20.17.47))
+ version: 3.11.0(vite@6.3.5(@types/node@20.19.9))
react:
specifier: ^18.3.1
version: 18.3.1
@@ -49,22 +52,22 @@ importers:
version: 5.8.3
vike:
specifier: ^0.4.229
- version: 0.4.229(vite@6.3.5(@types/node@20.17.47))
+ version: 0.4.236(vite@6.3.5(@types/node@20.19.9))
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
example/app-cloudflare:
dependencies:
'@universal-middleware/core':
- specifier: ^0.4.7
- version: 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.9
+ version: 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
awesome-framework:
specifier: 'workspace:'
version: link:../awesome-framework
hono:
specifier: ^4.7.8
- version: 4.7.9
+ version: 4.8.5
devDependencies:
'@photonjs/cloudflare':
specifier: 'workspace:'
@@ -77,10 +80,10 @@ importers:
version: 5.8.3
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
wrangler:
- specifier: ^4.15.1
- version: 4.15.1(@cloudflare/workers-types@4.20250515.0)
+ specifier: ^4.19.1
+ version: 4.25.1(@cloudflare/workers-types@4.20250722.0)
example/app-hono-cloudflare:
dependencies:
@@ -89,7 +92,7 @@ importers:
version: link:../awesome-framework
hono:
specifier: ^4.7.8
- version: 4.7.9
+ version: 4.8.5
devDependencies:
'@photonjs/cloudflare':
specifier: 'workspace:'
@@ -102,10 +105,10 @@ importers:
version: 5.8.3
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
wrangler:
- specifier: ^4.15.1
- version: 4.15.1(@cloudflare/workers-types@4.20250515.0)
+ specifier: ^4.19.1
+ version: 4.25.1(@cloudflare/workers-types@4.20250722.0)
example/awesome-framework:
dependencies:
@@ -113,49 +116,49 @@ importers:
specifier: 'workspace:'
version: link:../../packages/photonjs
'@universal-middleware/core':
- specifier: ^0.4.7
- version: 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.9
+ version: 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/sirv':
specifier: ^0.1.20
version: 0.1.20
devDependencies:
'@types/node':
specifier: ^20.17.32
- version: 20.17.47
+ version: 20.19.9
typescript:
specifier: ^5.8.3
version: 5.8.3
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
packages/adapter-cloudflare:
dependencies:
'@cloudflare/vite-plugin':
- specifier: ^1.0.12
- version: 1.2.1(rollup@4.38.0)(vite@6.3.5(@types/node@20.17.47))(workerd@1.20250508.0)(wrangler@4.15.1(@cloudflare/workers-types@4.20250515.0))
+ specifier: ^1.5.0
+ version: 1.10.0(rollup@4.45.1)(vite@6.3.5(@types/node@20.19.9))(workerd@1.20250712.0)(wrangler@4.25.1(@cloudflare/workers-types@4.20250722.0))
'@photonjs/core':
specifier: workspace:^
version: link:../photonjs
'@universal-middleware/cloudflare':
- specifier: ^0.4.8
- version: 0.4.8(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.10
+ version: 0.4.10(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
devDependencies:
'@brillout/release-me':
specifier: ^0.4.3
- version: 0.4.3
+ version: 0.4.8(conventional-commits-filter@5.0.0)
'@cloudflare/workers-types':
- specifier: ^4.20250515.0
- version: 4.20250515.0
+ specifier: ^4.20250604.0
+ version: 4.20250722.0
'@universal-middleware/core':
- specifier: ^0.4.7
- version: 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
- '@universal-middleware/h3':
specifier: ^0.4.9
- version: 0.4.10(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ version: 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
+ '@universal-middleware/h3':
+ specifier: ^0.4.12
+ version: 0.4.12(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/hono':
- specifier: ^0.4.10
- version: 0.4.12(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.15
+ version: 0.4.15(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
crossws:
specifier: ^0.3.5
version: 0.3.5
@@ -164,113 +167,113 @@ importers:
version: 1.15.3
tsup:
specifier: ^8.4.0
- version: 8.4.0(@swc/core@1.11.24)(postcss@8.5.3)(typescript@5.8.3)
+ version: 8.5.0(@swc/core@1.13.1)(postcss@8.5.6)(typescript@5.8.3)
typescript:
specifier: ^5.8.3
version: 5.8.3
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
packages/photonjs:
dependencies:
'@brillout/picocolors':
specifier: ^1.0.26
- version: 1.0.26
+ version: 1.0.28
'@brillout/vite-plugin-server-entry':
specifier: ^0.7.5
version: 0.7.9
+ '@universal-middleware/cloudflare':
+ specifier: ^0.4.10
+ version: 0.4.10(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/compress':
specifier: ^0.2.30
version: 0.2.30
'@universal-middleware/core':
- specifier: ^0.4.7
- version: 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.9
+ version: 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/elysia':
- specifier: ^0.5.1
- version: 0.5.1(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.5.3
+ version: 0.5.3(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/express':
- specifier: ^0.4.16
- version: 0.4.16(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.18
+ version: 0.4.18(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/fastify':
- specifier: ^0.5.18
- version: 0.5.18(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.5.20
+ version: 0.5.20(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/h3':
- specifier: ^0.4.10
- version: 0.4.10(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.12
+ version: 0.4.12(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/hattip':
- specifier: ^0.4.9
- version: 0.4.9(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.11
+ version: 0.4.11(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/hono':
- specifier: ^0.4.12
- version: 0.4.12(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ specifier: ^0.4.15
+ version: 0.4.15(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
'@universal-middleware/sirv':
specifier: ^0.1.20
version: 0.1.20
- arktype:
- specifier: ^2.1.20
- version: 2.1.20
estree-walker:
specifier: ^3.0.3
version: 3.0.3
hono:
specifier: ^4.7.7
- version: 4.7.9
- oxc-transform:
- specifier: ^0.64.0
- version: 0.64.0
+ version: 4.8.5
+ ts-deepmerge:
+ specifier: ^7.0.3
+ version: 7.0.3
+ zod:
+ specifier: ^3.25.64
+ version: 3.25.76
devDependencies:
'@brillout/release-me':
specifier: ^0.4.3
- version: 0.4.3
+ version: 0.4.8(conventional-commits-filter@5.0.0)
'@elysiajs/node':
specifier: ^1.2.6
- version: 1.2.6(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(formidable@3.5.4)(ws@8.18.0)
+ version: 1.3.0(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(hono@4.8.5)
'@hattip/adapter-node':
specifier: ^0.0.49
version: 0.0.49
'@hono/node-server':
specifier: ^1.14.1
- version: 1.14.1(hono@4.7.9)
+ version: 1.17.1(hono@4.8.5)
'@types/bun':
specifier: ^1.2.10
- version: 1.2.13
+ version: 1.2.19(@types/react@18.3.23)
'@types/deno':
specifier: ^2.2.0
version: 2.3.0
'@types/node':
specifier: ^20.17.32
- version: 20.17.47
+ version: 20.19.9
elysia:
specifier: ^1.2.25
- version: 1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3)
+ version: 1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3)
esbuild:
specifier: ^0.25.2
- version: 0.25.4
+ version: 0.25.8
fastify:
specifier: ^5.3.0
- version: 5.3.3
+ version: 5.4.0
h3:
specifier: ^1.15.1
version: 1.15.3
magic-string:
specifier: ^0.30.17
version: 0.30.17
- rollup:
- specifier: 4.38.0
- version: 4.38.0
tsup:
specifier: ^8.4.0
- version: 8.4.0(@swc/core@1.11.24)(postcss@8.5.3)(typescript@5.8.3)
+ version: 8.5.0(@swc/core@1.13.1)(postcss@8.5.6)(typescript@5.8.3)
typescript:
specifier: ^5.8.3
version: 5.8.3
unplugin:
specifier: ^2.3.2
- version: 2.3.4
+ version: 2.3.5
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
tests/app:
dependencies:
@@ -282,13 +285,13 @@ importers:
version: 5.1.0
fastify:
specifier: ^5.3.0
- version: 5.3.3
+ version: 5.4.0
h3:
specifier: ^1.15.1
version: 1.15.3
hono:
specifier: ^4.7.8
- version: 4.7.9
+ version: 4.8.5
devDependencies:
'@photonjs/cloudflare':
specifier: 'workspace:'
@@ -298,19 +301,19 @@ importers:
version: link:../../packages/photonjs
'@types/express':
specifier: ^5.0.2
- version: 5.0.2
+ version: 5.0.3
'@types/node':
specifier: ^20.17.32
- version: 20.17.47
+ version: 20.19.9
typescript:
specifier: ^5.8.3
version: 5.8.3
vite:
specifier: ^6.3.5
- version: 6.3.5(@types/node@20.17.47)
+ version: 6.3.5(@types/node@20.19.9)
wrangler:
- specifier: ^4.15.1
- version: 4.15.1(@cloudflare/workers-types@4.20250515.0)
+ specifier: ^4.19.1
+ version: 4.25.1(@cloudflare/workers-types@4.20250722.0)
packages:
@@ -334,72 +337,58 @@ packages:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
- '@algolia/client-abtesting@5.25.0':
- resolution: {integrity: sha512-1pfQulNUYNf1Tk/svbfjfkLBS36zsuph6m+B6gDkPEivFmso/XnRgwDvjAx80WNtiHnmeNjIXdF7Gos8+OLHqQ==}
+ '@algolia/client-abtesting@5.34.0':
+ resolution: {integrity: sha512-d6ardhDtQsnMpyr/rPrS3YuIE9NYpY4rftkC7Ap9tyuhZ/+V3E/LH+9uEewPguKzVqduApdwJzYq2k+vAXVEbQ==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-analytics@5.25.0':
- resolution: {integrity: sha512-AFbG6VDJX/o2vDd9hqncj1B6B4Tulk61mY0pzTtzKClyTDlNP0xaUiEKhl6E7KO9I/x0FJF5tDCm0Hn6v5x18A==}
+ '@algolia/client-analytics@5.34.0':
+ resolution: {integrity: sha512-WXIByjHNA106JO1Dj6b4viSX/yMN3oIB4qXr2MmyEmNq0MgfuPfPw8ayLRIZPa9Dp27hvM3G8MWJ4RG978HYFw==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-common@5.25.0':
- resolution: {integrity: sha512-il1zS/+Rc6la6RaCdSZ2YbJnkQC6W1wiBO8+SH+DE6CPMWBU6iDVzH0sCKSAtMWl9WBxoN6MhNjGBnCv9Yy2bA==}
+ '@algolia/client-common@5.34.0':
+ resolution: {integrity: sha512-JeN1XJLZIkkv6yK0KT93CIXXk+cDPUGNg5xeH4fN9ZykYFDWYRyqgaDo+qvg4RXC3WWkdQ+hogQuuCk4Y3Eotw==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-insights@5.25.0':
- resolution: {integrity: sha512-blbjrUH1siZNfyCGeq0iLQu00w3a4fBXm0WRIM0V8alcAPo7rWjLbMJMrfBtzL9X5ic6wgxVpDADXduGtdrnkw==}
+ '@algolia/client-insights@5.34.0':
+ resolution: {integrity: sha512-gdFlcQa+TWXJUsihHDlreFWniKPFIQ15i5oynCY4m9K3DCex5g5cVj9VG4Hsquxf2t6Y0yv8w6MvVTGDO8oRLw==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-personalization@5.25.0':
- resolution: {integrity: sha512-aywoEuu1NxChBcHZ1pWaat0Plw7A8jDMwjgRJ00Mcl7wGlwuPt5dJ/LTNcg3McsEUbs2MBNmw0ignXBw9Tbgow==}
+ '@algolia/client-personalization@5.34.0':
+ resolution: {integrity: sha512-g91NHhIZDkh1IUeNtsUd8V/ZxuBc2ByOfDqhCkoQY3Z/mZszhpn3Czn6AR5pE81fx793vMaiOZvQVB5QttArkQ==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-query-suggestions@5.25.0':
- resolution: {integrity: sha512-a/W2z6XWKjKjIW1QQQV8PTTj1TXtaKx79uR3NGBdBdGvVdt24KzGAaN7sCr5oP8DW4D3cJt44wp2OY/fZcPAVA==}
+ '@algolia/client-query-suggestions@5.34.0':
+ resolution: {integrity: sha512-cvRApDfFrlJ3Vcn37U4Nd/7S6T8cx7FW3mVLJPqkkzixv8DQ/yV+x4VLirxOtGDdq3KohcIbIGWbg1QuyOZRvQ==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-search@5.25.0':
- resolution: {integrity: sha512-9rUYcMIBOrCtYiLX49djyzxqdK9Dya/6Z/8sebPn94BekT+KLOpaZCuc6s0Fpfq7nx5J6YY5LIVFQrtioK9u0g==}
+ '@algolia/client-search@5.34.0':
+ resolution: {integrity: sha512-m9tK4IqJmn+flEPRtuxuHgiHmrKV0su5fuVwVpq8/es4DMjWMgX1a7Lg1PktvO8AbKaTp9kTtBAPnwXpuCwmEg==}
engines: {node: '>= 14.0.0'}
- '@algolia/ingestion@1.25.0':
- resolution: {integrity: sha512-jJeH/Hk+k17Vkokf02lkfYE4A+EJX+UgnMhTLR/Mb+d1ya5WhE+po8p5a/Nxb6lo9OLCRl6w3Hmk1TX1e9gVbQ==}
+ '@algolia/ingestion@1.34.0':
+ resolution: {integrity: sha512-2rxy4XoeRtIpzxEh5u5UgDC5HY4XbNdjzNgFx1eDrfFkSHpEVjirtLhISMy2N5uSFqYu1uUby5/NC1Soq8J7iw==}
engines: {node: '>= 14.0.0'}
- '@algolia/monitoring@1.25.0':
- resolution: {integrity: sha512-Ls3i1AehJ0C6xaHe7kK9vPmzImOn5zBg7Kzj8tRYIcmCWVyuuFwCIsbuIIz/qzUf1FPSWmw0TZrGeTumk2fqXg==}
+ '@algolia/monitoring@1.34.0':
+ resolution: {integrity: sha512-OJiDhlJX8ZdWAndc50Z6aUEW/YmnhFK2ul3rahMw5/c9Damh7+oY9SufoK2LimJejy+65Qka06YPG29v2G/vww==}
engines: {node: '>= 14.0.0'}
- '@algolia/recommend@5.25.0':
- resolution: {integrity: sha512-79sMdHpiRLXVxSjgw7Pt4R1aNUHxFLHiaTDnN2MQjHwJ1+o3wSseb55T9VXU4kqy3m7TUme3pyRhLk5ip/S4Mw==}
+ '@algolia/recommend@5.34.0':
+ resolution: {integrity: sha512-fzNQZAdVxu/Gnbavy8KW5gurApwdYcPW6+pjO7Pw8V5drCR3eSqnOxSvp79rhscDX8ezwqMqqK4F3Hsq+KpRzg==}
engines: {node: '>= 14.0.0'}
- '@algolia/requester-browser-xhr@5.25.0':
- resolution: {integrity: sha512-JLaF23p1SOPBmfEqozUAgKHQrGl3z/Z5RHbggBu6s07QqXXcazEsub5VLonCxGVqTv6a61AAPr8J1G5HgGGjEw==}
+ '@algolia/requester-browser-xhr@5.34.0':
+ resolution: {integrity: sha512-gEI0xjzA/xvMpEdYmgQnf6AQKllhgKRtnEWmwDrnct+YPIruEHlx1dd7nRJTy/33MiYcCxkB4khXpNrHuqgp3Q==}
engines: {node: '>= 14.0.0'}
- '@algolia/requester-fetch@5.25.0':
- resolution: {integrity: sha512-rtzXwqzFi1edkOF6sXxq+HhmRKDy7tz84u0o5t1fXwz0cwx+cjpmxu/6OQKTdOJFS92JUYHsG51Iunie7xbqfQ==}
+ '@algolia/requester-fetch@5.34.0':
+ resolution: {integrity: sha512-5SwGOttpbACT4jXzfSJ3mnTcF46SVNSnZ1JjxC3qBa3qKi4U0CJGzuVVy3L798u8dG5H0SZ2MAB5v7180Gnqew==}
engines: {node: '>= 14.0.0'}
- '@algolia/requester-node-http@5.25.0':
- resolution: {integrity: sha512-ZO0UKvDyEFvyeJQX0gmZDQEvhLZ2X10K+ps6hViMo1HgE2V8em00SwNsQ+7E/52a+YiBkVWX61pJJJE44juDMQ==}
+ '@algolia/requester-node-http@5.34.0':
+ resolution: {integrity: sha512-409XlyIyEXrxyGjWxd0q5RASizHSRVUU0AXPCEdqnbcGEzbCgL1n7oYI8YxzE/RqZLha+PNwWCcTVn7EE5tyyQ==}
engines: {node: '>= 14.0.0'}
- '@ark/schema@0.46.0':
- resolution: {integrity: sha512-c2UQdKgP2eqqDArfBqQIJppxJHvNNXuQPeuSPlDML4rjw+f1cu0qAlzOG4b8ujgm9ctIDWwhpyw6gjG5ledIVQ==}
-
- '@ark/util@0.46.0':
- resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==}
-
- '@babel/code-frame@7.27.1':
- resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.27.1':
- resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
- engines: {node: '>=6.9.0'}
-
'@biomejs/biome@1.9.4':
resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
engines: {node: '>=14.21.3'}
@@ -471,24 +460,24 @@ packages:
'@brillout/import@0.2.6':
resolution: {integrity: sha512-1GUTmADc8trUC1YSW2lp9r6PmwluMoEyHajnE1kxVdbKGD0wJOlq/DvTWMUqLtBDCnQR+n//qgMtz6HwA/lotA==}
- '@brillout/json-serializer@0.5.15':
- resolution: {integrity: sha512-iLAyV1HNC3nG07ypBwCJohFrajY1HeZdfBBgGuRtMH/JPddgG9bPmoSI18A1RBx67vRmY6/8rgisjR5YfTvZHA==}
+ '@brillout/json-serializer@0.5.16':
+ resolution: {integrity: sha512-X9CujUMruFxH35cyFgzebg3biBBRz4ouMmjJZwIa04D188du0V47QFcIK7YXKl3z0pue+9NccQ+1zaxhB49r1Q==}
'@brillout/part-regex@0.1.4':
resolution: {integrity: sha512-PQy5LfRmIueEfGwhvMedsnj6KulDfxlfvUaTsUchBqA7nTge4C7taG/V6np2uCHVxxE4+cSmwM4COn9aNcMn7g==}
- '@brillout/picocolors@1.0.26':
- resolution: {integrity: sha512-oJF92OEpzunaJyaEWXuS4PWY0k8JsqNO18kMf5hIwvsh+tyhbv+UwAnPPauSlO2eyvMSciui+YFKV9DEzTpmGA==}
+ '@brillout/picocolors@1.0.28':
+ resolution: {integrity: sha512-FBsirUdUlmjmeUlEuqfnUoKAZUt+d0VfMVBYUsFQrDFEV9Rm/QDyG69PSQtQbI6SZQNiZuAWuyhE5USflzx6iQ==}
- '@brillout/release-me@0.4.3':
- resolution: {integrity: sha512-zZzzOT34JVDOo8pe+AhJODAajzMLitfUOZoZotBXTAVGzpcOWcoHM1F4VDih1FW8GOrKhs/r48nhem5AmMWm8Q==}
+ '@brillout/release-me@0.4.8':
+ resolution: {integrity: sha512-3WtVJNyEU8EINekZ51sYEB4pGHcZTM7Ljip/vkUDguwTwe2AY6DjSd4Vgqs84a7H7u5j0OrXDAiMAmCti4QSfQ==}
hasBin: true
'@brillout/require-shim@0.1.2':
resolution: {integrity: sha512-3I4LRHnVZXoSAsEoni5mosq9l6eiJED58d9V954W4CIZ88AUfYBanWGBGbJG3NztaRTpFHEA6wB3Hn93BmmJdg==}
- '@brillout/test-e2e@0.6.8':
- resolution: {integrity: sha512-U22qsQSnPeRPrqlrXk4FgihUpkbziO2neD6kK8mbEq9pG+qivfU1fkLbTGrmjJ7b+L8keqD+xVp+zKuGufHVeA==}
+ '@brillout/test-e2e@0.6.14':
+ resolution: {integrity: sha512-iOalgODAMl93f3v6MmQ25fNzhFp6UJtNRyl1OdREj/FMGNIi9tHl5hesmJXh24IME0NoJVeTJUFyxI49wgIHQA==}
hasBin: true
'@brillout/vite-plugin-server-entry@0.7.9':
@@ -498,53 +487,65 @@ packages:
resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==}
engines: {node: '>=18.0.0'}
- '@cloudflare/unenv-preset@2.3.1':
- resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==}
+ '@cloudflare/unenv-preset@2.3.3':
+ resolution: {integrity: sha512-/M3MEcj3V2WHIRSW1eAQBPRJ6JnGQHc6JKMAPLkDb7pLs3m6X9ES/+K3ceGqxI6TKeF32AWAi7ls0AYzVxCP0A==}
peerDependencies:
- unenv: 2.0.0-rc.15
- workerd: ^1.20250320.0
+ unenv: 2.0.0-rc.17
+ workerd: ^1.20250508.0
peerDependenciesMeta:
workerd:
optional: true
- '@cloudflare/vite-plugin@1.2.1':
- resolution: {integrity: sha512-enOOCxVEAlhisCvpXE0RZA5Wk5JYIj/qv33yoOclLrp9A6DLr416Ku/J/60BxMbyv4JgjpFvN2fGNdcfT7ERVw==}
+ '@cloudflare/vite-plugin@1.10.0':
+ resolution: {integrity: sha512-pdlz+GdNmL+8aVz8b8GXRHs33oI0DQpZvWNFyuMeN1MeHq/z+DOLGBU63YZC8S2hkdxC2rQQkNnRtsRCXfloWw==}
peerDependencies:
- vite: ^6.1.0
- wrangler: ^3.101.0 || ^4.0.0
+ vite: ^6.1.0 || ^7.0.0
+ wrangler: ^4.25.1
- '@cloudflare/workerd-darwin-64@1.20250508.0':
- resolution: {integrity: sha512-9x09MrA9Y5RQs3zqWvWns8xHgM2pVNXWpeJ+3hQYu4PrwPFZXtTD6b/iMmOnlYKzINlREq1RGeEybMFyWEUlUg==}
+ '@cloudflare/workerd-darwin-64@1.20250712.0':
+ resolution: {integrity: sha512-M6S6a/LQ0Jb0R+g0XhlYi1adGifvYmxA5mD/i9TuZZgjs2bIm5ELuka/n3SCnI98ltvlx3HahRaHagAtOilsFg==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20250508.0':
- resolution: {integrity: sha512-0Ili+nE2LLRzYue/yPc1pepSyNNg6LxR3/ng/rlQzVQUxPXIXldHFkJ/ynsYwQnAcf6OxasSi/kbTm6yvDoSAQ==}
+ '@cloudflare/workerd-darwin-arm64@1.20250712.0':
+ resolution: {integrity: sha512-7sFzn6rvAcnLy7MktFL42dYtzL0Idw/kiUmNf2P3TvsBRoShhLK5ZKhbw+NAhvU8e4pXWm5lkE0XmpieA0zNjw==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20250508.0':
- resolution: {integrity: sha512-5saVrZ3uVwYxvBa7BaonXjeqB6X0YF3ak05qvBaWcmZ3FNmnarMm2W8842cnbhnckDVBpB/iDo51Sy6Y7y1jcw==}
+ '@cloudflare/workerd-linux-64@1.20250712.0':
+ resolution: {integrity: sha512-EFRrGe/bqK7NHtht7vNlbrDpfvH3eRvtJOgsTpEQEysDjVmlK6pVJxSnLy9Hg1zlLY15IfhfGC+K2qisseHGJQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20250508.0':
- resolution: {integrity: sha512-muQe1pkxRi3eaq1Q417xvfGd2SlktbLTzNhT5Yftsx8OecWrYuB8i4ttR6Nr5ER06bfEj0FqQjqJJhcp6wLLUQ==}
+ '@cloudflare/workerd-linux-arm64@1.20250712.0':
+ resolution: {integrity: sha512-rG8JUleddhUHQVwpXOYv0VbL0S9kOtR9PNKecgVhFpxEhC8aTeg2HNBBjo8st7IfcUvY8WaW3pD3qdAMZ05UwQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20250508.0':
- resolution: {integrity: sha512-EJj8iTWFMqjgvZUxxNvzK7frA1JMFi3y/9eDIdZPL/OaQh3cmk5Lai5DCXsKYUxfooMBZWYTp53zOLrvuJI8VQ==}
+ '@cloudflare/workerd-windows-64@1.20250712.0':
+ resolution: {integrity: sha512-qS8H5RCYwE21Om9wo5/F807ClBJIfknhuLBj16eYxvJcj9JqgAKWi12BGgjyGxHuJJjeoQ63lr4wHAdbFntDDg==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
- '@cloudflare/workers-types@4.20250515.0':
- resolution: {integrity: sha512-KoHFMH04gOXp3KEI+wrFIU+3ZfoSXnwqZTpybNQjalHoN3pWjtWBb/030cCRAZ639YX+DAHAxNF7AvEYGz1oaA==}
+ '@cloudflare/workers-types@4.20250722.0':
+ resolution: {integrity: sha512-pTY+A07DTSacgUBYcVEEb78/KG7THdcRpPqXLeH/A/LHHobAddgN4zyXBldsoZuzy7bD9tZYJW+wkcyR4k7fDA==}
+
+ '@conventional-changelog/git-client@2.5.1':
+ resolution: {integrity: sha512-lAw7iA5oTPWOLjiweb7DlGEMDEvzqzLLa6aWOly2FSZ64IwLE8T458rC+o+WvI31Doz6joM7X2DoNog7mX8r4A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ conventional-commits-filter: ^5.0.0
+ conventional-commits-parser: ^6.1.0
+ peerDependenciesMeta:
+ conventional-commits-filter:
+ optional: true
+ conventional-commits-parser:
+ optional: true
'@cspotcode/source-map-support@0.8.1':
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
@@ -570,25 +571,13 @@ packages:
search-insights:
optional: true
- '@elysiajs/node@1.2.6':
- resolution: {integrity: sha512-qauTs0YNLvfSyqW8k8pDCazd3nPQtFOeDH/cSz1wBhAGn1HL1PQlywnK6V0+bOGemkKlxLIjhmvbHxGrNzZMSg==}
+ '@elysiajs/node@1.3.0':
+ resolution: {integrity: sha512-AA9rnL/FOBklxtJjFpUDBVZLuiKddDaV1KgnKawHzj5VgN99SzE+V0h1MOhp+8jlo2KQQJO/3aD3upyGgrfohQ==}
peerDependencies:
- bufferutil: '>= 4.0.1'
- elysia: '>= 1.2.7'
- formidable: '>= 3.5.2'
- ws: '>= 8.18.0'
- peerDependenciesMeta:
- bufferutil:
- optional: true
-
- '@emnapi/core@1.4.3':
- resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==}
-
- '@emnapi/runtime@1.4.3':
- resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
+ elysia: '>= 1.3.3'
- '@emnapi/wasi-threads@1.0.2':
- resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==}
+ '@emnapi/runtime@1.4.5':
+ resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==}
'@esbuild/aix-ppc64@0.23.1':
resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
@@ -602,6 +591,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.25.8':
+ resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.23.1':
resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
engines: {node: '>=18'}
@@ -614,6 +609,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.25.8':
+ resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.23.1':
resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
engines: {node: '>=18'}
@@ -626,6 +627,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.25.8':
+ resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.23.1':
resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
engines: {node: '>=18'}
@@ -638,6 +645,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.25.8':
+ resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.23.1':
resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
engines: {node: '>=18'}
@@ -650,6 +663,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.25.8':
+ resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.23.1':
resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
engines: {node: '>=18'}
@@ -662,6 +681,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.25.8':
+ resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.23.1':
resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
engines: {node: '>=18'}
@@ -674,6 +699,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.25.8':
+ resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.23.1':
resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
engines: {node: '>=18'}
@@ -686,6 +717,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.25.8':
+ resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.23.1':
resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
engines: {node: '>=18'}
@@ -698,6 +735,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.25.8':
+ resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.23.1':
resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
engines: {node: '>=18'}
@@ -710,6 +753,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.25.8':
+ resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.23.1':
resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
engines: {node: '>=18'}
@@ -722,6 +771,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.25.8':
+ resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.23.1':
resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
engines: {node: '>=18'}
@@ -734,6 +789,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.25.8':
+ resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.23.1':
resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
engines: {node: '>=18'}
@@ -746,6 +807,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.25.8':
+ resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.23.1':
resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
engines: {node: '>=18'}
@@ -758,6 +825,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.25.8':
+ resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.23.1':
resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
engines: {node: '>=18'}
@@ -770,6 +843,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.25.8':
+ resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.23.1':
resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
engines: {node: '>=18'}
@@ -782,6 +861,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.25.8':
+ resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.23.1':
resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
engines: {node: '>=18'}
@@ -794,12 +879,24 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.25.8':
+ resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-arm64@0.25.4':
resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.25.8':
+ resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.23.1':
resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
engines: {node: '>=18'}
@@ -812,6 +909,12 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.25.8':
+ resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.23.1':
resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
engines: {node: '>=18'}
@@ -824,6 +927,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.25.8':
+ resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.23.1':
resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
engines: {node: '>=18'}
@@ -836,6 +945,18 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.25.8':
+ resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.25.8':
+ resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/sunos-x64@0.23.1':
resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
engines: {node: '>=18'}
@@ -848,6 +969,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.25.8':
+ resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.23.1':
resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
engines: {node: '>=18'}
@@ -860,6 +987,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.25.8':
+ resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.23.1':
resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
engines: {node: '>=18'}
@@ -872,6 +1005,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.25.8':
+ resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.23.1':
resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
engines: {node: '>=18'}
@@ -884,15 +1023,17 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.25.8':
+ resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@fastify/ajv-compiler@4.0.2':
resolution: {integrity: sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==}
- '@fastify/busboy@2.1.1':
- resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
- engines: {node: '>=14'}
-
- '@fastify/error@4.1.0':
- resolution: {integrity: sha512-KeFcciOr1eo/YvIXHP65S94jfEEqn1RxTRBT1aJaHxY5FK0/GDXYozsQMMWlZoHgi8i0s+YtrLsgj/JkUUjSkQ==}
+ '@fastify/error@4.2.0':
+ resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==}
'@fastify/fast-json-stringify-compiler@5.0.3':
resolution: {integrity: sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==}
@@ -922,16 +1063,12 @@ packages:
resolution: {integrity: sha512-AgJgKLooZyQnzMfoFg5Mo/aHM+HGBC9ExpXIjNqGimYTRgNbL/K7X5EM1kR2JY90BNKk9lo6Usq1T/nWFdT7TQ==}
hasBin: true
- '@hono/node-server@1.14.1':
- resolution: {integrity: sha512-vmbuM+HPinjWzPe7FFPWMMQMsbKE9gDPhaH0FFdqbGpkT5lp++tcWDTxwBl5EgS5y6JVgIaCdjeHRfQ4XRBRjQ==}
+ '@hono/node-server@1.17.1':
+ resolution: {integrity: sha512-SY79W/C+2b1MyAzmIcV32Q47vO1b5XwLRwj8S9N6Jr5n1QCkIfAIH6umOSgqWZ4/v67hg6qq8Ha5vZonVidGsg==}
engines: {node: '>=18.14.1'}
peerDependencies:
hono: ^4
- '@hutson/parse-repository-url@5.0.0':
- resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==}
- engines: {node: '>=10.13.0'}
-
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -1041,23 +1178,18 @@ packages:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
- '@jridgewell/gen-mapping@0.3.8':
- resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
- engines: {node: '>=6.0.0'}
+ '@jridgewell/gen-mapping@0.3.12':
+ resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ '@jridgewell/sourcemap-codec@1.5.4':
+ resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
- '@jridgewell/trace-mapping@0.3.25':
- resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ '@jridgewell/trace-mapping@0.3.29':
+ resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
@@ -1082,13 +1214,6 @@ packages:
'@mjackson/node-fetch-server@0.6.1':
resolution: {integrity: sha512-9ZJnk/DJjt805uv5PPv11haJIW+HHf3YEEyVXv+8iLQxLD/iXA68FH220XoiTPBC4gCg5q+IMadDw8qPqlA5wg==}
- '@napi-rs/wasm-runtime@0.2.9':
- resolution: {integrity: sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==}
-
- '@noble/hashes@1.8.0':
- resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
- engines: {node: ^14.21.3 || >=16}
-
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -1101,68 +1226,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@oxc-transform/binding-darwin-arm64@0.64.0':
- resolution: {integrity: sha512-SphSpVk2TcJ1bGfv/kStrSGrKyA5wLuIjuyK0/Im8ZJZ2zAolJdm4WFZUDI5NZZskwcqoB2qrUQFr9pV75N+BA==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- '@oxc-transform/binding-darwin-x64@0.64.0':
- resolution: {integrity: sha512-MDTCesIxze+lVc33cZGHZE5alWUL5dbhQGM4i1uobHbll7nuLBO8ymZZ7dQxCKJztkzQOU+Ib+TPtdxIWkcnqQ==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [darwin]
-
- '@oxc-transform/binding-linux-arm-gnueabihf@0.64.0':
- resolution: {integrity: sha512-1emYdqi1lJscGi4F75Zgr24+l5v6o/TawUDVyrZ2JPW0g4F8V22udbsN6f0cFRwspTiBtxCfFMCnK/bdgcQOeQ==}
- engines: {node: '>=14.0.0'}
- cpu: [arm]
- os: [linux]
-
- '@oxc-transform/binding-linux-arm64-gnu@0.64.0':
- resolution: {integrity: sha512-OxIEd1bk9fEmSgisxD525+2/7XZ6ex9vSU/FZhalv/tEsbrMA7sxsu/cl0zfKVVZFkI2uZ2r93RLeh/kv0VznQ==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [linux]
-
- '@oxc-transform/binding-linux-arm64-musl@0.64.0':
- resolution: {integrity: sha512-kTtZBREwmXMMgsMdFWU6/zZPavbeFwXHf32MY07tIBEn6kRz9Gg6Xsl7V1s0PVMTcYVY+6IZ5idZ1ODAdt1VkQ==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [linux]
-
- '@oxc-transform/binding-linux-x64-gnu@0.64.0':
- resolution: {integrity: sha512-zHe0oT6xpCECWFdN2Uovut/36RJ6fA0IZwZEHaHeGHYbp8UoCrvZAXoh5MYa/hadYpsoVV13b5ZHBEJk7DuMjg==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [linux]
-
- '@oxc-transform/binding-linux-x64-musl@0.64.0':
- resolution: {integrity: sha512-kxiziQsB+ic5j2SCMV0pzcesA+QFaufTmNQbQznu7XFy+sFjHHkYfS3109D40gLnNtmlaIyTHj+1Ooka7awKhA==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [linux]
-
- '@oxc-transform/binding-wasm32-wasi@0.64.0':
- resolution: {integrity: sha512-YJtTvi3DYxEZ7mIZaIEaLGL0ECCiJWHxiA9Qz2EpswbRCfXX/l7YSODs3uvG/thlCFhnzPLIM8O6tIHjpHIWYA==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
- '@oxc-transform/binding-win32-arm64-msvc@0.64.0':
- resolution: {integrity: sha512-X2gDEzZFrfM65+mc4VYBfxdVPcqcxS5RZgc+dPcz8Xc14t/pmdqMeEJDTt0zKnL6T+42kPZHdybLwpgsuBdRDA==}
- engines: {node: '>=14.0.0'}
- cpu: [arm64]
- os: [win32]
-
- '@oxc-transform/binding-win32-x64-msvc@0.64.0':
- resolution: {integrity: sha512-QC2Nx0GFuUNGU5vmWgCym0TLIHFdoVvdpTWwcbZtWp8pFbQhvYms5CWmZm+wlCqAGPp5aYm2aLmp9hE8dM1c9Q==}
- engines: {node: '>=14.0.0'}
- cpu: [x64]
- os: [win32]
-
- '@paralleldrive/cuid2@2.2.2':
- resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
-
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -1170,6 +1233,18 @@ packages:
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
+ '@poppinss/colors@4.1.5':
+ resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==}
+
+ '@poppinss/dumper@0.6.4':
+ resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==}
+
+ '@poppinss/exception@1.2.2':
+ resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==}
+
+ '@rolldown/pluginutils@1.0.0-beta.27':
+ resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
+
'@rollup/plugin-replace@6.0.2':
resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==}
engines: {node: '>=14.0.0'}
@@ -1179,8 +1254,8 @@ packages:
rollup:
optional: true
- '@rollup/pluginutils@5.1.4':
- resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
+ '@rollup/pluginutils@5.2.0':
+ resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -1188,103 +1263,103 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.38.0':
- resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==}
+ '@rollup/rollup-android-arm-eabi@4.45.1':
+ resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.38.0':
- resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==}
+ '@rollup/rollup-android-arm64@4.45.1':
+ resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.38.0':
- resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==}
+ '@rollup/rollup-darwin-arm64@4.45.1':
+ resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.38.0':
- resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==}
+ '@rollup/rollup-darwin-x64@4.45.1':
+ resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.38.0':
- resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==}
+ '@rollup/rollup-freebsd-arm64@4.45.1':
+ resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.38.0':
- resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==}
+ '@rollup/rollup-freebsd-x64@4.45.1':
+ resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.38.0':
- resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
+ resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.38.0':
- resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==}
+ '@rollup/rollup-linux-arm-musleabihf@4.45.1':
+ resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.38.0':
- resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==}
+ '@rollup/rollup-linux-arm64-gnu@4.45.1':
+ resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.38.0':
- resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==}
+ '@rollup/rollup-linux-arm64-musl@4.45.1':
+ resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.38.0':
- resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==}
+ '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
+ resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.38.0':
- resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
+ resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.38.0':
- resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.45.1':
+ resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.38.0':
- resolution: {integrity: sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==}
+ '@rollup/rollup-linux-riscv64-musl@4.45.1':
+ resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.38.0':
- resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==}
+ '@rollup/rollup-linux-s390x-gnu@4.45.1':
+ resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.38.0':
- resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==}
+ '@rollup/rollup-linux-x64-gnu@4.45.1':
+ resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.38.0':
- resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==}
+ '@rollup/rollup-linux-x64-musl@4.45.1':
+ resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.38.0':
- resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==}
+ '@rollup/rollup-win32-arm64-msvc@4.45.1':
+ resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.38.0':
- resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==}
+ '@rollup/rollup-win32-ia32-msvc@4.45.1':
+ resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.38.0':
- resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==}
+ '@rollup/rollup-win32-x64-msvc@4.45.1':
+ resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==}
cpu: [x64]
os: [win32]
@@ -1294,71 +1369,86 @@ packages:
'@shikijs/transformers@1.2.0':
resolution: {integrity: sha512-xKn7DtA65DQV4FOfYsrvqM80xOy2xuXnxWWKsZmHv1VII/IOuDUDsWDu3KnpeLH6wqNJWp1GRoNUsHR1aw/VhQ==}
- '@sinclair/typebox@0.34.33':
- resolution: {integrity: sha512-5HAV9exOMcXRUxo+9iYB5n09XxzCXnfy4VTNW4xnDv+FgjzAGY989C28BIdljKqmF+ZltUwujE3aossvcVtq6g==}
+ '@simple-libs/child-process-utils@1.0.1':
+ resolution: {integrity: sha512-3nWd8irxvDI6v856wpPCHZ+08iQR0oHTZfzAZmnbsLzf+Sf1odraP6uKOHDZToXq3RPRV/LbqGVlSCogm9cJjg==}
+ engines: {node: '>=18'}
+
+ '@simple-libs/stream-utils@1.1.0':
+ resolution: {integrity: sha512-6rsHTjodIn/t90lv5snQjRPVtOosM7Vp0AKdrObymq45ojlgVwnpAqdc+0OBBrpEiy31zZ6/TKeIVqV1HwvnuQ==}
+ engines: {node: '>=18'}
+
+ '@sinclair/typebox@0.34.38':
+ resolution: {integrity: sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==}
+
+ '@sindresorhus/is@7.0.2':
+ resolution: {integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==}
+ engines: {node: '>=18'}
- '@swc/core-darwin-arm64@1.11.24':
- resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==}
+ '@speed-highlight/core@1.2.7':
+ resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==}
+
+ '@swc/core-darwin-arm64@1.13.1':
+ resolution: {integrity: sha512-zO6SW/jSMTUORPm6dUZFPUwf+EFWZsaXWMGXadRG6akCofYpoQb8pcY2QZkVr43z8TMka6BtXpyoD/DJ0iOPHQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
- '@swc/core-darwin-x64@1.11.24':
- resolution: {integrity: sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==}
+ '@swc/core-darwin-x64@1.13.1':
+ resolution: {integrity: sha512-8RjaTZYxrlYKE5PgzZYWSOT4mAsyhIuh30Nu4dnn/2r0Ef68iNCbvX4ynGnFMhOIhqunjQbJf+mJKpwTwdHXhw==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
- '@swc/core-linux-arm-gnueabihf@1.11.24':
- resolution: {integrity: sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==}
+ '@swc/core-linux-arm-gnueabihf@1.13.1':
+ resolution: {integrity: sha512-jEqK6pECs2m4BpL2JA/4CCkq04p6iFOEtVNXTisO+lJ3zwmxlnIEm9UfJZG6VSu8GS9MHRKGB0ieZ1tEdN1qDA==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
- '@swc/core-linux-arm64-gnu@1.11.24':
- resolution: {integrity: sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==}
+ '@swc/core-linux-arm64-gnu@1.13.1':
+ resolution: {integrity: sha512-PbkuIOYXO/gQbWQ7NnYIwm59ygNqmUcF8LBeoKvxhx1VtOwE+9KiTfoplOikkPLhMiTzKsd8qentTslbITIg+Q==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
- '@swc/core-linux-arm64-musl@1.11.24':
- resolution: {integrity: sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==}
+ '@swc/core-linux-arm64-musl@1.13.1':
+ resolution: {integrity: sha512-JaqFdBCarIBKiMu5bbAp+kWPMNGg97ej+7KzbKOzWP5pRptqKi86kCDZT3WmjPe8hNG6dvBwbm7Y8JNry5LebQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
- '@swc/core-linux-x64-gnu@1.11.24':
- resolution: {integrity: sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==}
+ '@swc/core-linux-x64-gnu@1.13.1':
+ resolution: {integrity: sha512-t4cLkku10YECDaakWUH0452WJHIZtrLPRwezt6BdoMntVMwNjvXRX7C8bGuYcKC3YxRW7enZKFpozLhQIQ37oA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
- '@swc/core-linux-x64-musl@1.11.24':
- resolution: {integrity: sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==}
+ '@swc/core-linux-x64-musl@1.13.1':
+ resolution: {integrity: sha512-fSMwZOaG+3ukUucbEbzz9GhzGhUhXoCPqHe9qW0/Vc2IZRp538xalygKyZynYweH5d9EHux1aj3+IO8/xBaoiA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
- '@swc/core-win32-arm64-msvc@1.11.24':
- resolution: {integrity: sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==}
+ '@swc/core-win32-arm64-msvc@1.13.1':
+ resolution: {integrity: sha512-tweCXK/79vAwj1NhAsYgICy8T1z2QEairmN2BFEBYFBFNMEB1iI1YlXwBkBtuihRvgZrTh1ORusKa4jLYzLCZA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
- '@swc/core-win32-ia32-msvc@1.11.24':
- resolution: {integrity: sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==}
+ '@swc/core-win32-ia32-msvc@1.13.1':
+ resolution: {integrity: sha512-zi7hO9D+2R2yQN9D7T10/CAI9KhuXkNkz8tcJOW6+dVPtAk/gsIC5NoGPELjgrAlLL9CS38ZQpLDslLfpP15ng==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
- '@swc/core-win32-x64-msvc@1.11.24':
- resolution: {integrity: sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==}
+ '@swc/core-win32-x64-msvc@1.13.1':
+ resolution: {integrity: sha512-KubYjzqs/nz3H69ncX/XHKsC8c1xqc7UvonQAj26BhbL22HBsqdAaVutZ+Obho6RMpd3F5qQ95ldavUTWskRrw==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/core@1.11.24':
- resolution: {integrity: sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==}
+ '@swc/core@1.13.1':
+ resolution: {integrity: sha512-jEKKErLC6uwSqA+p6bmZR08usZM5Fpc+HdEu5CAzvye0q43yf1si1kjhHEa9XMkz0A2SAaal3eKCg/YYmtOsCA==}
engines: {node: '>=10'}
peerDependencies:
'@swc/helpers': '>=0.5.17'
@@ -1369,8 +1459,8 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/types@0.1.21':
- resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==}
+ '@swc/types@0.1.23':
+ resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==}
'@tokenizer/inflate@0.2.7':
resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==}
@@ -1379,14 +1469,11 @@ packages:
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
- '@tybys/wasm-util@0.9.0':
- resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
-
- '@types/body-parser@1.19.5':
- resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
+ '@types/body-parser@1.19.6':
+ resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
- '@types/bun@1.2.13':
- resolution: {integrity: sha512-u6vXep/i9VBxoJl3GjZsl/BFIsvML8DfVDO0RYLEwtSZSp981kEO1V5NwRcO1CPJ7AmvpbnDCiMKo3JvbDEjAg==}
+ '@types/bun@1.2.19':
+ resolution: {integrity: sha512-d9ZCmrH3CJ2uYKXQIUuZ/pUnTqIvLDS0SK7pFmbx8ma+ziH/FRMoAq5bYpRG7y+w1gl+HgyNZbtqgMq4W4e2Lg==}
'@types/connect@3.4.38':
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
@@ -1400,20 +1487,20 @@ packages:
'@types/estree-jsx@1.0.5':
resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
- '@types/estree@1.0.7':
- resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- '@types/express-serve-static-core@5.0.6':
- resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==}
+ '@types/express-serve-static-core@5.0.7':
+ resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==}
- '@types/express@5.0.2':
- resolution: {integrity: sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==}
+ '@types/express@5.0.3':
+ resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==}
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
- '@types/http-errors@2.0.4':
- resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
+ '@types/http-errors@2.0.5':
+ resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
@@ -1427,14 +1514,14 @@ packages:
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
- '@types/node@20.17.47':
- resolution: {integrity: sha512-3dLX0Upo1v7RvUimvxLeXqwrfyKxUINk0EAM83swP2mlSUcwV73sZy8XhNz8bcZ3VbsfQyC/y6jRdL5tgCNpDQ==}
+ '@types/node@20.19.9':
+ resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
- '@types/prop-types@15.7.14':
- resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
+ '@types/prop-types@15.7.15':
+ resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
'@types/qs@6.14.0':
resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
@@ -1447,14 +1534,14 @@ packages:
peerDependencies:
'@types/react': ^18.0.0
- '@types/react@18.3.21':
- resolution: {integrity: sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw==}
+ '@types/react@18.3.23':
+ resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==}
- '@types/send@0.17.4':
- resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
+ '@types/send@0.17.5':
+ resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==}
- '@types/serve-static@1.15.7':
- resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
+ '@types/serve-static@1.15.8':
+ resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==}
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -1465,22 +1552,22 @@ packages:
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
- '@universal-middleware/cloudflare@0.4.8':
- resolution: {integrity: sha512-d6wDQYFdKPCXt+gnuN3eb3chMuY3K8yYvxRVYTDTxOm5kRH1/sxDBAchvoeFaPTg5j8gps53nBQnVsNW6kBdGA==}
+ '@universal-middleware/cloudflare@0.4.10':
+ resolution: {integrity: sha512-ZY+N0KKoH+H+BB3wsaD5yqTiiFtX7uklPyCBqGLqEijOtZA5ZgFIExfWDjiIUjezUBAbRB8kUZ/WlPITY+hyTg==}
'@universal-middleware/compress@0.2.30':
resolution: {integrity: sha512-Qk6Yt3DOHxYYlS9QGF+VJQwCLXB4BSKuJZ9/UpDp+x8VOq//j+aJuEg8H2VAo2XEBg/amqPmw+gIesFKTLXEWw==}
- '@universal-middleware/core@0.4.7':
- resolution: {integrity: sha512-Q+ZwiQAm/yZVmtJCZx6U4yLQF10AQ9URcCGxcIdUgLoEOHAg+uADcxAliKfJv463kVECnLI2ZamsRDDOSjc36A==}
+ '@universal-middleware/core@0.4.9':
+ resolution: {integrity: sha512-nc6quPkq+y4+nTSwBq6Jem5wSgVGm+rkqMGPUQNRlQZgsbaOTtHEfr0FkbfJ6f4ePuqjOmMf4Zc9OaGumLVmEw==}
peerDependencies:
- '@cloudflare/workers-types': ^4.20250327.0
+ '@cloudflare/workers-types': ^4.20250719.0
'@hattip/core': ^0.0.49
'@webroute/route': ^0.8.0
- elysia: ^1.2.25
- fastify: ^5.2.2
- h3: ^1.15.1
- hono: ^4.7.5
+ elysia: ^1.3.5
+ fastify: ^5.4.0
+ h3: ^1.15.3
+ hono: ^4.8.5
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -1497,31 +1584,31 @@ packages:
hono:
optional: true
- '@universal-middleware/elysia@0.5.1':
- resolution: {integrity: sha512-rwd+67iZ15zRHcYm+ERCbgJh+ESsTugksvZ3/aONcc0qKbzvcPqK8IBpZBM+3YKmd9r8JOSAKW+ECeVO2oYR6Q==}
+ '@universal-middleware/elysia@0.5.3':
+ resolution: {integrity: sha512-7TdoG2x4lV5YG6sWCeFJJ/sP3Czjh8XjsZ65Vslg3zCEIR1TNF2G1E5jrBRmBj0YFY5ZvKcjX+lXGiKNQLG1QA==}
- '@universal-middleware/express@0.4.16':
- resolution: {integrity: sha512-RK8EiY2WJUCPNkk0DqL7A9T/Fn0Mkp7P+fQgWf6Z/Nd7rzih5mVBUNt73w7FtMX8LxOhK43/1CmO8O1JL24V0w==}
+ '@universal-middleware/express@0.4.18':
+ resolution: {integrity: sha512-zdEphqUDtPk4aW4H+EDIv6JLnNDAwgYLu20ZtnpBD3XrOE182CHHPlJRXb32vu9Y7+zpMi4qsNyR/G2QXwzdbw==}
- '@universal-middleware/fastify@0.5.18':
- resolution: {integrity: sha512-SaE2d0zOFmAIrC/AK48MRJW0FgohmuplUstUdyfr+BPLSPHZ3cPIwhWjgA8DLVhQXzUmleK02bXByBK3r/xP7g==}
+ '@universal-middleware/fastify@0.5.20':
+ resolution: {integrity: sha512-VDViiK2OwMUXNxs4yQWOVsYIKtgCfCHG8SX24YTELqlAlZCFDX/nrwqNG/W7l6UzRcr+n5sKMKpr0WdOgiO8vA==}
- '@universal-middleware/h3@0.4.10':
- resolution: {integrity: sha512-tG+5hfIYrLKrX3kGTMRCWx44Q2mV2DJMda+Rjryk+vgEWWaQVCtUGkAa2IqrM8m0L/sVf9ypQNK/ucQGy7naeA==}
+ '@universal-middleware/h3@0.4.12':
+ resolution: {integrity: sha512-6wDIHm0eVNfV+M0BmFTM6WokgCdPd9zCfk7sgFCBvjPPk3QjfgBdZUqzTMoFFeLWF5Xo0lnfD80eomG6bSruYA==}
- '@universal-middleware/hattip@0.4.9':
- resolution: {integrity: sha512-omPJvUx1mqeWeQa/KH6sz9k6hXa1dK6dguKOsYKjJBXC6wcgEX8dB7wTf7cGqeleFDpXUbPJ+gFg1M0iwlvunQ==}
+ '@universal-middleware/hattip@0.4.11':
+ resolution: {integrity: sha512-PfMR5wrjy1ld4Ikzai95+5SpQOqlNZxW7PbbMevdP7bJ0i67w0gLrZ2kkZBDL/fKCEvEjIPTZw/vOeP2N7j4bg==}
- '@universal-middleware/hono@0.4.12':
- resolution: {integrity: sha512-4AVRzhmaEAMiWGnckdmoxsJqOhndILFb5Rma2PczP9D4QjuEWSxWEbXWoxieZVZW5Umer0c12hhlUstnsRZPMg==}
+ '@universal-middleware/hono@0.4.15':
+ resolution: {integrity: sha512-/vd8w0PGrcexRDPyuVmX1IykOqt3VPytty/zZ2xlfs6JBcoohPNOibZiLgN8FMe021DgnAKXlgSbBt4KwviEUA==}
'@universal-middleware/sirv@0.1.20':
resolution: {integrity: sha512-ToSuHZPelt2BtNLwJumSqtaQ3KuQVCqeEA9CgDum0cH1qfjZci9fnknNFQ2vhi4CdUkACxPfDne5ddI810+ihg==}
- '@vitejs/plugin-react-swc@3.9.0':
- resolution: {integrity: sha512-jYFUSXhwMCYsh/aQTgSGLIN3Foz5wMbH9ahb0Zva//UzwZYbMiZd7oT3AU9jHT9DLswYDswsRwPU9jVF3yA48Q==}
+ '@vitejs/plugin-react-swc@3.11.0':
+ resolution: {integrity: sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==}
peerDependencies:
- vite: ^4 || ^5 || ^6
+ vite: ^4 || ^5 || ^6 || ^7
'@whatwg-node/fetch@0.9.23':
resolution: {integrity: sha512-7xlqWel9JsmxahJnYVUj/LLxWcnA93DR4c9xlw3U814jWTiYalryiH1qToik1hOxweKKRLi4haXHM5ycRksPBA==}
@@ -1531,10 +1618,6 @@ packages:
resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==}
engines: {node: '>=18.0.0'}
- JSONStream@1.3.5:
- resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
- hasBin: true
-
abstract-logging@2.0.1:
resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
@@ -1556,14 +1639,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- acorn@8.14.1:
- resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
hasBin: true
- add-stream@1.0.0:
- resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
-
ajv-formats@3.0.1:
resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
peerDependencies:
@@ -1575,8 +1655,8 @@ packages:
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
- algoliasearch@5.25.0:
- resolution: {integrity: sha512-n73BVorL4HIwKlfJKb4SEzAYkR3Buwfwbh+MYxg2mloFph2fFGV58E90QTzdbfzWrLn4HE5Czx/WTjI8fcHaMg==}
+ algoliasearch@5.34.0:
+ resolution: {integrity: sha512-wioVnf/8uuG8Bmywhk5qKIQ3wzCCtmdvicPRb0fa3kKYGGoewfgDqLEaET1MV2NbTc3WGpPv+AgauLVBp1nB9A==}
engines: {node: '>= 14.0.0'}
ansi-regex@5.0.1:
@@ -1598,18 +1678,9 @@ packages:
any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- arktype@2.1.20:
- resolution: {integrity: sha512-IZCEEXaJ8g+Ijd59WtSYwtjnqXiwM8sWQ5EjGamcto7+HVN9eK0C4p0zDlCuAwWhpqr6fIBkxPuYDl4/Mcj/+Q==}
-
array-ify@1.0.0:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
- as-table@1.0.55:
- resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
-
- asap@2.0.6:
- resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
-
assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
@@ -1637,8 +1708,8 @@ packages:
resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
engines: {node: '>=18'}
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
@@ -1647,8 +1718,10 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- bun-types@1.2.13:
- resolution: {integrity: sha512-rRjA1T6n7wto4gxhAO/ErZEtOXyEZEmnIHQfl0Dt1QQSB4QV0iP6BZ9/YB5fZaHFQ2dwHFrmPaRQ9GGMX01k9Q==}
+ bun-types@1.2.19:
+ resolution: {integrity: sha512-uAOTaZSPuYsWIXRpj7o56Let0g/wjihKCkeRqUBhlLVM/Bt+Fj9xTo+LhC1OV1XDaGkz4hNC80et5xgy+9KTHQ==}
+ peerDependencies:
+ '@types/react': ^19
bundle-require@5.1.0:
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
@@ -1733,6 +1806,9 @@ packages:
compare-func@2.0.0:
resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -1745,66 +1821,31 @@ packages:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
- conventional-changelog-angular@7.0.0:
- resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
- engines: {node: '>=16'}
-
- conventional-changelog-atom@4.0.0:
- resolution: {integrity: sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==}
- engines: {node: '>=16'}
-
- conventional-changelog-codemirror@4.0.0:
- resolution: {integrity: sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==}
- engines: {node: '>=16'}
-
- conventional-changelog-conventionalcommits@7.0.2:
- resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==}
- engines: {node: '>=16'}
-
- conventional-changelog-core@7.0.0:
- resolution: {integrity: sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==}
- engines: {node: '>=16'}
-
- conventional-changelog-ember@4.0.0:
- resolution: {integrity: sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==}
- engines: {node: '>=16'}
-
- conventional-changelog-eslint@5.0.0:
- resolution: {integrity: sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==}
- engines: {node: '>=16'}
-
- conventional-changelog-express@4.0.0:
- resolution: {integrity: sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==}
- engines: {node: '>=16'}
-
- conventional-changelog-jquery@5.0.0:
- resolution: {integrity: sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==}
- engines: {node: '>=16'}
-
- conventional-changelog-jshint@4.0.0:
- resolution: {integrity: sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==}
- engines: {node: '>=16'}
+ conventional-changelog-angular@8.0.0:
+ resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==}
+ engines: {node: '>=18'}
- conventional-changelog-preset-loader@4.1.0:
- resolution: {integrity: sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==}
- engines: {node: '>=16'}
+ conventional-changelog-preset-loader@5.0.0:
+ resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==}
+ engines: {node: '>=18'}
- conventional-changelog-writer@7.0.1:
- resolution: {integrity: sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==}
- engines: {node: '>=16'}
+ conventional-changelog-writer@8.2.0:
+ resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==}
+ engines: {node: '>=18'}
hasBin: true
- conventional-changelog@5.1.0:
- resolution: {integrity: sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==}
- engines: {node: '>=16'}
+ conventional-changelog@7.0.2:
+ resolution: {integrity: sha512-dz38xbKg2Nzd2zoPY1PXPq7skbN1tdx402OkcirIE44LetmoWODmt4h/6AwtQb6+ZHjbmMfW6Jxt4dyGt5P8cw==}
+ engines: {node: '>=18'}
+ hasBin: true
- conventional-commits-filter@4.0.0:
- resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==}
- engines: {node: '>=16'}
+ conventional-commits-filter@5.0.0:
+ resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==}
+ engines: {node: '>=18'}
- conventional-commits-parser@5.0.0:
- resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
- engines: {node: '>=16'}
+ conventional-commits-parser@6.2.0:
+ resolution: {integrity: sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==}
+ engines: {node: '>=18'}
hasBin: true
cookie-es@1.2.2:
@@ -1832,13 +1873,6 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- dargs@8.1.0:
- resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
- engines: {node: '>=12'}
-
- data-uri-to-buffer@2.0.2:
- resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
-
debug@4.4.1:
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
engines: {node: '>=6.0'}
@@ -1848,8 +1882,8 @@ packages:
supports-color:
optional: true
- decode-named-character-reference@1.1.0:
- resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
+ decode-named-character-reference@1.2.0:
+ resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
deep-eql@4.1.4:
resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
@@ -1876,9 +1910,6 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- dezalgo@1.0.4:
- resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
-
dot-prop@5.3.0:
resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
engines: {node: '>=8'}
@@ -1893,8 +1924,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- elysia@1.3.1:
- resolution: {integrity: sha512-En41P6cDHcHtQ0nvfsn9ayB+8ahQJqG1nzvPX8FVZjOriFK/RtZPQBtXMfZDq/AsVIk7JFZGFEtAVEmztNJVhQ==}
+ elysia@1.3.5:
+ resolution: {integrity: sha512-XVIKXlKFwUT7Sta8GY+wO5reD9I0rqAEtaz1Z71UgJb61csYt8Q3W9al8rtL5RgumuRR8e3DNdzlUN9GkC4KDw==}
peerDependencies:
exact-mirror: '>= 0.0.9'
file-type: '>= 20.0.0'
@@ -1910,12 +1941,12 @@ packages:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'}
- entities@6.0.0:
- resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==}
+ entities@6.0.1:
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
engines: {node: '>=0.12'}
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ error-stack-parser-es@1.0.5:
+ resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
es-define-property@1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
@@ -1942,6 +1973,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.25.8:
+ resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
@@ -1994,8 +2030,8 @@ packages:
resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
engines: {node: '>= 18'}
- exsolve@1.0.5:
- resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
+ exsolve@1.0.7:
+ resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -2030,14 +2066,17 @@ packages:
resolution: {integrity: sha512-2qfoaQ3BQDhZ1gtbkKZd6n0kKxJISJGM6u/skD9ljdWItAscjXrtZ1lnjr7PavmXX9j4EyCPmBDiIsLn07d5vA==}
engines: {node: '>= 10'}
- fastify@5.3.3:
- resolution: {integrity: sha512-nCBiBCw9q6jPx+JJNVgO8JVnTXeUyrGcyTKPQikRkA/PanrFcOIo4R+ZnLeOLPZPGgzjomqfVarzE0kYx7qWiQ==}
+ fastify@5.4.0:
+ resolution: {integrity: sha512-I4dVlUe+WNQAhKSyv15w+dwUh2EPiEl4X2lGYMmNSgF83WzTMAPKGdWEv5tPsCQOb+SOZwz8Vlta2vF+OeDgRw==}
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
- fdir@6.4.4:
- resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
+ fd-package-json@1.2.0:
+ resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==}
+
+ fdir@6.4.6:
+ resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -2047,9 +2086,9 @@ packages:
fflate@0.8.2:
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
- file-type@20.5.0:
- resolution: {integrity: sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==}
- engines: {node: '>=18'}
+ file-type@21.0.0:
+ resolution: {integrity: sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==}
+ engines: {node: '>=20'}
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
@@ -2063,18 +2102,13 @@ packages:
resolution: {integrity: sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==}
engines: {node: '>=20'}
- find-up@6.3.0:
- resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ fix-dts-default-cjs-exports@1.0.1:
+ resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==}
foreground-child@3.3.1:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
- formidable@3.5.4:
- resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==}
- engines: {node: '>=14.0.0'}
-
forwarded@0.2.0:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
engines: {node: '>= 0.6'}
@@ -2111,23 +2145,10 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
- get-source@2.0.12:
- resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
-
get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
- git-raw-commits@4.0.0:
- resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==}
- engines: {node: '>=16'}
- hasBin: true
-
- git-semver-tags@7.0.1:
- resolution: {integrity: sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==}
- engines: {node: '>=16'}
- hasBin: true
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -2183,13 +2204,13 @@ packages:
hastscript@9.0.1:
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
- hono@4.7.9:
- resolution: {integrity: sha512-/EsCoR5h7N4yu01TDu9GMCCJa6ZLk5ZJIWFFGNawAXmd1Tp53+Wir4xm0D2X19bbykWUlzQG0+BvPAji6p9E8Q==}
+ hono@4.8.5:
+ resolution: {integrity: sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA==}
engines: {node: '>=16.9.0'}
- hosted-git-info@7.0.2:
- resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
- engines: {node: ^16.14.0 || >=18.0.0}
+ hosted-git-info@8.1.0:
+ resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==}
+ engines: {node: ^18.17.0 || >=20.5.0}
http-errors@2.0.0:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
@@ -2229,9 +2250,6 @@ packages:
is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
@@ -2275,10 +2293,6 @@ packages:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
- is-text-path@2.0.0:
- resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
- engines: {node: '>=8'}
-
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -2292,27 +2306,20 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- json-parse-even-better-errors@3.0.2:
- resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
json-schema-ref-resolver@2.0.1:
resolution: {integrity: sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==}
json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
- json-stringify-safe@5.0.1:
- resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
-
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
- jsonparse@1.3.1:
- resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
- engines: {'0': node >= 0.2.0}
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
light-my-request@6.6.0:
resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==}
@@ -2324,18 +2331,10 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- lines-and-columns@2.0.4:
- resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
load-tsconfig@0.2.5:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
lodash.sortby@4.7.0:
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
@@ -2418,9 +2417,9 @@ packages:
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
engines: {node: '>= 0.8'}
- meow@12.1.1:
- resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
- engines: {node: '>=16.10'}
+ meow@13.2.0:
+ resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
+ engines: {node: '>=18'}
merge-descriptors@2.0.0:
resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
@@ -2567,8 +2566,8 @@ packages:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
- miniflare@4.20250508.1:
- resolution: {integrity: sha512-GvY2JZx0yH4sp5dTSx4yS/rHwHMztqnNWCjFnfXrsu+3x5UEYtjc0RMBdq4WfrIUdEaVl2dYdWk2fI4IE0teyA==}
+ miniflare@4.20250712.1:
+ resolution: {integrity: sha512-46gB3FGPOsy+EpFGufjhr8agYycO/55d6l0y7hNJ13NcTVwrObMg/0HmI3pC5yQj0974IVXzBgUfDBMAX6thow==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -2583,6 +2582,9 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
+ mlly@1.7.4:
+ resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
+
mrmime@2.0.1:
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
engines: {node: '>=10'}
@@ -2590,10 +2592,6 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- mustache@4.2.0:
- resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
- hasBin: true
-
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -2621,12 +2619,12 @@ packages:
encoding:
optional: true
- node-mock-http@1.0.0:
- resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==}
+ node-mock-http@1.0.1:
+ resolution: {integrity: sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==}
- normalize-package-data@6.0.2:
- resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==}
- engines: {node: ^16.14.0 || >=18.0.0}
+ normalize-package-data@7.0.0:
+ resolution: {integrity: sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA==}
+ engines: {node: ^18.17.0 || >=20.5.0}
npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
@@ -2659,19 +2657,7 @@ packages:
engines: {node: '>=6'}
openapi-types@12.1.3:
- resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
-
- oxc-transform@0.64.0:
- resolution: {integrity: sha512-b4fN/7l+/frPZ7/Z3XYcjvgFXfctYiOKNP0cYFDUOZR4P1NbrpfYlLVAXiCAE66kLo7um1TS/JFCSl1JbUsb9g==}
- engines: {node: '>=14.0.0'}
-
- p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
@@ -2679,10 +2665,6 @@ packages:
parse-entities@4.0.2:
resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
- parse-json@7.1.1:
- resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==}
- engines: {node: '>=16'}
-
parse-numeric-range@1.3.0:
resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==}
@@ -2693,10 +2675,6 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
- path-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -2718,10 +2696,6 @@ packages:
pathval@1.1.1:
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
- peek-readable@7.0.0:
- resolution: {integrity: sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==}
- engines: {node: '>=18'}
-
periscopic@3.1.0:
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
@@ -2732,8 +2706,8 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- picomatch@4.0.2:
- resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
pino-abstract-transport@2.0.0:
@@ -2742,8 +2716,8 @@ packages:
pino-std-serializers@7.0.0:
resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
- pino@9.6.0:
- resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==}
+ pino@9.7.0:
+ resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==}
hasBin: true
pirates@4.0.7:
@@ -2754,18 +2728,21 @@ packages:
resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==}
hasBin: true
- playwright-chromium@1.52.0:
- resolution: {integrity: sha512-ZTpzBzRFFRglyqRnAqdK5mFaw1P41qe8V2zSR+fA0eKPgGEEaH7r91ejXKijs3WhReatRcatHQe3ndMBMN1PLA==}
+ pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+
+ playwright-chromium@1.54.1:
+ resolution: {integrity: sha512-1tOND4/hyQsYng5NLkLm+Ntew+CWBsvVZCcEZ0wafF5BAd9DBQHAT9SO95+QFk5iL5IBEdB6vFdsHf9Ma72vzQ==}
engines: {node: '>=18'}
hasBin: true
- playwright-core@1.52.0:
- resolution: {integrity: sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==}
+ playwright-core@1.54.1:
+ resolution: {integrity: sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==}
engines: {node: '>=18'}
hasBin: true
- playwright@1.52.0:
- resolution: {integrity: sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==}
+ playwright@1.54.1:
+ resolution: {integrity: sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==}
engines: {node: '>=18'}
hasBin: true
@@ -2791,18 +2768,15 @@ packages:
yaml:
optional: true
- postcss@8.5.3:
- resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
- prettier@3.5.3:
- resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
+ prettier@3.6.2:
+ resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
engines: {node: '>=14'}
hasBin: true
- printable-characters@1.0.42:
- resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
-
process-warning@4.0.1:
resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==}
@@ -2850,14 +2824,6 @@ packages:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
- read-pkg-up@10.1.0:
- resolution: {integrity: sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==}
- engines: {node: '>=16'}
-
- read-pkg@8.1.0:
- resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==}
- engines: {node: '>=16'}
-
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
@@ -2913,8 +2879,8 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
- rollup@4.38.0:
- resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==}
+ rollup@4.45.1:
+ resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -3055,13 +3021,14 @@ packages:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
- stacktracey@2.1.8:
- resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
-
statuses@2.0.1:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
+
stoppable@1.1.0:
resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
engines: {node: '>=4', npm: '>=6'}
@@ -3093,24 +3060,24 @@ packages:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
- strtok3@10.2.2:
- resolution: {integrity: sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==}
+ strtok3@10.3.2:
+ resolution: {integrity: sha512-or9w505RhhY66+uoe5YOC5QO/bRuATaoim3XTh+pGKx5VMWi/HDhMKuCjDLsLJouU2zg9Hf1nLPcNW7IHv80kQ==}
engines: {node: '>=18'}
- style-to-js@1.1.16:
- resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==}
+ style-to-js@1.1.17:
+ resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==}
- style-to-object@1.0.8:
- resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
+ style-to-object@1.0.9:
+ resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==}
sucrase@3.35.0:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
- text-extensions@2.4.0:
- resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
- engines: {node: '>=8'}
+ supports-color@10.0.0:
+ resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==}
+ engines: {node: '>=18'}
thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
@@ -3122,14 +3089,11 @@ packages:
thread-stream@3.1.0:
resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
- through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
-
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
- tinyglobby@0.2.13:
- resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
+ tinyglobby@0.2.14:
+ resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
tldts-core@6.1.86:
@@ -3151,8 +3115,8 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
- token-types@6.0.0:
- resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==}
+ token-types@6.0.3:
+ resolution: {integrity: sha512-IKJ6EzuPPWtKtEIEPpIdXv9j5j2LGJEYk0CKY2efgKoYKLBiZdh6iQkLVBow/CB3phyWAWCyk+bZeaimJn6uRQ==}
engines: {node: '>=14.16'}
totalist@3.0.1:
@@ -3179,14 +3143,18 @@ packages:
trough@2.2.0:
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+ ts-deepmerge@7.0.3:
+ resolution: {integrity: sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA==}
+ engines: {node: '>=14.13.1'}
+
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsup@8.4.0:
- resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==}
+ tsup@8.5.0:
+ resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
@@ -3208,14 +3176,6 @@ packages:
resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
engines: {node: '>=4'}
- type-fest@3.13.1:
- resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
- engines: {node: '>=14.16'}
-
- type-fest@4.41.0:
- resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
- engines: {node: '>=16'}
-
type-is@2.0.1:
resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
engines: {node: '>= 0.6'}
@@ -3240,15 +3200,15 @@ packages:
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
- undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
- undici@5.29.0:
- resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==}
- engines: {node: '>=14.0'}
+ undici@7.12.0:
+ resolution: {integrity: sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==}
+ engines: {node: '>=20.18.1'}
- unenv@2.0.0-rc.15:
- resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==}
+ unenv@2.0.0-rc.17:
+ resolution: {integrity: sha512-B06u0wXkEd+o5gOCMl/ZHl5cfpYbDZKAT+HWTL+Hws6jWu7dCiqBBXXXzMFcFVJb8D4ytAnYmxJA83uwOQRSsg==}
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
@@ -3275,8 +3235,8 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
- unplugin@2.3.4:
- resolution: {integrity: sha512-m4PjxTurwpWfpMomp8AptjD5yj8qEZN5uQjjGM3TAs9MWWD2tXSSNNj6jGR2FoVGod4293ytyV6SwBbertfyJg==}
+ unplugin@2.3.5:
+ resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==}
engines: {node: '>=18.12.0'}
urlpattern-polyfill@10.1.0:
@@ -3298,8 +3258,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vike@0.4.229:
- resolution: {integrity: sha512-FLiNUDwj42yRpb/iNKwjoScskyEozCjtz9kne5qvgp9fkxYSEXU/sKb+t5+XUljb4orjFgBBVCNyISqdRnAKkA==}
+ vike@0.4.236:
+ resolution: {integrity: sha512-8IRz4OmWGx5YwVBP9Zql405klEgys6tNQh3//IcD4tjhhgIoWm42rtvGb7TVfXX8CNX8DmEPHEvHTsrhk1y7ww==}
engines: {node: '>=18.0.0'}
hasBin: true
peerDependencies:
@@ -3316,7 +3276,7 @@ packages:
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
- '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ '@types/node': ^20.17.32
jiti: '>=1.21.0'
less: '*'
lightningcss: ^1.21.0
@@ -3351,6 +3311,9 @@ packages:
yaml:
optional: true
+ walk-up-path@3.0.1:
+ resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==}
+
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
@@ -3377,18 +3340,17 @@ packages:
wordwrap@1.0.0:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
- workerd@1.20250508.0:
- resolution: {integrity: sha512-ffLxe7dXSuGoA6jb3Qx2SClIV1aLHfJQ6RhGhzYHjQgv7dL6fdUOSIIGgzmu2mRKs+WFSujp6c8WgKquco6w3w==}
+ workerd@1.20250712.0:
+ resolution: {integrity: sha512-7h+k1OxREpiZW0849g0uQNexRWMcs5i5gUGhJzCY8nIx6Tv4D/ndlXJ47lEFj7/LQdp165IL9dM2D5uDiedZrg==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.15.1:
- resolution: {integrity: sha512-dzCdGWJUqjZAeR6kmAF28iD19VyDfD9nP1JiAw9NNlG1pEVzaY4Pr6egYyQcGj98N7WTv/tXoCk1R/L3eU3iwg==}
+ wrangler@4.25.1:
+ resolution: {integrity: sha512-4Tlg+jmqxCX3xFm+Nz1b4jHHY9iOu1EyJ17SSCCJ6MGp+FCGtXgr+CynT94+MP0v/qKQUkMKjoeJ5FNDunZ9cA==}
engines: {node: '>=18.0.0'}
- deprecated: '⚠️ Deprecated: 4.15.1 has a regression with R2 bucket validation with wrangler pages dev. Please downgrade to 4.14.4 or upgrade to 4.15.2 when it is published.'
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^4.20250508.0
+ '@cloudflare/workers-types': ^4.20250712.0
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -3416,139 +3378,127 @@ packages:
utf-8-validate:
optional: true
- yocto-queue@1.2.1:
- resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
- engines: {node: '>=12.20'}
+ youch-core@0.3.3:
+ resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
- youch@3.3.4:
- resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==}
+ youch@4.1.0-beta.10:
+ resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==}
zod@3.22.3:
resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
snapshots:
- '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3)':
+ '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3)
- '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)(search-insights@2.17.3)
+ '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
- '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3)':
+ '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)
search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)':
- dependencies:
- '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
- '@algolia/client-search': 5.25.0
- algoliasearch: 5.25.0
-
- '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)':
+ '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)':
dependencies:
- '@algolia/client-search': 5.25.0
- algoliasearch: 5.25.0
+ '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)
+ '@algolia/client-search': 5.34.0
+ algoliasearch: 5.34.0
- '@algolia/client-abtesting@5.25.0':
+ '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-search': 5.34.0
+ algoliasearch: 5.34.0
- '@algolia/client-analytics@5.25.0':
+ '@algolia/client-abtesting@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/client-common@5.25.0': {}
-
- '@algolia/client-insights@5.25.0':
+ '@algolia/client-analytics@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/client-personalization@5.25.0':
- dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common@5.34.0': {}
- '@algolia/client-query-suggestions@5.25.0':
+ '@algolia/client-insights@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/client-search@5.25.0':
+ '@algolia/client-personalization@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/ingestion@1.25.0':
+ '@algolia/client-query-suggestions@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/monitoring@1.25.0':
+ '@algolia/client-search@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/recommend@5.25.0':
+ '@algolia/ingestion@1.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/requester-browser-xhr@5.25.0':
+ '@algolia/monitoring@1.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/requester-fetch@5.25.0':
+ '@algolia/recommend@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
- '@algolia/requester-node-http@5.25.0':
+ '@algolia/requester-browser-xhr@5.34.0':
dependencies:
- '@algolia/client-common': 5.25.0
+ '@algolia/client-common': 5.34.0
- '@ark/schema@0.46.0':
+ '@algolia/requester-fetch@5.34.0':
dependencies:
- '@ark/util': 0.46.0
+ '@algolia/client-common': 5.34.0
- '@ark/util@0.46.0': {}
-
- '@babel/code-frame@7.27.1':
+ '@algolia/requester-node-http@5.34.0':
dependencies:
- '@babel/helper-validator-identifier': 7.27.1
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/helper-validator-identifier@7.27.1': {}
+ '@algolia/client-common': 5.34.0
'@biomejs/biome@1.9.4':
optionalDependencies:
@@ -3585,14 +3535,14 @@ snapshots:
'@biomejs/cli-win32-x64@1.9.4':
optional: true
- '@brillout/docpress@0.12.6(@algolia/client-search@5.25.0)(@types/react@18.3.21)(@vitejs/plugin-react-swc@3.9.0(vite@6.3.5(@types/node@20.17.47)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.38.0)(search-insights@2.17.3)(typescript@5.8.3)(vike@0.4.229(vite@6.3.5(@types/node@20.17.47)))(vite@6.3.5(@types/node@20.17.47))':
+ '@brillout/docpress@0.12.6(@algolia/client-search@5.34.0)(@types/react@18.3.23)(@vitejs/plugin-react-swc@3.11.0(vite@6.3.5(@types/node@20.19.9)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.45.1)(search-insights@2.17.3)(typescript@5.8.3)(vike@0.4.236(vite@6.3.5(@types/node@20.19.9)))(vite@6.3.5(@types/node@20.19.9))':
dependencies:
- '@brillout/picocolors': 1.0.26
+ '@brillout/picocolors': 1.0.28
'@docsearch/css': 3.9.0
- '@docsearch/react': 3.9.0(@algolia/client-search@5.25.0)(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
+ '@docsearch/react': 3.9.0(@algolia/client-search@5.34.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)
'@mdx-js/mdx': 3.0.1
- '@mdx-js/react': 3.0.1(@types/react@18.3.21)(react@18.3.1)
- '@mdx-js/rollup': 3.0.1(rollup@4.38.0)
+ '@mdx-js/react': 3.0.1(@types/react@18.3.23)(react@18.3.1)
+ '@mdx-js/rollup': 3.0.1(rollup@4.45.1)
'@shikijs/transformers': 1.2.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -3600,10 +3550,10 @@ snapshots:
remark-gfm: 4.0.0
shiki: 1.2.0
typescript: 5.8.3
- vike: 0.4.229(vite@6.3.5(@types/node@20.17.47))
+ vike: 0.4.236(vite@6.3.5(@types/node@20.19.9))
optionalDependencies:
- '@vitejs/plugin-react-swc': 3.9.0(vite@6.3.5(@types/node@20.17.47))
- vite: 6.3.5(@types/node@20.17.47)
+ '@vitejs/plugin-react-swc': 3.11.0(vite@6.3.5(@types/node@20.19.9))
+ vite: 6.3.5(@types/node@20.19.9)
transitivePeerDependencies:
- '@algolia/client-search'
- '@types/react'
@@ -3613,32 +3563,35 @@ snapshots:
'@brillout/import@0.2.6': {}
- '@brillout/json-serializer@0.5.15': {}
+ '@brillout/json-serializer@0.5.16': {}
'@brillout/part-regex@0.1.4': {}
- '@brillout/picocolors@1.0.26': {}
+ '@brillout/picocolors@1.0.28': {}
- '@brillout/release-me@0.4.3':
+ '@brillout/release-me@0.4.8(conventional-commits-filter@5.0.0)':
dependencies:
- '@brillout/picocolors': 1.0.26
+ '@brillout/picocolors': 1.0.28
commander: 11.1.0
- conventional-changelog: 5.1.0
+ conventional-changelog: 7.0.2(conventional-commits-filter@5.0.0)
+ conventional-changelog-angular: 8.0.0
execa: 5.1.1
semver: 7.7.2
+ transitivePeerDependencies:
+ - conventional-commits-filter
'@brillout/require-shim@0.1.2': {}
- '@brillout/test-e2e@0.6.8':
+ '@brillout/test-e2e@0.6.14':
dependencies:
'@brillout/part-regex': 0.1.4
- '@brillout/picocolors': 1.0.26
+ '@brillout/picocolors': 1.0.28
chai: 4.5.0
esbuild: 0.23.1
fast-glob: 3.3.3
node-fetch: 2.7.0
pixelmatch: 5.3.0
- playwright-chromium: 1.52.0
+ playwright-chromium: 1.54.1
pngjs: 6.0.0
source-map-support: 0.5.21
strip-ansi: 6.0.1
@@ -3648,30 +3601,30 @@ snapshots:
'@brillout/vite-plugin-server-entry@0.7.9':
dependencies:
'@brillout/import': 0.2.6
- '@brillout/picocolors': 1.0.26
+ '@brillout/picocolors': 1.0.28
'@cloudflare/kv-asset-handler@0.4.0':
dependencies:
mime: 3.0.0
- '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250508.0)':
+ '@cloudflare/unenv-preset@2.3.3(unenv@2.0.0-rc.17)(workerd@1.20250712.0)':
dependencies:
- unenv: 2.0.0-rc.15
+ unenv: 2.0.0-rc.17
optionalDependencies:
- workerd: 1.20250508.0
+ workerd: 1.20250712.0
- '@cloudflare/vite-plugin@1.2.1(rollup@4.38.0)(vite@6.3.5(@types/node@20.17.47))(workerd@1.20250508.0)(wrangler@4.15.1(@cloudflare/workers-types@4.20250515.0))':
+ '@cloudflare/vite-plugin@1.10.0(rollup@4.45.1)(vite@6.3.5(@types/node@20.19.9))(workerd@1.20250712.0)(wrangler@4.25.1(@cloudflare/workers-types@4.20250722.0))':
dependencies:
- '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250508.0)
+ '@cloudflare/unenv-preset': 2.3.3(unenv@2.0.0-rc.17)(workerd@1.20250712.0)
'@mjackson/node-fetch-server': 0.6.1
- '@rollup/plugin-replace': 6.0.2(rollup@4.38.0)
+ '@rollup/plugin-replace': 6.0.2(rollup@4.45.1)
get-port: 7.1.0
- miniflare: 4.20250508.1
+ miniflare: 4.20250712.1
picocolors: 1.1.1
- tinyglobby: 0.2.13
- unenv: 2.0.0-rc.15
- vite: 6.3.5(@types/node@20.17.47)
- wrangler: 4.15.1(@cloudflare/workers-types@4.20250515.0)
+ tinyglobby: 0.2.14
+ unenv: 2.0.0-rc.17
+ vite: 6.3.5(@types/node@20.19.9)
+ wrangler: 4.25.1(@cloudflare/workers-types@4.20250722.0)
ws: 8.18.0
transitivePeerDependencies:
- bufferutil
@@ -3679,22 +3632,31 @@ snapshots:
- utf-8-validate
- workerd
- '@cloudflare/workerd-darwin-64@1.20250508.0':
+ '@cloudflare/workerd-darwin-64@1.20250712.0':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20250508.0':
+ '@cloudflare/workerd-darwin-arm64@1.20250712.0':
optional: true
- '@cloudflare/workerd-linux-64@1.20250508.0':
+ '@cloudflare/workerd-linux-64@1.20250712.0':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20250508.0':
+ '@cloudflare/workerd-linux-arm64@1.20250712.0':
optional: true
- '@cloudflare/workerd-windows-64@1.20250508.0':
+ '@cloudflare/workerd-windows-64@1.20250712.0':
optional: true
- '@cloudflare/workers-types@4.20250515.0': {}
+ '@cloudflare/workers-types@4.20250722.0': {}
+
+ '@conventional-changelog/git-client@2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)':
+ dependencies:
+ '@simple-libs/child-process-utils': 1.0.1
+ '@simple-libs/stream-utils': 1.1.0
+ semver: 7.7.2
+ optionalDependencies:
+ conventional-commits-filter: 5.0.0
+ conventional-commits-parser: 6.2.0
'@cspotcode/source-map-support@0.8.1':
dependencies:
@@ -3702,38 +3664,28 @@ snapshots:
'@docsearch/css@3.9.0': {}
- '@docsearch/react@3.9.0(@algolia/client-search@5.25.0)(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
+ '@docsearch/react@3.9.0(@algolia/client-search@5.34.0)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)(search-insights@2.17.3)
- '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)(search-insights@2.17.3)
+ '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.34.0)(algoliasearch@5.34.0)
'@docsearch/css': 3.9.0
- algoliasearch: 5.25.0
+ algoliasearch: 5.34.0
optionalDependencies:
- '@types/react': 18.3.21
+ '@types/react': 18.3.23
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
- '@elysiajs/node@1.2.6(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(formidable@3.5.4)(ws@8.18.0)':
- dependencies:
- elysia: 1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3)
- formidable: 3.5.4
- ws: 8.18.0
-
- '@emnapi/core@1.4.3':
- dependencies:
- '@emnapi/wasi-threads': 1.0.2
- tslib: 2.8.1
- optional: true
-
- '@emnapi/runtime@1.4.3':
+ '@elysiajs/node@1.3.0(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(hono@4.8.5)':
dependencies:
- tslib: 2.8.1
- optional: true
+ '@hono/node-server': 1.17.1(hono@4.8.5)
+ elysia: 1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3)
+ transitivePeerDependencies:
+ - hono
- '@emnapi/wasi-threads@1.0.2':
+ '@emnapi/runtime@1.4.5':
dependencies:
tslib: 2.8.1
optional: true
@@ -3744,156 +3696,232 @@ snapshots:
'@esbuild/aix-ppc64@0.25.4':
optional: true
+ '@esbuild/aix-ppc64@0.25.8':
+ optional: true
+
'@esbuild/android-arm64@0.23.1':
optional: true
'@esbuild/android-arm64@0.25.4':
optional: true
+ '@esbuild/android-arm64@0.25.8':
+ optional: true
+
'@esbuild/android-arm@0.23.1':
optional: true
'@esbuild/android-arm@0.25.4':
optional: true
+ '@esbuild/android-arm@0.25.8':
+ optional: true
+
'@esbuild/android-x64@0.23.1':
optional: true
'@esbuild/android-x64@0.25.4':
optional: true
+ '@esbuild/android-x64@0.25.8':
+ optional: true
+
'@esbuild/darwin-arm64@0.23.1':
optional: true
'@esbuild/darwin-arm64@0.25.4':
optional: true
+ '@esbuild/darwin-arm64@0.25.8':
+ optional: true
+
'@esbuild/darwin-x64@0.23.1':
optional: true
'@esbuild/darwin-x64@0.25.4':
optional: true
+ '@esbuild/darwin-x64@0.25.8':
+ optional: true
+
'@esbuild/freebsd-arm64@0.23.1':
optional: true
'@esbuild/freebsd-arm64@0.25.4':
optional: true
+ '@esbuild/freebsd-arm64@0.25.8':
+ optional: true
+
'@esbuild/freebsd-x64@0.23.1':
optional: true
'@esbuild/freebsd-x64@0.25.4':
optional: true
+ '@esbuild/freebsd-x64@0.25.8':
+ optional: true
+
'@esbuild/linux-arm64@0.23.1':
optional: true
'@esbuild/linux-arm64@0.25.4':
optional: true
+ '@esbuild/linux-arm64@0.25.8':
+ optional: true
+
'@esbuild/linux-arm@0.23.1':
optional: true
'@esbuild/linux-arm@0.25.4':
optional: true
+ '@esbuild/linux-arm@0.25.8':
+ optional: true
+
'@esbuild/linux-ia32@0.23.1':
optional: true
'@esbuild/linux-ia32@0.25.4':
optional: true
+ '@esbuild/linux-ia32@0.25.8':
+ optional: true
+
'@esbuild/linux-loong64@0.23.1':
optional: true
'@esbuild/linux-loong64@0.25.4':
optional: true
+ '@esbuild/linux-loong64@0.25.8':
+ optional: true
+
'@esbuild/linux-mips64el@0.23.1':
optional: true
'@esbuild/linux-mips64el@0.25.4':
optional: true
+ '@esbuild/linux-mips64el@0.25.8':
+ optional: true
+
'@esbuild/linux-ppc64@0.23.1':
optional: true
'@esbuild/linux-ppc64@0.25.4':
optional: true
+ '@esbuild/linux-ppc64@0.25.8':
+ optional: true
+
'@esbuild/linux-riscv64@0.23.1':
optional: true
'@esbuild/linux-riscv64@0.25.4':
optional: true
+ '@esbuild/linux-riscv64@0.25.8':
+ optional: true
+
'@esbuild/linux-s390x@0.23.1':
optional: true
'@esbuild/linux-s390x@0.25.4':
optional: true
+ '@esbuild/linux-s390x@0.25.8':
+ optional: true
+
'@esbuild/linux-x64@0.23.1':
optional: true
'@esbuild/linux-x64@0.25.4':
optional: true
+ '@esbuild/linux-x64@0.25.8':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.4':
optional: true
+ '@esbuild/netbsd-arm64@0.25.8':
+ optional: true
+
'@esbuild/netbsd-x64@0.23.1':
optional: true
'@esbuild/netbsd-x64@0.25.4':
optional: true
+ '@esbuild/netbsd-x64@0.25.8':
+ optional: true
+
'@esbuild/openbsd-arm64@0.23.1':
optional: true
'@esbuild/openbsd-arm64@0.25.4':
optional: true
+ '@esbuild/openbsd-arm64@0.25.8':
+ optional: true
+
'@esbuild/openbsd-x64@0.23.1':
optional: true
'@esbuild/openbsd-x64@0.25.4':
optional: true
+ '@esbuild/openbsd-x64@0.25.8':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.25.8':
+ optional: true
+
'@esbuild/sunos-x64@0.23.1':
optional: true
'@esbuild/sunos-x64@0.25.4':
optional: true
+ '@esbuild/sunos-x64@0.25.8':
+ optional: true
+
'@esbuild/win32-arm64@0.23.1':
optional: true
'@esbuild/win32-arm64@0.25.4':
optional: true
+ '@esbuild/win32-arm64@0.25.8':
+ optional: true
+
'@esbuild/win32-ia32@0.23.1':
optional: true
'@esbuild/win32-ia32@0.25.4':
optional: true
+ '@esbuild/win32-ia32@0.25.8':
+ optional: true
+
'@esbuild/win32-x64@0.23.1':
optional: true
'@esbuild/win32-x64@0.25.4':
optional: true
+ '@esbuild/win32-x64@0.25.8':
+ optional: true
+
'@fastify/ajv-compiler@4.0.2':
dependencies:
ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1)
fast-uri: 3.0.6
- '@fastify/busboy@2.1.1': {}
-
- '@fastify/error@4.1.0': {}
+ '@fastify/error@4.2.0': {}
'@fastify/fast-json-stringify-compiler@5.0.3':
dependencies:
@@ -3934,11 +3962,9 @@ snapshots:
cac: 6.7.14
mime-types: 2.1.35
- '@hono/node-server@1.14.1(hono@4.7.9)':
+ '@hono/node-server@1.17.1(hono@4.8.5)':
dependencies:
- hono: 4.7.9
-
- '@hutson/parse-repository-url@5.0.0': {}
+ hono: 4.8.5
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
@@ -4006,7 +4032,7 @@ snapshots:
'@img/sharp-wasm32@0.33.5':
dependencies:
- '@emnapi/runtime': 1.4.3
+ '@emnapi/runtime': 1.4.5
optional: true
'@img/sharp-win32-ia32@0.33.5':
@@ -4024,33 +4050,30 @@ snapshots:
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
- '@jridgewell/gen-mapping@0.3.8':
+ '@jridgewell/gen-mapping@0.3.12':
dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
+ '@jridgewell/sourcemap-codec': 1.5.4
+ '@jridgewell/trace-mapping': 0.3.29
'@jridgewell/resolve-uri@3.1.2': {}
- '@jridgewell/set-array@1.2.1': {}
+ '@jridgewell/sourcemap-codec@1.5.4': {}
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@jridgewell/trace-mapping@0.3.25':
+ '@jridgewell/trace-mapping@0.3.29':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.4
'@jridgewell/trace-mapping@0.3.9':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.4
'@kamilkisiela/fast-url-parser@1.1.4': {}
'@mdx-js/mdx@3.0.1':
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdx': 2.0.13
@@ -4076,17 +4099,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mdx-js/react@3.0.1(@types/react@18.3.21)(react@18.3.1)':
+ '@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1)':
dependencies:
'@types/mdx': 2.0.13
- '@types/react': 18.3.21
+ '@types/react': 18.3.23
react: 18.3.1
- '@mdx-js/rollup@3.0.1(rollup@4.38.0)':
+ '@mdx-js/rollup@3.0.1(rollup@4.45.1)':
dependencies:
'@mdx-js/mdx': 3.0.1
- '@rollup/pluginutils': 5.1.4(rollup@4.38.0)
- rollup: 4.38.0
+ '@rollup/pluginutils': 5.2.0(rollup@4.45.1)
+ rollup: 4.45.1
source-map: 0.7.4
vfile: 6.0.3
transitivePeerDependencies:
@@ -4094,15 +4117,6 @@ snapshots:
'@mjackson/node-fetch-server@0.6.1': {}
- '@napi-rs/wasm-runtime@0.2.9':
- dependencies:
- '@emnapi/core': 1.4.3
- '@emnapi/runtime': 1.4.3
- '@tybys/wasm-util': 0.9.0
- optional: true
-
- '@noble/hashes@1.8.0': {}
-
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -4115,120 +4129,98 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
- '@oxc-transform/binding-darwin-arm64@0.64.0':
- optional: true
-
- '@oxc-transform/binding-darwin-x64@0.64.0':
- optional: true
-
- '@oxc-transform/binding-linux-arm-gnueabihf@0.64.0':
- optional: true
-
- '@oxc-transform/binding-linux-arm64-gnu@0.64.0':
- optional: true
-
- '@oxc-transform/binding-linux-arm64-musl@0.64.0':
- optional: true
-
- '@oxc-transform/binding-linux-x64-gnu@0.64.0':
+ '@pkgjs/parseargs@0.11.0':
optional: true
- '@oxc-transform/binding-linux-x64-musl@0.64.0':
- optional: true
+ '@polka/url@1.0.0-next.29': {}
- '@oxc-transform/binding-wasm32-wasi@0.64.0':
+ '@poppinss/colors@4.1.5':
dependencies:
- '@napi-rs/wasm-runtime': 0.2.9
- optional: true
-
- '@oxc-transform/binding-win32-arm64-msvc@0.64.0':
- optional: true
-
- '@oxc-transform/binding-win32-x64-msvc@0.64.0':
- optional: true
+ kleur: 4.1.5
- '@paralleldrive/cuid2@2.2.2':
+ '@poppinss/dumper@0.6.4':
dependencies:
- '@noble/hashes': 1.8.0
+ '@poppinss/colors': 4.1.5
+ '@sindresorhus/is': 7.0.2
+ supports-color: 10.0.0
- '@pkgjs/parseargs@0.11.0':
- optional: true
+ '@poppinss/exception@1.2.2': {}
- '@polka/url@1.0.0-next.29': {}
+ '@rolldown/pluginutils@1.0.0-beta.27': {}
- '@rollup/plugin-replace@6.0.2(rollup@4.38.0)':
+ '@rollup/plugin-replace@6.0.2(rollup@4.45.1)':
dependencies:
- '@rollup/pluginutils': 5.1.4(rollup@4.38.0)
+ '@rollup/pluginutils': 5.2.0(rollup@4.45.1)
magic-string: 0.30.17
optionalDependencies:
- rollup: 4.38.0
+ rollup: 4.45.1
- '@rollup/pluginutils@5.1.4(rollup@4.38.0)':
+ '@rollup/pluginutils@5.2.0(rollup@4.45.1)':
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-walker: 2.0.2
- picomatch: 4.0.2
+ picomatch: 4.0.3
optionalDependencies:
- rollup: 4.38.0
+ rollup: 4.45.1
- '@rollup/rollup-android-arm-eabi@4.38.0':
+ '@rollup/rollup-android-arm-eabi@4.45.1':
optional: true
- '@rollup/rollup-android-arm64@4.38.0':
+ '@rollup/rollup-android-arm64@4.45.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.38.0':
+ '@rollup/rollup-darwin-arm64@4.45.1':
optional: true
- '@rollup/rollup-darwin-x64@4.38.0':
+ '@rollup/rollup-darwin-x64@4.45.1':
optional: true
- '@rollup/rollup-freebsd-arm64@4.38.0':
+ '@rollup/rollup-freebsd-arm64@4.45.1':
optional: true
- '@rollup/rollup-freebsd-x64@4.38.0':
+ '@rollup/rollup-freebsd-x64@4.45.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.38.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.45.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.38.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.45.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.38.0':
+ '@rollup/rollup-linux-arm64-gnu@4.45.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.38.0':
+ '@rollup/rollup-linux-arm64-musl@4.45.1':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.38.0':
+ '@rollup/rollup-linux-loongarch64-gnu@4.45.1':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.38.0':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.45.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.38.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.45.1':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.38.0':
+ '@rollup/rollup-linux-riscv64-musl@4.45.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.38.0':
+ '@rollup/rollup-linux-s390x-gnu@4.45.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.38.0':
+ '@rollup/rollup-linux-x64-gnu@4.45.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.38.0':
+ '@rollup/rollup-linux-x64-musl@4.45.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.38.0':
+ '@rollup/rollup-win32-arm64-msvc@4.45.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.38.0':
+ '@rollup/rollup-win32-ia32-msvc@4.45.1':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.38.0':
+ '@rollup/rollup-win32-x64-msvc@4.45.1':
optional: true
'@shikijs/core@1.2.0': {}
@@ -4237,58 +4229,71 @@ snapshots:
dependencies:
shiki: 1.2.0
- '@sinclair/typebox@0.34.33':
+ '@simple-libs/child-process-utils@1.0.1':
+ dependencies:
+ '@simple-libs/stream-utils': 1.1.0
+ '@types/node': 20.19.9
+
+ '@simple-libs/stream-utils@1.1.0':
+ dependencies:
+ '@types/node': 20.19.9
+
+ '@sinclair/typebox@0.34.38':
optional: true
- '@swc/core-darwin-arm64@1.11.24':
+ '@sindresorhus/is@7.0.2': {}
+
+ '@speed-highlight/core@1.2.7': {}
+
+ '@swc/core-darwin-arm64@1.13.1':
optional: true
- '@swc/core-darwin-x64@1.11.24':
+ '@swc/core-darwin-x64@1.13.1':
optional: true
- '@swc/core-linux-arm-gnueabihf@1.11.24':
+ '@swc/core-linux-arm-gnueabihf@1.13.1':
optional: true
- '@swc/core-linux-arm64-gnu@1.11.24':
+ '@swc/core-linux-arm64-gnu@1.13.1':
optional: true
- '@swc/core-linux-arm64-musl@1.11.24':
+ '@swc/core-linux-arm64-musl@1.13.1':
optional: true
- '@swc/core-linux-x64-gnu@1.11.24':
+ '@swc/core-linux-x64-gnu@1.13.1':
optional: true
- '@swc/core-linux-x64-musl@1.11.24':
+ '@swc/core-linux-x64-musl@1.13.1':
optional: true
- '@swc/core-win32-arm64-msvc@1.11.24':
+ '@swc/core-win32-arm64-msvc@1.13.1':
optional: true
- '@swc/core-win32-ia32-msvc@1.11.24':
+ '@swc/core-win32-ia32-msvc@1.13.1':
optional: true
- '@swc/core-win32-x64-msvc@1.11.24':
+ '@swc/core-win32-x64-msvc@1.13.1':
optional: true
- '@swc/core@1.11.24':
+ '@swc/core@1.13.1':
dependencies:
'@swc/counter': 0.1.3
- '@swc/types': 0.1.21
+ '@swc/types': 0.1.23
optionalDependencies:
- '@swc/core-darwin-arm64': 1.11.24
- '@swc/core-darwin-x64': 1.11.24
- '@swc/core-linux-arm-gnueabihf': 1.11.24
- '@swc/core-linux-arm64-gnu': 1.11.24
- '@swc/core-linux-arm64-musl': 1.11.24
- '@swc/core-linux-x64-gnu': 1.11.24
- '@swc/core-linux-x64-musl': 1.11.24
- '@swc/core-win32-arm64-msvc': 1.11.24
- '@swc/core-win32-ia32-msvc': 1.11.24
- '@swc/core-win32-x64-msvc': 1.11.24
+ '@swc/core-darwin-arm64': 1.13.1
+ '@swc/core-darwin-x64': 1.13.1
+ '@swc/core-linux-arm-gnueabihf': 1.13.1
+ '@swc/core-linux-arm64-gnu': 1.13.1
+ '@swc/core-linux-arm64-musl': 1.13.1
+ '@swc/core-linux-x64-gnu': 1.13.1
+ '@swc/core-linux-x64-musl': 1.13.1
+ '@swc/core-win32-arm64-msvc': 1.13.1
+ '@swc/core-win32-ia32-msvc': 1.13.1
+ '@swc/core-win32-x64-msvc': 1.13.1
'@swc/counter@0.1.3': {}
- '@swc/types@0.1.21':
+ '@swc/types@0.1.23':
dependencies:
'@swc/counter': 0.1.3
@@ -4296,29 +4301,26 @@ snapshots:
dependencies:
debug: 4.4.1
fflate: 0.8.2
- token-types: 6.0.0
+ token-types: 6.0.3
transitivePeerDependencies:
- supports-color
'@tokenizer/token@0.3.0': {}
- '@tybys/wasm-util@0.9.0':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@types/body-parser@1.19.5':
+ '@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 20.17.47
+ '@types/node': 20.19.9
- '@types/bun@1.2.13':
+ '@types/bun@1.2.19(@types/react@18.3.23)':
dependencies:
- bun-types: 1.2.13
+ bun-types: 1.2.19(@types/react@18.3.23)
+ transitivePeerDependencies:
+ - '@types/react'
'@types/connect@3.4.38':
dependencies:
- '@types/node': 20.17.47
+ '@types/node': 20.19.9
'@types/debug@4.1.12':
dependencies:
@@ -4328,28 +4330,28 @@ snapshots:
'@types/estree-jsx@1.0.5':
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
- '@types/estree@1.0.7': {}
+ '@types/estree@1.0.8': {}
- '@types/express-serve-static-core@5.0.6':
+ '@types/express-serve-static-core@5.0.7':
dependencies:
- '@types/node': 20.17.47
+ '@types/node': 20.19.9
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
- '@types/send': 0.17.4
+ '@types/send': 0.17.5
- '@types/express@5.0.2':
+ '@types/express@5.0.3':
dependencies:
- '@types/body-parser': 1.19.5
- '@types/express-serve-static-core': 5.0.6
- '@types/serve-static': 1.15.7
+ '@types/body-parser': 1.19.6
+ '@types/express-serve-static-core': 5.0.7
+ '@types/serve-static': 1.15.8
'@types/hast@3.0.4':
dependencies:
'@types/unist': 3.0.3
- '@types/http-errors@2.0.4': {}
+ '@types/http-errors@2.0.5': {}
'@types/mdast@4.0.4':
dependencies:
@@ -4361,37 +4363,37 @@ snapshots:
'@types/ms@2.1.0': {}
- '@types/node@20.17.47':
+ '@types/node@20.19.9':
dependencies:
- undici-types: 6.19.8
+ undici-types: 6.21.0
'@types/normalize-package-data@2.4.4': {}
- '@types/prop-types@15.7.14': {}
+ '@types/prop-types@15.7.15': {}
'@types/qs@6.14.0': {}
'@types/range-parser@1.2.7': {}
- '@types/react-dom@18.3.7(@types/react@18.3.21)':
+ '@types/react-dom@18.3.7(@types/react@18.3.23)':
dependencies:
- '@types/react': 18.3.21
+ '@types/react': 18.3.23
- '@types/react@18.3.21':
+ '@types/react@18.3.23':
dependencies:
- '@types/prop-types': 15.7.14
+ '@types/prop-types': 15.7.15
csstype: 3.1.3
- '@types/send@0.17.4':
+ '@types/send@0.17.5':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 20.17.47
+ '@types/node': 20.19.9
- '@types/serve-static@1.15.7':
+ '@types/serve-static@1.15.8':
dependencies:
- '@types/http-errors': 2.0.4
- '@types/node': 20.17.47
- '@types/send': 0.17.4
+ '@types/http-errors': 2.0.5
+ '@types/node': 20.19.9
+ '@types/send': 0.17.5
'@types/unist@2.0.11': {}
@@ -4399,9 +4401,9 @@ snapshots:
'@ungap/structured-clone@1.3.0': {}
- '@universal-middleware/cloudflare@0.4.8(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/cloudflare@0.4.10(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@hattip/core'
@@ -4413,21 +4415,21 @@ snapshots:
'@universal-middleware/compress@0.2.30': {}
- '@universal-middleware/core@0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/core@0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
regexparam: 3.0.0
tough-cookie: 5.1.2
optionalDependencies:
- '@cloudflare/workers-types': 4.20250515.0
+ '@cloudflare/workers-types': 4.20250722.0
'@hattip/core': 0.0.49
- elysia: 1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3)
- fastify: 5.3.3
+ elysia: 1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3)
+ fastify: 5.4.0
h3: 1.15.3
- hono: 4.7.9
+ hono: 4.8.5
- '@universal-middleware/elysia@0.5.1(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/elysia@0.5.3(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@hattip/core'
@@ -4437,9 +4439,9 @@ snapshots:
- h3
- hono
- '@universal-middleware/express@0.4.16(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/express@0.4.18(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@hattip/core'
@@ -4449,10 +4451,10 @@ snapshots:
- h3
- hono
- '@universal-middleware/fastify@0.5.18(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/fastify@0.5.20(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
- '@universal-middleware/express': 0.4.16(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
+ '@universal-middleware/express': 0.4.18(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
fastify-raw-body: 5.0.0
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -4463,9 +4465,9 @@ snapshots:
- h3
- hono
- '@universal-middleware/h3@0.4.10(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/h3@0.4.12(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@hattip/core'
@@ -4475,9 +4477,9 @@ snapshots:
- h3
- hono
- '@universal-middleware/hattip@0.4.9(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/hattip@0.4.11(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@hattip/core'
@@ -4487,9 +4489,9 @@ snapshots:
- h3
- hono
- '@universal-middleware/hono@0.4.12(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)':
+ '@universal-middleware/hono@0.4.15(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)':
dependencies:
- '@universal-middleware/core': 0.4.7(@cloudflare/workers-types@4.20250515.0)(@hattip/core@0.0.49)(elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3))(fastify@5.3.3)(h3@1.15.3)(hono@4.7.9)
+ '@universal-middleware/core': 0.4.9(@cloudflare/workers-types@4.20250722.0)(@hattip/core@0.0.49)(elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3))(fastify@5.4.0)(h3@1.15.3)(hono@4.8.5)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@hattip/core'
@@ -4504,10 +4506,11 @@ snapshots:
mrmime: 2.0.1
totalist: 3.0.1
- '@vitejs/plugin-react-swc@3.9.0(vite@6.3.5(@types/node@20.17.47))':
+ '@vitejs/plugin-react-swc@3.11.0(vite@6.3.5(@types/node@20.19.9))':
dependencies:
- '@swc/core': 1.11.24
- vite: 6.3.5(@types/node@20.17.47)
+ '@rolldown/pluginutils': 1.0.0-beta.27
+ '@swc/core': 1.13.1
+ vite: 6.3.5(@types/node@20.19.9)
transitivePeerDependencies:
- '@swc/helpers'
@@ -4523,11 +4526,6 @@ snapshots:
fast-querystring: 1.1.2
tslib: 2.8.1
- JSONStream@1.3.5:
- dependencies:
- jsonparse: 1.3.1
- through: 2.3.8
-
abstract-logging@2.0.1: {}
accepts@2.0.0:
@@ -4535,17 +4533,15 @@ snapshots:
mime-types: 3.0.1
negotiator: 1.0.0
- acorn-jsx@5.3.2(acorn@8.14.1):
+ acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
- acorn: 8.14.1
+ acorn: 8.15.0
acorn-walk@8.3.2: {}
acorn@8.14.0: {}
- acorn@8.14.1: {}
-
- add-stream@1.0.0: {}
+ acorn@8.15.0: {}
ajv-formats@3.0.1(ajv@8.17.1):
optionalDependencies:
@@ -4558,21 +4554,21 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- algoliasearch@5.25.0:
- dependencies:
- '@algolia/client-abtesting': 5.25.0
- '@algolia/client-analytics': 5.25.0
- '@algolia/client-common': 5.25.0
- '@algolia/client-insights': 5.25.0
- '@algolia/client-personalization': 5.25.0
- '@algolia/client-query-suggestions': 5.25.0
- '@algolia/client-search': 5.25.0
- '@algolia/ingestion': 1.25.0
- '@algolia/monitoring': 1.25.0
- '@algolia/recommend': 5.25.0
- '@algolia/requester-browser-xhr': 5.25.0
- '@algolia/requester-fetch': 5.25.0
- '@algolia/requester-node-http': 5.25.0
+ algoliasearch@5.34.0:
+ dependencies:
+ '@algolia/client-abtesting': 5.34.0
+ '@algolia/client-analytics': 5.34.0
+ '@algolia/client-common': 5.34.0
+ '@algolia/client-insights': 5.34.0
+ '@algolia/client-personalization': 5.34.0
+ '@algolia/client-query-suggestions': 5.34.0
+ '@algolia/client-search': 5.34.0
+ '@algolia/ingestion': 1.34.0
+ '@algolia/monitoring': 1.34.0
+ '@algolia/recommend': 5.34.0
+ '@algolia/requester-browser-xhr': 5.34.0
+ '@algolia/requester-fetch': 5.34.0
+ '@algolia/requester-node-http': 5.34.0
ansi-regex@5.0.1: {}
@@ -4586,19 +4582,8 @@ snapshots:
any-promise@1.3.0: {}
- arktype@2.1.20:
- dependencies:
- '@ark/schema': 0.46.0
- '@ark/util': 0.46.0
-
array-ify@1.0.0: {}
- as-table@1.0.55:
- dependencies:
- printable-characters: 1.0.42
-
- asap@2.0.6: {}
-
assertion-error@1.1.0: {}
astring@1.9.0: {}
@@ -4607,7 +4592,7 @@ snapshots:
avvio@9.1.0:
dependencies:
- '@fastify/error': 4.1.0
+ '@fastify/error': 4.2.0
fastq: 1.19.1
bail@2.0.2: {}
@@ -4630,7 +4615,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- brace-expansion@2.0.1:
+ brace-expansion@2.0.2:
dependencies:
balanced-match: 1.0.2
@@ -4640,13 +4625,14 @@ snapshots:
buffer-from@1.1.2: {}
- bun-types@1.2.13:
+ bun-types@1.2.19(@types/react@18.3.23):
dependencies:
- '@types/node': 20.17.47
+ '@types/node': 20.19.9
+ '@types/react': 18.3.23
- bundle-require@5.1.0(esbuild@0.25.4):
+ bundle-require@5.1.0(esbuild@0.25.8):
dependencies:
- esbuild: 0.25.4
+ esbuild: 0.25.8
load-tsconfig: 0.2.5
busboy@1.6.0:
@@ -4707,13 +4693,11 @@ snapshots:
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
- optional: true
color@4.2.3:
dependencies:
color-convert: 2.0.1
color-string: 1.9.1
- optional: true
comma-separated-tokens@2.0.3: {}
@@ -4726,6 +4710,8 @@ snapshots:
array-ify: 1.0.0
dot-prop: 5.3.0
+ confbox@0.1.8: {}
+
consola@3.4.2: {}
content-disposition@1.0.0:
@@ -4734,76 +4720,37 @@ snapshots:
content-type@1.0.5: {}
- conventional-changelog-angular@7.0.0:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-atom@4.0.0: {}
-
- conventional-changelog-codemirror@4.0.0: {}
-
- conventional-changelog-conventionalcommits@7.0.2:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-core@7.0.0:
- dependencies:
- '@hutson/parse-repository-url': 5.0.0
- add-stream: 1.0.0
- conventional-changelog-writer: 7.0.1
- conventional-commits-parser: 5.0.0
- git-raw-commits: 4.0.0
- git-semver-tags: 7.0.1
- hosted-git-info: 7.0.2
- normalize-package-data: 6.0.2
- read-pkg: 8.1.0
- read-pkg-up: 10.1.0
-
- conventional-changelog-ember@4.0.0: {}
-
- conventional-changelog-eslint@5.0.0: {}
-
- conventional-changelog-express@4.0.0: {}
-
- conventional-changelog-jquery@5.0.0: {}
-
- conventional-changelog-jshint@4.0.0:
+ conventional-changelog-angular@8.0.0:
dependencies:
compare-func: 2.0.0
- conventional-changelog-preset-loader@4.1.0: {}
+ conventional-changelog-preset-loader@5.0.0: {}
- conventional-changelog-writer@7.0.1:
+ conventional-changelog-writer@8.2.0:
dependencies:
- conventional-commits-filter: 4.0.0
+ conventional-commits-filter: 5.0.0
handlebars: 4.7.8
- json-stringify-safe: 5.0.1
- meow: 12.1.1
+ meow: 13.2.0
semver: 7.7.2
- split2: 4.2.0
- conventional-changelog@5.1.0:
+ conventional-changelog@7.0.2(conventional-commits-filter@5.0.0):
dependencies:
- conventional-changelog-angular: 7.0.0
- conventional-changelog-atom: 4.0.0
- conventional-changelog-codemirror: 4.0.0
- conventional-changelog-conventionalcommits: 7.0.2
- conventional-changelog-core: 7.0.0
- conventional-changelog-ember: 4.0.0
- conventional-changelog-eslint: 5.0.0
- conventional-changelog-express: 4.0.0
- conventional-changelog-jquery: 5.0.0
- conventional-changelog-jshint: 4.0.0
- conventional-changelog-preset-loader: 4.1.0
+ '@conventional-changelog/git-client': 2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.0)
+ '@types/normalize-package-data': 2.4.4
+ conventional-changelog-preset-loader: 5.0.0
+ conventional-changelog-writer: 8.2.0
+ conventional-commits-parser: 6.2.0
+ fd-package-json: 1.2.0
+ meow: 13.2.0
+ normalize-package-data: 7.0.0
+ transitivePeerDependencies:
+ - conventional-commits-filter
- conventional-commits-filter@4.0.0: {}
+ conventional-commits-filter@5.0.0: {}
- conventional-commits-parser@5.0.0:
+ conventional-commits-parser@6.2.0:
dependencies:
- JSONStream: 1.3.5
- is-text-path: 2.0.0
- meow: 12.1.1
- split2: 4.2.0
+ meow: 13.2.0
cookie-es@1.2.2: {}
@@ -4825,15 +4772,11 @@ snapshots:
csstype@3.1.3: {}
- dargs@8.1.0: {}
-
- data-uri-to-buffer@2.0.2: {}
-
debug@4.4.1:
dependencies:
ms: 2.1.3
- decode-named-character-reference@1.1.0:
+ decode-named-character-reference@1.2.0:
dependencies:
character-entities: 2.0.2
@@ -4849,18 +4792,12 @@ snapshots:
destr@2.0.5: {}
- detect-libc@2.0.4:
- optional: true
+ detect-libc@2.0.4: {}
devlop@1.1.0:
dependencies:
dequal: 2.0.3
- dezalgo@1.0.4:
- dependencies:
- asap: 2.0.6
- wrappy: 1.0.2
-
dot-prop@5.3.0:
dependencies:
is-obj: 2.0.0
@@ -4875,15 +4812,15 @@ snapshots:
ee-first@1.1.1: {}
- elysia@1.3.1(exact-mirror@0.1.2(@sinclair/typebox@0.34.33))(file-type@20.5.0)(typescript@5.8.3):
+ elysia@1.3.5(exact-mirror@0.1.2(@sinclair/typebox@0.34.38))(file-type@21.0.0)(typescript@5.8.3):
dependencies:
cookie: 1.0.2
- exact-mirror: 0.1.2(@sinclair/typebox@0.34.33)
+ exact-mirror: 0.1.2(@sinclair/typebox@0.34.38)
fast-decode-uri-component: 1.0.1
- file-type: 20.5.0
+ file-type: 21.0.0
typescript: 5.8.3
optionalDependencies:
- '@sinclair/typebox': 0.34.33
+ '@sinclair/typebox': 0.34.38
openapi-types: 12.1.3
emoji-regex@8.0.0: {}
@@ -4892,11 +4829,9 @@ snapshots:
encodeurl@2.0.0: {}
- entities@6.0.0: {}
+ entities@6.0.1: {}
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
+ error-stack-parser-es@1.0.5: {}
es-define-property@1.0.1: {}
@@ -4963,13 +4898,42 @@ snapshots:
'@esbuild/win32-ia32': 0.25.4
'@esbuild/win32-x64': 0.25.4
+ esbuild@0.25.8:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.8
+ '@esbuild/android-arm': 0.25.8
+ '@esbuild/android-arm64': 0.25.8
+ '@esbuild/android-x64': 0.25.8
+ '@esbuild/darwin-arm64': 0.25.8
+ '@esbuild/darwin-x64': 0.25.8
+ '@esbuild/freebsd-arm64': 0.25.8
+ '@esbuild/freebsd-x64': 0.25.8
+ '@esbuild/linux-arm': 0.25.8
+ '@esbuild/linux-arm64': 0.25.8
+ '@esbuild/linux-ia32': 0.25.8
+ '@esbuild/linux-loong64': 0.25.8
+ '@esbuild/linux-mips64el': 0.25.8
+ '@esbuild/linux-ppc64': 0.25.8
+ '@esbuild/linux-riscv64': 0.25.8
+ '@esbuild/linux-s390x': 0.25.8
+ '@esbuild/linux-x64': 0.25.8
+ '@esbuild/netbsd-arm64': 0.25.8
+ '@esbuild/netbsd-x64': 0.25.8
+ '@esbuild/openbsd-arm64': 0.25.8
+ '@esbuild/openbsd-x64': 0.25.8
+ '@esbuild/openharmony-arm64': 0.25.8
+ '@esbuild/sunos-x64': 0.25.8
+ '@esbuild/win32-arm64': 0.25.8
+ '@esbuild/win32-ia32': 0.25.8
+ '@esbuild/win32-x64': 0.25.8
+
escape-html@1.0.3: {}
escape-string-regexp@5.0.0: {}
estree-util-attach-comments@3.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-util-build-jsx@3.0.1:
dependencies:
@@ -4995,13 +4959,13 @@ snapshots:
estree-walker@3.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
etag@1.8.1: {}
- exact-mirror@0.1.2(@sinclair/typebox@0.34.33):
+ exact-mirror@0.1.2(@sinclair/typebox@0.34.38):
optionalDependencies:
- '@sinclair/typebox': 0.34.33
+ '@sinclair/typebox': 0.34.38
execa@5.1.1:
dependencies:
@@ -5043,13 +5007,13 @@ snapshots:
router: 2.2.0
send: 1.2.0
serve-static: 2.2.0
- statuses: 2.0.1
+ statuses: 2.0.2
type-is: 2.0.1
vary: 1.1.2
transitivePeerDependencies:
- supports-color
- exsolve@1.0.5: {}
+ exsolve@1.0.7: {}
extend@3.0.2: {}
@@ -5090,10 +5054,10 @@ snapshots:
raw-body: 3.0.0
secure-json-parse: 2.7.0
- fastify@5.3.3:
+ fastify@5.4.0:
dependencies:
'@fastify/ajv-compiler': 4.0.2
- '@fastify/error': 4.1.0
+ '@fastify/error': 4.2.0
'@fastify/fast-json-stringify-compiler': 5.0.3
'@fastify/proxy-addr': 5.0.0
abstract-logging: 2.0.1
@@ -5101,7 +5065,7 @@ snapshots:
fast-json-stringify: 6.0.1
find-my-way: 9.3.0
light-my-request: 6.6.0
- pino: 9.6.0
+ pino: 9.7.0
process-warning: 5.0.0
rfdc: 1.4.1
secure-json-parse: 4.0.0
@@ -5112,17 +5076,21 @@ snapshots:
dependencies:
reusify: 1.1.0
- fdir@6.4.4(picomatch@4.0.2):
+ fd-package-json@1.2.0:
+ dependencies:
+ walk-up-path: 3.0.1
+
+ fdir@6.4.6(picomatch@4.0.3):
optionalDependencies:
- picomatch: 4.0.2
+ picomatch: 4.0.3
fflate@0.8.2: {}
- file-type@20.5.0:
+ file-type@21.0.0:
dependencies:
'@tokenizer/inflate': 0.2.7
- strtok3: 10.2.2
- token-types: 6.0.0
+ strtok3: 10.3.2
+ token-types: 6.0.3
uint8array-extras: 1.4.0
transitivePeerDependencies:
- supports-color
@@ -5138,7 +5106,7 @@ snapshots:
escape-html: 1.0.3
on-finished: 2.4.1
parseurl: 1.3.3
- statuses: 2.0.1
+ statuses: 2.0.2
transitivePeerDependencies:
- supports-color
@@ -5148,22 +5116,17 @@ snapshots:
fast-querystring: 1.1.2
safe-regex2: 5.0.0
- find-up@6.3.0:
+ fix-dts-default-cjs-exports@1.0.1:
dependencies:
- locate-path: 7.2.0
- path-exists: 5.0.0
+ magic-string: 0.30.17
+ mlly: 1.7.4
+ rollup: 4.45.1
foreground-child@3.3.1:
dependencies:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- formidable@3.5.4:
- dependencies:
- '@paralleldrive/cuid2': 2.2.2
- dezalgo: 1.0.4
- once: 1.4.0
-
forwarded@0.2.0: {}
fresh@2.0.0: {}
@@ -5198,24 +5161,8 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- get-source@2.0.12:
- dependencies:
- data-uri-to-buffer: 2.0.2
- source-map: 0.6.1
-
get-stream@6.0.1: {}
- git-raw-commits@4.0.0:
- dependencies:
- dargs: 8.1.0
- meow: 12.1.1
- split2: 4.2.0
-
- git-semver-tags@7.0.1:
- dependencies:
- meow: 12.1.1
- semver: 7.7.2
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -5240,7 +5187,7 @@ snapshots:
defu: 6.1.4
destr: 2.0.5
iron-webcrypto: 1.2.1
- node-mock-http: 1.0.0
+ node-mock-http: 1.0.1
radix3: 1.1.2
ufo: 1.6.1
uncrypto: 0.1.3
@@ -5286,7 +5233,7 @@ snapshots:
hast-util-to-estree@3.1.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
@@ -5299,7 +5246,7 @@ snapshots:
mdast-util-mdxjs-esm: 2.0.1
property-information: 7.1.0
space-separated-tokens: 2.0.2
- style-to-js: 1.1.16
+ style-to-js: 1.1.17
unist-util-position: 5.0.0
zwitch: 2.0.4
transitivePeerDependencies:
@@ -5307,7 +5254,7 @@ snapshots:
hast-util-to-jsx-runtime@2.3.6:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/hast': 3.0.4
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
@@ -5319,7 +5266,7 @@ snapshots:
mdast-util-mdxjs-esm: 2.0.1
property-information: 7.1.0
space-separated-tokens: 2.0.2
- style-to-js: 1.1.16
+ style-to-js: 1.1.17
unist-util-position: 5.0.0
vfile-message: 4.0.2
transitivePeerDependencies:
@@ -5341,9 +5288,9 @@ snapshots:
property-information: 7.1.0
space-separated-tokens: 2.0.2
- hono@4.7.9: {}
+ hono@4.8.5: {}
- hosted-git-info@7.0.2:
+ hosted-git-info@8.1.0:
dependencies:
lru-cache: 10.4.3
@@ -5380,10 +5327,7 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
- is-arrayish@0.2.1: {}
-
- is-arrayish@0.3.2:
- optional: true
+ is-arrayish@0.3.2: {}
is-decimal@2.0.1: {}
@@ -5407,14 +5351,10 @@ snapshots:
is-reference@3.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
is-stream@2.0.1: {}
- is-text-path@2.0.0:
- dependencies:
- text-extensions: 2.4.0
-
isexe@2.0.0: {}
jackspeak@3.4.3:
@@ -5427,19 +5367,15 @@ snapshots:
js-tokens@4.0.0: {}
- json-parse-even-better-errors@3.0.2: {}
-
json-schema-ref-resolver@2.0.1:
dependencies:
dequal: 2.0.3
json-schema-traverse@1.0.0: {}
- json-stringify-safe@5.0.1: {}
-
json5@2.2.3: {}
- jsonparse@1.3.1: {}
+ kleur@4.1.5: {}
light-my-request@6.6.0:
dependencies:
@@ -5451,14 +5387,8 @@ snapshots:
lines-and-columns@1.2.4: {}
- lines-and-columns@2.0.4: {}
-
load-tsconfig@0.2.5: {}
- locate-path@7.2.0:
- dependencies:
- p-locate: 6.0.0
-
lodash.sortby@4.7.0: {}
longest-streak@3.1.0: {}
@@ -5475,7 +5405,7 @@ snapshots:
magic-string@0.30.17:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.4
markdown-extensions@2.0.0: {}
@@ -5494,7 +5424,7 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
- decode-named-character-reference: 1.1.0
+ decode-named-character-reference: 1.2.0
devlop: 1.1.0
mdast-util-to-string: 4.0.0
micromark: 4.0.2
@@ -5648,7 +5578,7 @@ snapshots:
media-typer@1.1.0: {}
- meow@12.1.1: {}
+ meow@13.2.0: {}
merge-descriptors@2.0.0: {}
@@ -5658,7 +5588,7 @@ snapshots:
micromark-core-commonmark@2.0.3:
dependencies:
- decode-named-character-reference: 1.1.0
+ decode-named-character-reference: 1.2.0
devlop: 1.1.0
micromark-factory-destination: 2.0.1
micromark-factory-label: 2.0.1
@@ -5735,7 +5665,7 @@ snapshots:
micromark-extension-mdx-expression@3.0.1:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-factory-mdx-expression: 2.0.3
micromark-factory-space: 2.0.1
@@ -5746,7 +5676,7 @@ snapshots:
micromark-extension-mdx-jsx@3.0.2:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
micromark-factory-mdx-expression: 2.0.3
@@ -5763,7 +5693,7 @@ snapshots:
micromark-extension-mdxjs-esm@3.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-util-character: 2.1.1
@@ -5775,8 +5705,8 @@ snapshots:
micromark-extension-mdxjs@3.0.0:
dependencies:
- acorn: 8.14.1
- acorn-jsx: 5.3.2(acorn@8.14.1)
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
micromark-extension-mdx-expression: 3.0.1
micromark-extension-mdx-jsx: 3.0.2
micromark-extension-mdx-md: 2.0.0
@@ -5799,7 +5729,7 @@ snapshots:
micromark-factory-mdx-expression@2.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -5854,7 +5784,7 @@ snapshots:
micromark-util-decode-string@2.0.1:
dependencies:
- decode-named-character-reference: 1.1.0
+ decode-named-character-reference: 1.2.0
micromark-util-character: 2.1.1
micromark-util-decode-numeric-character-reference: 2.0.2
micromark-util-symbol: 2.0.1
@@ -5863,7 +5793,7 @@ snapshots:
micromark-util-events-to-acorn@2.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/unist': 3.0.3
devlop: 1.1.0
estree-util-visit: 2.0.0
@@ -5902,7 +5832,7 @@ snapshots:
dependencies:
'@types/debug': 4.1.12
debug: 4.4.1
- decode-named-character-reference: 1.1.0
+ decode-named-character-reference: 1.2.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
@@ -5941,18 +5871,19 @@ snapshots:
mimic-fn@2.1.0: {}
- miniflare@4.20250508.1:
+ miniflare@4.20250712.1:
dependencies:
'@cspotcode/source-map-support': 0.8.1
acorn: 8.14.0
acorn-walk: 8.3.2
exit-hook: 2.2.1
glob-to-regexp: 0.4.1
+ sharp: 0.33.5
stoppable: 1.1.0
- undici: 5.29.0
- workerd: 1.20250508.0
+ undici: 7.12.0
+ workerd: 1.20250712.0
ws: 8.18.0
- youch: 3.3.4
+ youch: 4.1.0-beta.10
zod: 3.22.3
transitivePeerDependencies:
- bufferutil
@@ -5960,18 +5891,23 @@ snapshots:
minimatch@9.0.5:
dependencies:
- brace-expansion: 2.0.1
+ brace-expansion: 2.0.2
minimist@1.2.8: {}
minipass@7.1.2: {}
+ mlly@1.7.4:
+ dependencies:
+ acorn: 8.15.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.1
+
mrmime@2.0.1: {}
ms@2.1.3: {}
- mustache@4.2.0: {}
-
mz@2.7.0:
dependencies:
any-promise: 1.3.0
@@ -5990,11 +5926,11 @@ snapshots:
dependencies:
whatwg-url: 5.0.0
- node-mock-http@1.0.0: {}
+ node-mock-http@1.0.1: {}
- normalize-package-data@6.0.2:
+ normalize-package-data@7.0.0:
dependencies:
- hosted-git-info: 7.0.2
+ hosted-git-info: 8.1.0
semver: 7.7.2
validate-npm-package-license: 3.0.4
@@ -6025,27 +5961,6 @@ snapshots:
openapi-types@12.1.3:
optional: true
- oxc-transform@0.64.0:
- optionalDependencies:
- '@oxc-transform/binding-darwin-arm64': 0.64.0
- '@oxc-transform/binding-darwin-x64': 0.64.0
- '@oxc-transform/binding-linux-arm-gnueabihf': 0.64.0
- '@oxc-transform/binding-linux-arm64-gnu': 0.64.0
- '@oxc-transform/binding-linux-arm64-musl': 0.64.0
- '@oxc-transform/binding-linux-x64-gnu': 0.64.0
- '@oxc-transform/binding-linux-x64-musl': 0.64.0
- '@oxc-transform/binding-wasm32-wasi': 0.64.0
- '@oxc-transform/binding-win32-arm64-msvc': 0.64.0
- '@oxc-transform/binding-win32-x64-msvc': 0.64.0
-
- p-limit@4.0.0:
- dependencies:
- yocto-queue: 1.2.1
-
- p-locate@6.0.0:
- dependencies:
- p-limit: 4.0.0
-
package-json-from-dist@1.0.1: {}
parse-entities@4.0.2:
@@ -6053,29 +5968,19 @@ snapshots:
'@types/unist': 2.0.11
character-entities-legacy: 3.0.0
character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.1.0
+ decode-named-character-reference: 1.2.0
is-alphanumerical: 2.0.1
is-decimal: 2.0.1
is-hexadecimal: 2.0.1
- parse-json@7.1.1:
- dependencies:
- '@babel/code-frame': 7.27.1
- error-ex: 1.3.2
- json-parse-even-better-errors: 3.0.2
- lines-and-columns: 2.0.4
- type-fest: 3.13.1
-
parse-numeric-range@1.3.0: {}
parse5@7.3.0:
dependencies:
- entities: 6.0.0
+ entities: 6.0.1
parseurl@1.3.3: {}
- path-exists@5.0.0: {}
-
path-key@3.1.1: {}
path-scurry@1.11.1:
@@ -6091,11 +5996,9 @@ snapshots:
pathval@1.1.1: {}
- peek-readable@7.0.0: {}
-
periscopic@3.1.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-walker: 3.0.3
is-reference: 3.0.3
@@ -6103,7 +6006,7 @@ snapshots:
picomatch@2.3.1: {}
- picomatch@4.0.2: {}
+ picomatch@4.0.3: {}
pino-abstract-transport@2.0.0:
dependencies:
@@ -6111,14 +6014,14 @@ snapshots:
pino-std-serializers@7.0.0: {}
- pino@9.6.0:
+ pino@9.7.0:
dependencies:
atomic-sleep: 1.0.0
fast-redact: 3.5.0
on-exit-leak-free: 2.1.2
pino-abstract-transport: 2.0.0
pino-std-serializers: 7.0.0
- process-warning: 4.0.1
+ process-warning: 5.0.0
quick-format-unescaped: 4.0.4
real-require: 0.2.0
safe-stable-stringify: 2.5.0
@@ -6131,35 +6034,39 @@ snapshots:
dependencies:
pngjs: 6.0.0
- playwright-chromium@1.52.0:
+ pkg-types@1.3.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.7.4
+ pathe: 2.0.3
+
+ playwright-chromium@1.54.1:
dependencies:
- playwright-core: 1.52.0
+ playwright-core: 1.54.1
- playwright-core@1.52.0: {}
+ playwright-core@1.54.1: {}
- playwright@1.52.0:
+ playwright@1.54.1:
dependencies:
- playwright-core: 1.52.0
+ playwright-core: 1.54.1
optionalDependencies:
fsevents: 2.3.2
pngjs@6.0.0: {}
- postcss-load-config@6.0.1(postcss@8.5.3):
+ postcss-load-config@6.0.1(postcss@8.5.6):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
- postcss: 8.5.3
+ postcss: 8.5.6
- postcss@8.5.3:
+ postcss@8.5.6:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
- prettier@3.5.3: {}
-
- printable-characters@1.0.42: {}
+ prettier@3.6.2: {}
process-warning@4.0.1: {}
@@ -6203,19 +6110,6 @@ snapshots:
dependencies:
loose-envify: 1.4.0
- read-pkg-up@10.1.0:
- dependencies:
- find-up: 6.3.0
- read-pkg: 8.1.0
- type-fest: 4.41.0
-
- read-pkg@8.1.0:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 6.0.2
- parse-json: 7.1.1
- type-fest: 4.41.0
-
readdirp@4.1.2: {}
real-require@0.2.0: {}
@@ -6289,30 +6183,30 @@ snapshots:
rfdc@1.4.1: {}
- rollup@4.38.0:
+ rollup@4.45.1:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.38.0
- '@rollup/rollup-android-arm64': 4.38.0
- '@rollup/rollup-darwin-arm64': 4.38.0
- '@rollup/rollup-darwin-x64': 4.38.0
- '@rollup/rollup-freebsd-arm64': 4.38.0
- '@rollup/rollup-freebsd-x64': 4.38.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.38.0
- '@rollup/rollup-linux-arm-musleabihf': 4.38.0
- '@rollup/rollup-linux-arm64-gnu': 4.38.0
- '@rollup/rollup-linux-arm64-musl': 4.38.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.38.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.38.0
- '@rollup/rollup-linux-riscv64-gnu': 4.38.0
- '@rollup/rollup-linux-riscv64-musl': 4.38.0
- '@rollup/rollup-linux-s390x-gnu': 4.38.0
- '@rollup/rollup-linux-x64-gnu': 4.38.0
- '@rollup/rollup-linux-x64-musl': 4.38.0
- '@rollup/rollup-win32-arm64-msvc': 4.38.0
- '@rollup/rollup-win32-ia32-msvc': 4.38.0
- '@rollup/rollup-win32-x64-msvc': 4.38.0
+ '@rollup/rollup-android-arm-eabi': 4.45.1
+ '@rollup/rollup-android-arm64': 4.45.1
+ '@rollup/rollup-darwin-arm64': 4.45.1
+ '@rollup/rollup-darwin-x64': 4.45.1
+ '@rollup/rollup-freebsd-arm64': 4.45.1
+ '@rollup/rollup-freebsd-x64': 4.45.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.45.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.45.1
+ '@rollup/rollup-linux-arm64-gnu': 4.45.1
+ '@rollup/rollup-linux-arm64-musl': 4.45.1
+ '@rollup/rollup-linux-loongarch64-gnu': 4.45.1
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.45.1
+ '@rollup/rollup-linux-riscv64-musl': 4.45.1
+ '@rollup/rollup-linux-s390x-gnu': 4.45.1
+ '@rollup/rollup-linux-x64-gnu': 4.45.1
+ '@rollup/rollup-linux-x64-musl': 4.45.1
+ '@rollup/rollup-win32-arm64-msvc': 4.45.1
+ '@rollup/rollup-win32-ia32-msvc': 4.45.1
+ '@rollup/rollup-win32-x64-msvc': 4.45.1
fsevents: 2.3.3
router@2.2.0:
@@ -6363,7 +6257,7 @@ snapshots:
ms: 2.1.3
on-finished: 2.4.1
range-parser: 1.2.1
- statuses: 2.0.1
+ statuses: 2.0.2
transitivePeerDependencies:
- supports-color
@@ -6405,7 +6299,6 @@ snapshots:
'@img/sharp-wasm32': 0.33.5
'@img/sharp-win32-ia32': 0.33.5
'@img/sharp-win32-x64': 0.33.5
- optional: true
shebang-command@2.0.0:
dependencies:
@@ -6452,7 +6345,6 @@ snapshots:
simple-swizzle@0.2.2:
dependencies:
is-arrayish: 0.3.2
- optional: true
sirv@3.0.1:
dependencies:
@@ -6497,13 +6389,10 @@ snapshots:
split2@4.2.0: {}
- stacktracey@2.1.8:
- dependencies:
- as-table: 1.0.55
- get-source: 2.0.12
-
statuses@2.0.1: {}
+ statuses@2.0.2: {}
+
stoppable@1.1.0: {}
streamsearch@1.1.0: {}
@@ -6535,22 +6424,21 @@ snapshots:
strip-final-newline@2.0.0: {}
- strtok3@10.2.2:
+ strtok3@10.3.2:
dependencies:
'@tokenizer/token': 0.3.0
- peek-readable: 7.0.0
- style-to-js@1.1.16:
+ style-to-js@1.1.17:
dependencies:
- style-to-object: 1.0.8
+ style-to-object: 1.0.9
- style-to-object@1.0.8:
+ style-to-object@1.0.9:
dependencies:
inline-style-parser: 0.2.4
sucrase@3.35.0:
dependencies:
- '@jridgewell/gen-mapping': 0.3.8
+ '@jridgewell/gen-mapping': 0.3.12
commander: 4.1.1
glob: 10.4.5
lines-and-columns: 1.2.4
@@ -6558,7 +6446,7 @@ snapshots:
pirates: 4.0.7
ts-interface-checker: 0.1.13
- text-extensions@2.4.0: {}
+ supports-color@10.0.0: {}
thenify-all@1.6.0:
dependencies:
@@ -6572,14 +6460,12 @@ snapshots:
dependencies:
real-require: 0.2.0
- through@2.3.8: {}
-
tinyexec@0.3.2: {}
- tinyglobby@0.2.13:
+ tinyglobby@0.2.14:
dependencies:
- fdir: 6.4.4(picomatch@4.0.2)
- picomatch: 4.0.2
+ fdir: 6.4.6(picomatch@4.0.3)
+ picomatch: 4.0.3
tldts-core@6.1.86: {}
@@ -6595,7 +6481,7 @@ snapshots:
toidentifier@1.0.1: {}
- token-types@6.0.0:
+ token-types@6.0.3:
dependencies:
'@tokenizer/token': 0.3.0
ieee754: 1.2.1
@@ -6618,31 +6504,34 @@ snapshots:
trough@2.2.0: {}
+ ts-deepmerge@7.0.3: {}
+
ts-interface-checker@0.1.13: {}
tslib@2.8.1: {}
- tsup@8.4.0(@swc/core@1.11.24)(postcss@8.5.3)(typescript@5.8.3):
+ tsup@8.5.0(@swc/core@1.13.1)(postcss@8.5.6)(typescript@5.8.3):
dependencies:
- bundle-require: 5.1.0(esbuild@0.25.4)
+ bundle-require: 5.1.0(esbuild@0.25.8)
cac: 6.7.14
chokidar: 4.0.3
consola: 3.4.2
debug: 4.4.1
- esbuild: 0.25.4
+ esbuild: 0.25.8
+ fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
picocolors: 1.1.1
- postcss-load-config: 6.0.1(postcss@8.5.3)
+ postcss-load-config: 6.0.1(postcss@8.5.6)
resolve-from: 5.0.0
- rollup: 4.38.0
+ rollup: 4.45.1
source-map: 0.8.0-beta.0
sucrase: 3.35.0
tinyexec: 0.3.2
- tinyglobby: 0.2.13
+ tinyglobby: 0.2.14
tree-kill: 1.2.2
optionalDependencies:
- '@swc/core': 1.11.24
- postcss: 8.5.3
+ '@swc/core': 1.13.1
+ postcss: 8.5.6
typescript: 5.8.3
transitivePeerDependencies:
- jiti
@@ -6652,10 +6541,6 @@ snapshots:
type-detect@4.1.0: {}
- type-fest@3.13.1: {}
-
- type-fest@4.41.0: {}
-
type-is@2.0.1:
dependencies:
content-type: 1.0.5
@@ -6673,16 +6558,14 @@ snapshots:
uncrypto@0.1.3: {}
- undici-types@6.19.8: {}
+ undici-types@6.21.0: {}
- undici@5.29.0:
- dependencies:
- '@fastify/busboy': 2.1.1
+ undici@7.12.0: {}
- unenv@2.0.0-rc.15:
+ unenv@2.0.0-rc.17:
dependencies:
defu: 6.1.4
- exsolve: 1.0.5
+ exsolve: 1.0.7
ohash: 2.0.11
pathe: 2.0.3
ufo: 1.6.1
@@ -6726,10 +6609,10 @@ snapshots:
unpipe@1.0.0: {}
- unplugin@2.3.4:
+ unplugin@2.3.5:
dependencies:
- acorn: 8.14.1
- picomatch: 4.0.2
+ acorn: 8.15.0
+ picomatch: 4.0.3
webpack-virtual-modules: 0.6.2
urlpattern-polyfill@10.1.0: {}
@@ -6756,39 +6639,41 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
- vike@0.4.229(vite@6.3.5(@types/node@20.17.47)):
+ vike@0.4.236(vite@6.3.5(@types/node@20.19.9)):
dependencies:
'@brillout/import': 0.2.6
- '@brillout/json-serializer': 0.5.15
- '@brillout/picocolors': 1.0.26
+ '@brillout/json-serializer': 0.5.16
+ '@brillout/picocolors': 1.0.28
'@brillout/require-shim': 0.1.2
'@brillout/vite-plugin-server-entry': 0.7.9
- acorn: 8.14.1
+ acorn: 8.15.0
cac: 6.7.14
es-module-lexer: 1.7.0
- esbuild: 0.25.4
+ esbuild: 0.25.8
json5: 2.2.3
magic-string: 0.30.17
- picomatch: 4.0.2
+ picomatch: 4.0.3
semver: 7.7.2
sirv: 3.0.1
source-map-support: 0.5.21
- tinyglobby: 0.2.13
+ tinyglobby: 0.2.14
optionalDependencies:
- vite: 6.3.5(@types/node@20.17.47)
+ vite: 6.3.5(@types/node@20.19.9)
- vite@6.3.5(@types/node@20.17.47):
+ vite@6.3.5(@types/node@20.19.9):
dependencies:
- esbuild: 0.25.4
- fdir: 6.4.4(picomatch@4.0.2)
- picomatch: 4.0.2
- postcss: 8.5.3
- rollup: 4.38.0
- tinyglobby: 0.2.13
+ esbuild: 0.25.8
+ fdir: 6.4.6(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.45.1
+ tinyglobby: 0.2.14
optionalDependencies:
- '@types/node': 20.17.47
+ '@types/node': 20.19.9
fsevents: 2.3.3
+ walk-up-path@3.0.1: {}
+
web-namespaces@2.0.1: {}
webidl-conversions@3.0.1: {}
@@ -6814,28 +6699,27 @@ snapshots:
wordwrap@1.0.0: {}
- workerd@1.20250508.0:
+ workerd@1.20250712.0:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20250508.0
- '@cloudflare/workerd-darwin-arm64': 1.20250508.0
- '@cloudflare/workerd-linux-64': 1.20250508.0
- '@cloudflare/workerd-linux-arm64': 1.20250508.0
- '@cloudflare/workerd-windows-64': 1.20250508.0
+ '@cloudflare/workerd-darwin-64': 1.20250712.0
+ '@cloudflare/workerd-darwin-arm64': 1.20250712.0
+ '@cloudflare/workerd-linux-64': 1.20250712.0
+ '@cloudflare/workerd-linux-arm64': 1.20250712.0
+ '@cloudflare/workerd-windows-64': 1.20250712.0
- wrangler@4.15.1(@cloudflare/workers-types@4.20250515.0):
+ wrangler@4.25.1(@cloudflare/workers-types@4.20250722.0):
dependencies:
'@cloudflare/kv-asset-handler': 0.4.0
- '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250508.0)
+ '@cloudflare/unenv-preset': 2.3.3(unenv@2.0.0-rc.17)(workerd@1.20250712.0)
blake3-wasm: 2.1.5
esbuild: 0.25.4
- miniflare: 4.20250508.1
+ miniflare: 4.20250712.1
path-to-regexp: 6.3.0
- unenv: 2.0.0-rc.15
- workerd: 1.20250508.0
+ unenv: 2.0.0-rc.17
+ workerd: 1.20250712.0
optionalDependencies:
- '@cloudflare/workers-types': 4.20250515.0
+ '@cloudflare/workers-types': 4.20250722.0
fsevents: 2.3.3
- sharp: 0.33.5
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -6856,14 +6740,21 @@ snapshots:
ws@8.18.0: {}
- yocto-queue@1.2.1: {}
+ youch-core@0.3.3:
+ dependencies:
+ '@poppinss/exception': 1.2.2
+ error-stack-parser-es: 1.0.5
- youch@3.3.4:
+ youch@4.1.0-beta.10:
dependencies:
- cookie: 0.7.2
- mustache: 4.2.0
- stacktracey: 2.1.8
+ '@poppinss/colors': 4.1.5
+ '@poppinss/dumper': 0.6.4
+ '@speed-highlight/core': 1.2.7
+ cookie: 1.0.2
+ youch-core: 0.3.3
zod@3.22.3: {}
+ zod@3.25.76: {}
+
zwitch@2.0.4: {}
diff --git a/tests/app/package.json b/tests/app/package.json
index f60b2f4..1fc69a0 100644
--- a/tests/app/package.json
+++ b/tests/app/package.json
@@ -16,7 +16,7 @@
"@types/node": "^20.17.32",
"typescript": "^5.8.3",
"vite": "^6.3.5",
- "wrangler": "^4.15.1"
+ "wrangler": "^4.19.1"
},
"dependencies": {
"awesome-framework": "workspace:",
diff --git a/tests/app/public/logo.svg b/tests/app/public/logo.svg
new file mode 100644
index 0000000..d3c7ccf
--- /dev/null
+++ b/tests/app/public/logo.svg
@@ -0,0 +1,107 @@
+
+
+
+
diff --git a/tests/app/src/entry-client.ts b/tests/app/src/entry-client.ts
index 0d5a198..4a8ac99 100644
--- a/tests/app/src/entry-client.ts
+++ b/tests/app/src/entry-client.ts
@@ -2,3 +2,14 @@ import './style.css'
import { setupCounter } from './counter.js'
setupCounter(document.querySelector('#counter') as HTMLButtonElement)
+
+// Dynamically append Photon logo
+const img = document.createElement('img')
+img.src = '/logo.svg'
+img.alt = 'Photon logo'
+img.className = 'logo'
+
+// biome-ignore lint/style/noNonNullAssertion:
+const h1 = document.querySelector('h1')!
+
+h1.parentNode?.insertBefore(img, h1)
diff --git a/tests/app/tests/bun/dev-hono-bun.test-skip.ts b/tests/app/tests/bun/dev-hono-bun.test-skip.ts
new file mode 100644
index 0000000..b04fb02
--- /dev/null
+++ b/tests/app/tests/bun/dev-hono-bun.test-skip.ts
@@ -0,0 +1,7 @@
+import { testRun } from '../testRun.js'
+
+process.env.TARGET = 'bun'
+process.env.SERVER = 'hono'
+
+// Blocked by https://github.com/oven-sh/bun/issues/19111
+testRun('bun --bun --silent run dev')
diff --git a/tests/app/tests/non-photon-entry/preview-non-photon-entry.test.ts b/tests/app/tests/non-photon-entry/preview-non-photon-entry.skip-test.ts
similarity index 71%
rename from tests/app/tests/non-photon-entry/preview-non-photon-entry.test.ts
rename to tests/app/tests/non-photon-entry/preview-non-photon-entry.skip-test.ts
index eb2536e..2e3f747 100644
--- a/tests/app/tests/non-photon-entry/preview-non-photon-entry.test.ts
+++ b/tests/app/tests/non-photon-entry/preview-non-photon-entry.skip-test.ts
@@ -3,4 +3,5 @@ import { runCommandThatThrows } from '../utils.js'
process.env.TARGET = 'node'
process.env.SERVER = 'tests/non-photon-entry/express'
+// TODO update code then this test so that during build, missing { apply } import crashes
await runCommandThatThrows('pnpm run preview', 'Cannot guess', 'server type. Make sure to use')
diff --git a/tests/app/tests/testRun.ts b/tests/app/tests/testRun.ts
index 3575ca7..9059323 100644
--- a/tests/app/tests/testRun.ts
+++ b/tests/app/tests/testRun.ts
@@ -3,7 +3,7 @@ import { autoRetry, expect, expectLog, fetchHtml, getServerUrl, page, run, test
export { testRun, testRunUnsupported }
-function testRun(cmd: `pnpm run ${string}`) {
+function testRun(cmd: `pnpm run ${string}` | `bun --bun --silent run ${string}`) {
run(cmd, {
// Preview => builds app which takes a long time
additionalTimeout: 120 * 1000,
@@ -20,6 +20,11 @@ function testRun(cmd: `pnpm run ${string}`) {
expect(await page.textContent('h1')).toBe('Hello Vite!')
await testCounter()
})
+
+ test('framework standalone handler is rendered', async () => {
+ const text = await fetchHtml('/standalone')
+ expect(text).toContain('standalone')
+ })
}
async function testRunUnsupported(cmd: `pnpm run ${string}`) {
@@ -36,7 +41,8 @@ async function testRunUnsupported(cmd: `pnpm run ${string}`) {
test('page crashes with error message', async () => {
await fetchHtml('/')
- expectLog(error)
+ expectLog('Internal server error', { allLogs: true })
+ expectLog(error, { allLogs: true })
})
}
}
diff --git a/tests/app/vite.config.ts b/tests/app/vite.config.ts
index fa1af46..59b0de7 100644
--- a/tests/app/vite.config.ts
+++ b/tests/app/vite.config.ts
@@ -1,4 +1,3 @@
-///
/* The Vite plugin cloudflare() will be replaced by this:
import cloudflare from '@photonjs/cloudflare'
*/