diff --git a/.changeset/brave-points-lead.md b/.changeset/brave-points-lead.md new file mode 100644 index 000000000..53df3bb66 --- /dev/null +++ b/.changeset/brave-points-lead.md @@ -0,0 +1,5 @@ +--- +'@hono/arktype-validator': major +--- + +Align arktype validator behavior with zod validator: add target-aware input inference, case-insensitive header normalization, hook target support, and configurable validation/error formatting. diff --git a/.gitignore b/.gitignore index 57dd1b401..7ad020250 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,6 @@ settings.local.json # Code editor .zed + +# MacOS +.DS_Store \ No newline at end of file diff --git a/package.json b/package.json index 044ab8978..a4c2e556f 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@arethetypeswrong/core": "^0.18.2", "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.29.7", - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632", + "@cloudflare/vitest-pool-workers": "^0.12.6", "@cloudflare/workers-types": "^4.20250612.0", "@hono/eslint-config": "workspace:*", "@ryoppippi/unplugin-typia": "^2.6.5", diff --git a/packages/arktype-validator/eslint-suppressions.json b/packages/arktype-validator/eslint-suppressions.json index 76d2323c4..82f041265 100644 --- a/packages/arktype-validator/eslint-suppressions.json +++ b/packages/arktype-validator/eslint-suppressions.json @@ -1,18 +1,10 @@ { - "src/index.test.ts": { - "@typescript-eslint/no-unsafe-member-access": { - "count": 1 - } - }, "src/index.ts": { "@typescript-eslint/no-dynamic-delete": { "count": 1 }, "@typescript-eslint/no-invalid-void-type": { "count": 2 - }, - "@typescript-eslint/no-unsafe-argument": { - "count": 1 } } } diff --git a/packages/arktype-validator/src/index.test.ts b/packages/arktype-validator/src/index.test.ts index 609d6868a..bcebd70d6 100644 --- a/packages/arktype-validator/src/index.test.ts +++ b/packages/arktype-validator/src/index.test.ts @@ -40,7 +40,7 @@ describe('Basic', () => { arktypeValidator( 'header', type({ - 'User-Agent': 'string', + 'User-Agent': 'number', }) ), (c) => c.json({ success: true, userAgent: c.req.header('User-Agent') }) @@ -71,8 +71,7 @@ describe('Basic', () => { } } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - type verify = Expect> + // type verify = Expect> it('Should return 200 response', async () => { const req = new Request('http://localhost/author?name=Metallo', { @@ -127,6 +126,35 @@ describe('Basic', () => { }) }) +describe('Case-Insensitive Headers', () => { + it('Should ignore the case for headers in the ArkType schema and return 200', async () => { + const app = new Hono() + const headerSchema = type({ + 'User-Agent': 'string', + ApiKey: 'string', + onlylowercase: 'string', + ONLYUPPERCASE: 'string', + }) + + app.get('/', arktypeValidator('header', headerSchema), (c) => { + const headers = c.req.valid('header') + return c.json(headers) + }) + + const res = await app.request('http://localhost/', { + headers: { + 'user-agent': 'my-agent', + apikey: 'secret', + onlylowercase: 'lower', + onlyuppercase: 'upper', + }, + }) + + expect(res).not.toBeNull() + expect(res.status).toBe(200) + }) +}) + describe('With Hook', () => { const app = new Hono() diff --git a/packages/arktype-validator/src/index.ts b/packages/arktype-validator/src/index.ts index d32549023..3ff8ab24f 100644 --- a/packages/arktype-validator/src/index.ts +++ b/packages/arktype-validator/src/index.ts @@ -1,92 +1,273 @@ import { type } from 'arktype' import type { Type, ArkErrors } from 'arktype' -import type { Context, MiddlewareHandler, Env, ValidationTargets, TypedResponse } from 'hono' +import type { Context, MiddlewareHandler, Env, ValidationTargets, TypedResponse, Input } from 'hono' import { validator } from 'hono/validator' +import type { InferInput } from './utils' -export type Hook = ( - result: { success: false; data: unknown; errors: ArkErrors } | { success: true; data: T }, +export type Hook< + T, + E extends Env, + P extends string, + Target extends keyof ValidationTargets = keyof ValidationTargets, + O = {}, +> = ( + result: ({ success: true; data: T } | { success: false; errors: ArkErrors; data: T }) & { + target: Target + }, c: Context ) => Response | Promise | void | Promise | TypedResponse type HasUndefined = undefined extends T ? true : false +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type ExtractValidationResponse = VF extends (value: any, c: any) => infer R + ? R extends Promise + ? PR extends TypedResponse + ? TypedResponse + : PR extends Response + ? PR + : PR extends undefined + ? never + : never + : R extends TypedResponse + ? TypedResponse + : R extends Response + ? R + : R extends undefined + ? never + : never + : never + const RESTRICTED_DATA_FIELDS = { header: ['cookie'], } -export const arktypeValidator = < +type MaybePromise = T | Promise + +type ValidatorOptions< + T extends Type, + Target extends keyof ValidationTargets = keyof ValidationTargets, +> = { + /** Custom validation function */ + validationFunction?: ( + schema: T, + value: ValidationTargets[Target] + ) => MaybePromise + /** HTTP status for validation errors (default: 400) */ + errorStatus?: number + /** Custom error formatter */ + formatError?: (errors: ArkErrors, c: Context) => unknown + /** Fields to redact from error payloads per target */ + redact?: Partial> +} + +/** + * Attempts to extract schema keys from an ArkType schema. + * Returns an array of keys if successful, null otherwise. + */ +function getSchemaKeys(schema: Type): string[] | null { + try { + // ArkType exposes structure through .json property + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment + const schemaJson = schema.json as any + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (schemaJson && typeof schemaJson === 'object' && schemaJson.domain === 'object') { + const keys: string[] = [] + + // Extract required keys + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (Array.isArray(schemaJson.required)) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + for (const item of schemaJson.required) { + if (item && typeof item === 'object' && 'key' in item) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument + keys.push(item.key) + } + } + } + + // Extract optional keys + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (Array.isArray(schemaJson.optional)) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + for (const item of schemaJson.optional) { + if (item && typeof item === 'object' && 'key' in item) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument + keys.push(item.key) + } + } + } + + return keys.length > 0 ? keys : null + } + + return null + } catch { + // If we can't extract keys, fail silently + return null + } +} + +type DefaultInput = { + in: HasUndefined extends true + ? { + [K in Target]?: [In] extends [ValidationTargets[K]] ? In : InferInput + } + : { + [K in Target]: [In] extends [ValidationTargets[K]] ? In : InferInput + } + out: { [K in Target]: Out } +} + +// Overload: without hook and options +export function arktypeValidator< T extends Type, Target extends keyof ValidationTargets, E extends Env, P extends string, - I = T['inferIn'], - O = T['infer'], - V extends { - in: HasUndefined extends true ? { [K in Target]?: I } : { [K in Target]: I } - out: { [K in Target]: O } - } = { - in: HasUndefined extends true ? { [K in Target]?: I } : { [K in Target]: I } - out: { [K in Target]: O } - }, + In = T['inferIn'], + Out = T['infer'], + I extends Input = DefaultInput, + V extends I = I, +>(target: Target, schema: T): MiddlewareHandler + +// Overload: with hook and/or options +export function arktypeValidator< + T extends Type, + Target extends keyof ValidationTargets, + E extends Env, + P extends string, + HookFn extends Hook, + In = T['inferIn'], + Out = T['infer'], + I extends Input = DefaultInput, + V extends I = I, + InferredValue = T['infer'], >( target: Target, schema: T, - hook?: Hook -): MiddlewareHandler => - // @ts-expect-error not typed well - validator(target, (value, c) => { - const out = schema(value) - - const hasErrors = out instanceof type.errors - - if (hook) { - const hookResult = hook( - hasErrors ? { success: false, data: value, errors: out } : { success: true, data: out }, - c - ) - if (hookResult) { - if (hookResult instanceof Response || hookResult instanceof Promise) { - return hookResult + hookOrOptions?: HookFn | ValidatorOptions, + options?: ValidatorOptions +): MiddlewareHandler> + +// Implementation +export function arktypeValidator< + T extends Type, + Target extends keyof ValidationTargets, + E extends Env, + P extends string, + HookFn extends Hook, + In = T['inferIn'], + Out = T['infer'], + I extends Input = DefaultInput, + V extends I = I, + InferredValue = T['infer'], +>( + target: Target, + schema: T, + hookOrOptions?: HookFn | ValidatorOptions, + options?: ValidatorOptions +): MiddlewareHandler | MiddlewareHandler> { + // Determine if first optional param is hook or options + const hook = typeof hookOrOptions === 'function' ? hookOrOptions : undefined + const opts = typeof hookOrOptions === 'object' ? hookOrOptions : options + + // Merge default redact with user options + const redactFields = { + ...RESTRICTED_DATA_FIELDS, + ...(opts?.redact ?? {}), + } + // @ts-expect-error Hono's validator callback return type inference is complex - type widening causes issues + return validator( + target, + // @ts-expect-error Hono's validator callback return type inference is complex - type widening causes issues + async (value: ValidationTargets[Target], c): Promise => { + let validatorValue = value + + // Header key normalization: Hono lowercases headers, but schema might expect mixed case + if (target === 'header') { + const schemaKeys = getSchemaKeys(schema) + if (schemaKeys) { + const keyMap = Object.fromEntries(schemaKeys.map((k) => [k.toLowerCase(), k])) + validatorValue = Object.fromEntries( + Object.entries(value).map(([k, v]) => [keyMap[k.toLowerCase()] ?? k, v]) + ) as ValidationTargets[Target] } - if ('response' in hookResult) { - return hookResult.response + } + + // Run validation + const validationFunction = opts?.validationFunction + const out = await (validationFunction + ? validationFunction(schema, validatorValue) + : schema(validatorValue)) + + const hasErrors = out instanceof type.errors + + // Call hook with target included + if (hook) { + const hookResult = await hook( + // @ts-expect-error Type narrowing for ArkErrors vs T['infer'] + hasErrors + ? { success: false, data: validatorValue, errors: out, target } + : { success: true, data: out, target }, + c + ) + if (hookResult) { + if (hookResult instanceof Response) { + return hookResult + } + if ('response' in hookResult) { + return hookResult.response + } } } - } - if (hasErrors) { - return c.json( - { - success: false, - errors: - target in RESTRICTED_DATA_FIELDS - ? out.map((error) => { - const restrictedFields = - RESTRICTED_DATA_FIELDS[target as keyof typeof RESTRICTED_DATA_FIELDS] || [] - - if ( - error && - typeof error === 'object' && - 'data' in error && - typeof error.data === 'object' && - error.data !== null && - !Array.isArray(error.data) - ) { - const dataCopy = { ...(error.data as Record) } - for (const field of restrictedFields) { - delete dataCopy[field] - } - - error.data = dataCopy - } - - return error - }) - : out, - }, - 400 - ) - } + if (hasErrors) { + const fieldsToRedact = redactFields[target as keyof typeof redactFields] ?? [] + const sanitizedErrors = + target in redactFields + ? (out.map((error) => { + if ( + error && + typeof error === 'object' && + 'data' in error && + typeof (error as { data?: unknown }).data === 'object' && + (error as { data?: unknown }).data !== null && + !Array.isArray((error as { data?: unknown }).data) + ) { + const originalData = (error as { data: Record }).data + const dataCopy = Object.fromEntries( + Object.entries(originalData).filter(([key]) => !fieldsToRedact.includes(key)) + ) + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const clonedError = Object.assign( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + Object.create(Object.getPrototypeOf(error)), + error + ) + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + clonedError.data = dataCopy + + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return clonedError + } - return out - }) + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument + return Object.assign(Object.create(Object.getPrototypeOf(error)), error) + }) as unknown as ArkErrors) + : out + + const errorStatus = opts?.errorStatus ?? 400 + const errorPayload = opts?.formatError + ? opts.formatError(sanitizedErrors, c) + : { success: false, errors: sanitizedErrors } + + // @ts-expect-error errorStatus may not be a ContentfulStatusCode literal + return c.json(errorPayload, errorStatus) + } + + return out + } + ) +} diff --git a/packages/arktype-validator/src/utils.ts b/packages/arktype-validator/src/utils.ts new file mode 100644 index 000000000..2790bd306 --- /dev/null +++ b/packages/arktype-validator/src/utils.ts @@ -0,0 +1,69 @@ +import type { FormValue, ParsedFormValue, ValidationTargets } from 'hono/types' +import type { UnionToIntersection } from 'hono/utils/types' + +/** + * Checks if T is a literal union type (e.g., 'asc' | 'desc') + * that should be preserved in input types. + * Returns true for union literals, false for single literals or wide types. + */ +export type IsLiteralUnion = [Exclude] extends [Base] + ? [Exclude] extends [UnionToIntersection>] + ? false + : true + : false + +// Check if type is an optional union (T | undefined) but not unknown/any +type IsOptionalUnion = [unknown] extends [T] + ? false // unknown or any + : undefined extends T + ? true + : false + +// Helper to force TypeScript to expand type aliases +type SimplifyDeep = { [K in keyof T]: T[K] } & {} + +type InferInputInner< + Output, + Target extends keyof ValidationTargets, + T extends FormValue, +> = SimplifyDeep<{ + [K in keyof Output]: IsLiteralUnion extends true + ? Output[K] + : IsOptionalUnion extends true + ? Output[K] + : Target extends 'form' + ? T | T[] + : Target extends 'query' + ? string | string[] + : Target extends 'param' + ? string + : Target extends 'header' + ? string + : Target extends 'cookie' + ? string + : unknown +}> + +/** + * Utility type to infer input types for validation targets. + * Preserves literal union types (e.g., 'asc' | 'desc') while using + * the default ValidationTargets type for other values. + * + * @example + * ```ts + * // In @hono/arktype-validator: + * type Input = InferInput + * // { orderBy: 'asc' | 'desc', page: string | string[] } + * ``` + */ +export type InferInput< + Output, + Target extends keyof ValidationTargets, + T extends FormValue = ParsedFormValue, +> = [Exclude] extends [never] + ? {} + : [Exclude] extends [object] + ? undefined extends Output + ? SimplifyDeep, Target, T>> | undefined + : SimplifyDeep> + : {} diff --git a/packages/firebase-auth/package.json b/packages/firebase-auth/package.json index 691d00dae..271e5a32d 100644 --- a/packages/firebase-auth/package.json +++ b/packages/firebase-auth/package.json @@ -50,7 +50,7 @@ "hono": ">=4.0.0" }, "devDependencies": { - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632", + "@cloudflare/vitest-pool-workers": "^0.12.6", "firebase-tools": "^15.2.1", "hono": "^4.11.3", "tsdown": "^0.15.9", diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json index c07669f24..a68852b24 100644 --- a/packages/react-renderer/package.json +++ b/packages/react-renderer/package.json @@ -46,7 +46,7 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632", + "@cloudflare/vitest-pool-workers": "^0.12.6", "@types/react": "^19.2.8", "@types/react-dom": "^19.2.3", "hono": "^4.11.3", diff --git a/packages/session/package.json b/packages/session/package.json index abe2bafd6..d0346431e 100644 --- a/packages/session/package.json +++ b/packages/session/package.json @@ -66,7 +66,7 @@ "jose": "^6.0.11" }, "devDependencies": { - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632", + "@cloudflare/vitest-pool-workers": "^0.12.6", "hono": "^4.11.3", "tsdown": "^0.15.9", "typescript": "^5.8.2", diff --git a/yarn.lock b/yarn.lock index 4f95ed301..7de22f07f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -823,79 +823,74 @@ __metadata: languageName: node linkType: hard -"@cloudflare/kv-asset-handler@https://pkg.pr.new/cloudflare/workers-sdk/@cloudflare/kv-asset-handler@64982d4": - version: 0.4.1 - resolution: "@cloudflare/kv-asset-handler@https://pkg.pr.new/cloudflare/workers-sdk/@cloudflare/kv-asset-handler@64982d4" - dependencies: - mime: "npm:^3.0.0" - checksum: 10c0/33edf82a59f9457e170ab7b7556c27a94ab96a93c03108e9f38c6ab35a9ef5db2f2ddb4f5429ca20bf8e1f61b6bc1e1b1a872131289d95e4a2db2c437bc6a133 +"@cloudflare/kv-asset-handler@npm:0.4.2": + version: 0.4.2 + resolution: "@cloudflare/kv-asset-handler@npm:0.4.2" + checksum: 10c0/c8877851ce069b04d32d50a640c9c0faaab054970204f64a4111bac3dd85f177c001a0b57d32f7e65269e3896268b8f94605f31e4fa06253a6a5779587a63d17 languageName: node linkType: hard -"@cloudflare/unenv-preset@https://pkg.pr.new/cloudflare/workers-sdk/@cloudflare/unenv-preset@64982d4": - version: 2.7.13 - resolution: "@cloudflare/unenv-preset@https://pkg.pr.new/cloudflare/workers-sdk/@cloudflare/unenv-preset@64982d4" +"@cloudflare/unenv-preset@npm:2.11.0": + version: 2.11.0 + resolution: "@cloudflare/unenv-preset@npm:2.11.0" peerDependencies: unenv: 2.0.0-rc.24 - workerd: ^1.20251202.0 + workerd: ^1.20260115.0 peerDependenciesMeta: workerd: optional: true - checksum: 10c0/d0ef0cc6ed8592047a7bcde0e7dbcc2bf8a3a2905af357bc23fedb808f9e8dd745a07e70adc591a09b9f4757b46e41dcf19289a5b8659944cc0d137510e7ace4 + checksum: 10c0/ff551d6570640b1c7326954c05bbc7a3410626ee02fdc66859f469dfdb82b67f2b06c3191d71e75589b0f82908f43398f5380ea17def83e5538adba1556018a1 languageName: node linkType: hard -"@cloudflare/vitest-pool-workers@https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632": - version: 0.11.1 - resolution: "@cloudflare/vitest-pool-workers@https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632" +"@cloudflare/vitest-pool-workers@npm:^0.12.6": + version: 0.12.6 + resolution: "@cloudflare/vitest-pool-workers@npm:0.12.6" dependencies: cjs-module-lexer: "npm:^1.2.3" - devalue: "npm:^5.3.2" esbuild: "npm:0.27.0" - get-port: "npm:^7.1.0" - miniflare: "https://pkg.pr.new/cloudflare/workers-sdk/miniflare@64982d4" - semver: "npm:^7.7.1" - wrangler: "https://pkg.pr.new/cloudflare/workers-sdk/wrangler@64982d4" - zod: "npm:^3.22.3" + miniflare: "npm:4.20260120.0" + wrangler: "npm:4.60.0" + zod: "npm:^3.25.76" peerDependencies: - "@vitest/runner": 4.0.16 - "@vitest/snapshot": 4.0.16 - vitest: 4.0.16 - checksum: 10c0/c40589a6aa7e49b1d4af5ee7f93cb6f24e3096b0aee8b9aec5df9cd9589fc547d39217e4d7ff1ba196c617e97876409187fb73859998f0b1829f971c002c6d9a + "@vitest/runner": 2.0.x - 3.2.x + "@vitest/snapshot": 2.0.x - 3.2.x + vitest: 2.0.x - 3.2.x + checksum: 10c0/d95d548b12a241ad8e3418579ae7309e282bc2b4bfdf5badfc061840a06165824616cfd64b2271860fce1929262808f2baedfbfc8dc5d97eaf285810ce02a1d4 languageName: node linkType: hard -"@cloudflare/workerd-darwin-64@npm:1.20251219.0": - version: 1.20251219.0 - resolution: "@cloudflare/workerd-darwin-64@npm:1.20251219.0" +"@cloudflare/workerd-darwin-64@npm:1.20260120.0": + version: 1.20260120.0 + resolution: "@cloudflare/workerd-darwin-64@npm:1.20260120.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@cloudflare/workerd-darwin-arm64@npm:1.20251219.0": - version: 1.20251219.0 - resolution: "@cloudflare/workerd-darwin-arm64@npm:1.20251219.0" +"@cloudflare/workerd-darwin-arm64@npm:1.20260120.0": + version: 1.20260120.0 + resolution: "@cloudflare/workerd-darwin-arm64@npm:1.20260120.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@cloudflare/workerd-linux-64@npm:1.20251219.0": - version: 1.20251219.0 - resolution: "@cloudflare/workerd-linux-64@npm:1.20251219.0" +"@cloudflare/workerd-linux-64@npm:1.20260120.0": + version: 1.20260120.0 + resolution: "@cloudflare/workerd-linux-64@npm:1.20260120.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@cloudflare/workerd-linux-arm64@npm:1.20251219.0": - version: 1.20251219.0 - resolution: "@cloudflare/workerd-linux-arm64@npm:1.20251219.0" +"@cloudflare/workerd-linux-arm64@npm:1.20260120.0": + version: 1.20260120.0 + resolution: "@cloudflare/workerd-linux-arm64@npm:1.20260120.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@cloudflare/workerd-windows-64@npm:1.20251219.0": - version: 1.20251219.0 - resolution: "@cloudflare/workerd-windows-64@npm:1.20251219.0" +"@cloudflare/workerd-windows-64@npm:1.20260120.0": + version: 1.20260120.0 + resolution: "@cloudflare/workerd-windows-64@npm:1.20260120.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1024,7 +1019,7 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.2.0, @emnapi/runtime@npm:^1.3.1": +"@emnapi/runtime@npm:^1.3.1": version: 1.3.1 resolution: "@emnapi/runtime@npm:1.3.1" dependencies: @@ -1042,6 +1037,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.7.0": + version: 1.8.1 + resolution: "@emnapi/runtime@npm:1.8.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f + languageName: node + linkType: hard + "@emnapi/wasi-threads@npm:1.0.1": version: 1.0.1 resolution: "@emnapi/wasi-threads@npm:1.0.1" @@ -2051,7 +2055,7 @@ __metadata: version: 0.0.0-use.local resolution: "@hono/firebase-auth@workspace:packages/firebase-auth" dependencies: - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632" + "@cloudflare/vitest-pool-workers": "npm:^0.12.6" firebase-auth-cloudflare-workers: "npm:^2.0.6" firebase-tools: "npm:^15.2.1" hono: "npm:^4.11.3" @@ -2256,7 +2260,7 @@ __metadata: version: 0.0.0-use.local resolution: "@hono/react-renderer@workspace:packages/react-renderer" dependencies: - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632" + "@cloudflare/vitest-pool-workers": "npm:^0.12.6" "@types/react": "npm:^19.2.8" "@types/react-dom": "npm:^19.2.3" hono: "npm:^4.11.3" @@ -2290,7 +2294,7 @@ __metadata: version: 0.0.0-use.local resolution: "@hono/session@workspace:packages/session" dependencies: - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632" + "@cloudflare/vitest-pool-workers": "npm:^0.12.6" hono: "npm:^4.11.3" jose: "npm:^6.0.11" tsdown: "npm:^0.15.9" @@ -2565,18 +2569,6 @@ __metadata: languageName: node linkType: hard -"@img/sharp-darwin-arm64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-darwin-arm64@npm:0.33.5" - dependencies: - "@img/sharp-libvips-darwin-arm64": "npm:1.0.4" - dependenciesMeta: - "@img/sharp-libvips-darwin-arm64": - optional: true - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@img/sharp-darwin-arm64@npm:0.34.4": version: 0.34.4 resolution: "@img/sharp-darwin-arm64@npm:0.34.4" @@ -2589,15 +2581,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-darwin-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-darwin-x64@npm:0.33.5" +"@img/sharp-darwin-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-darwin-arm64@npm:0.34.5" dependencies: - "@img/sharp-libvips-darwin-x64": "npm:1.0.4" + "@img/sharp-libvips-darwin-arm64": "npm:1.2.4" dependenciesMeta: - "@img/sharp-libvips-darwin-x64": + "@img/sharp-libvips-darwin-arm64": optional: true - conditions: os=darwin & cpu=x64 + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -2613,10 +2605,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-darwin-arm64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4" - conditions: os=darwin & cpu=arm64 +"@img/sharp-darwin-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-darwin-x64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-darwin-x64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -2627,10 +2624,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-darwin-x64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4" - conditions: os=darwin & cpu=x64 +"@img/sharp-libvips-darwin-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.2.4" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -2641,10 +2638,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-linux-arm64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4" - conditions: os=linux & cpu=arm64 & libc=glibc +"@img/sharp-libvips-darwin-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.2.4" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -2655,10 +2652,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-linux-arm@npm:1.0.5": - version: 1.0.5 - resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5" - conditions: os=linux & cpu=arm & libc=glibc +"@img/sharp-libvips-linux-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.2.4" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -2669,6 +2666,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-libvips-linux-arm@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-arm@npm:1.2.4" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@img/sharp-libvips-linux-ppc64@npm:1.2.3": version: 1.2.3 resolution: "@img/sharp-libvips-linux-ppc64@npm:1.2.3" @@ -2676,10 +2680,17 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-linux-s390x@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4" - conditions: os=linux & cpu=s390x & libc=glibc +"@img/sharp-libvips-linux-ppc64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-ppc64@npm:1.2.4" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-riscv64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-riscv64@npm:1.2.4" + conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard @@ -2690,10 +2701,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-linux-x64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4" - conditions: os=linux & cpu=x64 & libc=glibc +"@img/sharp-libvips-linux-s390x@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.2.4" + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -2704,10 +2715,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4" - conditions: os=linux & cpu=arm64 & libc=musl +"@img/sharp-libvips-linux-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linux-x64@npm:1.2.4" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -2718,10 +2729,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-libvips-linuxmusl-x64@npm:1.0.4": - version: 1.0.4 - resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4" - conditions: os=linux & cpu=x64 & libc=musl +"@img/sharp-libvips-linuxmusl-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.2.4" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -2732,15 +2743,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-arm64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-arm64@npm:0.33.5" - dependencies: - "@img/sharp-libvips-linux-arm64": "npm:1.0.4" - dependenciesMeta: - "@img/sharp-libvips-linux-arm64": - optional: true - conditions: os=linux & cpu=arm64 & libc=glibc +"@img/sharp-libvips-linuxmusl-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.2.4" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -2756,15 +2762,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-arm@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-arm@npm:0.33.5" +"@img/sharp-linux-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-arm64@npm:0.34.5" dependencies: - "@img/sharp-libvips-linux-arm": "npm:1.0.5" + "@img/sharp-libvips-linux-arm64": "npm:1.2.4" dependenciesMeta: - "@img/sharp-libvips-linux-arm": + "@img/sharp-libvips-linux-arm64": optional: true - conditions: os=linux & cpu=arm & libc=glibc + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -2780,6 +2786,18 @@ __metadata: languageName: node linkType: hard +"@img/sharp-linux-arm@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-arm@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-arm": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@img/sharp-linux-ppc64@npm:0.34.4": version: 0.34.4 resolution: "@img/sharp-linux-ppc64@npm:0.34.4" @@ -2792,15 +2810,27 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-s390x@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-s390x@npm:0.33.5" +"@img/sharp-linux-ppc64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-ppc64@npm:0.34.5" dependencies: - "@img/sharp-libvips-linux-s390x": "npm:1.0.4" + "@img/sharp-libvips-linux-ppc64": "npm:1.2.4" dependenciesMeta: - "@img/sharp-libvips-linux-s390x": + "@img/sharp-libvips-linux-ppc64": optional: true - conditions: os=linux & cpu=s390x & libc=glibc + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-riscv64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-riscv64@npm:0.34.5" + dependencies: + "@img/sharp-libvips-linux-riscv64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linux-riscv64": + optional: true + conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard @@ -2816,15 +2846,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linux-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linux-x64@npm:0.33.5" +"@img/sharp-linux-s390x@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-s390x@npm:0.34.5" dependencies: - "@img/sharp-libvips-linux-x64": "npm:1.0.4" + "@img/sharp-libvips-linux-s390x": "npm:1.2.4" dependenciesMeta: - "@img/sharp-libvips-linux-x64": + "@img/sharp-libvips-linux-s390x": optional: true - conditions: os=linux & cpu=x64 & libc=glibc + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -2840,15 +2870,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linuxmusl-arm64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5" +"@img/sharp-linux-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linux-x64@npm:0.34.5" dependencies: - "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4" + "@img/sharp-libvips-linux-x64": "npm:1.2.4" dependenciesMeta: - "@img/sharp-libvips-linuxmusl-arm64": + "@img/sharp-libvips-linux-x64": optional: true - conditions: os=linux & cpu=arm64 & libc=musl + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -2864,15 +2894,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-linuxmusl-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5" +"@img/sharp-linuxmusl-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.5" dependencies: - "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.4" dependenciesMeta: - "@img/sharp-libvips-linuxmusl-x64": + "@img/sharp-libvips-linuxmusl-arm64": optional: true - conditions: os=linux & cpu=x64 & libc=musl + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -2888,12 +2918,15 @@ __metadata: languageName: node linkType: hard -"@img/sharp-wasm32@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-wasm32@npm:0.33.5" +"@img/sharp-linuxmusl-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-linuxmusl-x64@npm:0.34.5" dependencies: - "@emnapi/runtime": "npm:^1.2.0" - conditions: cpu=wasm32 + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.4" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -2906,6 +2939,15 @@ __metadata: languageName: node linkType: hard +"@img/sharp-wasm32@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-wasm32@npm:0.34.5" + dependencies: + "@emnapi/runtime": "npm:^1.7.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + "@img/sharp-win32-arm64@npm:0.34.4": version: 0.34.4 resolution: "@img/sharp-win32-arm64@npm:0.34.4" @@ -2913,10 +2955,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-win32-ia32@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-win32-ia32@npm:0.33.5" - conditions: os=win32 & cpu=ia32 +"@img/sharp-win32-arm64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-win32-arm64@npm:0.34.5" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -2927,10 +2969,10 @@ __metadata: languageName: node linkType: hard -"@img/sharp-win32-x64@npm:0.33.5": - version: 0.33.5 - resolution: "@img/sharp-win32-x64@npm:0.33.5" - conditions: os=win32 & cpu=x64 +"@img/sharp-win32-ia32@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-win32-ia32@npm:0.34.5" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -2941,6 +2983,13 @@ __metadata: languageName: node linkType: hard +"@img/sharp-win32-x64@npm:0.34.5": + version: 0.34.5 + resolution: "@img/sharp-win32-x64@npm:0.34.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@inquirer/ansi@npm:^1.0.2": version: 1.0.2 resolution: "@inquirer/ansi@npm:1.0.2" @@ -5320,13 +5369,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:8.3.2": - version: 8.3.2 - resolution: "acorn-walk@npm:8.3.2" - checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 - languageName: node - linkType: hard - "acorn-walk@npm:^8.1.1": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" @@ -5336,15 +5378,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:8.14.0": - version: 8.14.0 - resolution: "acorn@npm:8.14.0" - bin: - acorn: bin/acorn - checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7 - languageName: node - linkType: hard - "acorn@npm:^8.0.0": version: 8.11.2 resolution: "acorn@npm:8.11.2" @@ -6480,7 +6513,7 @@ __metadata: languageName: node linkType: hard -"color-string@npm:^1.6.0, color-string@npm:^1.9.0": +"color-string@npm:^1.6.0": version: 1.9.1 resolution: "color-string@npm:1.9.1" dependencies: @@ -6500,16 +6533,6 @@ __metadata: languageName: node linkType: hard -"color@npm:^4.2.3": - version: 4.2.3 - resolution: "color@npm:4.2.3" - dependencies: - color-convert: "npm:^2.0.1" - color-string: "npm:^1.9.0" - checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118 - languageName: node - linkType: hard - "colorette@npm:^2.0.19, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" @@ -7165,27 +7188,13 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.3": - version: 2.0.3 - resolution: "detect-libc@npm:2.0.3" - checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7 - languageName: node - linkType: hard - -"detect-libc@npm:^2.1.0": +"detect-libc@npm:^2.1.0, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 languageName: node linkType: hard -"devalue@npm:^5.3.2": - version: 5.3.2 - resolution: "devalue@npm:5.3.2" - checksum: 10c0/2dab403779233224285afe4b30eaded038df10cb89b8f2c1e41dd855a8e6b634aa24175b87f64df665204bb9a6a6e7758d172682719b9c5cf3cef336ff9fa507 - languageName: node - linkType: hard - "devlop@npm:^1.0.0, devlop@npm:^1.1.0": version: 1.1.0 resolution: "devlop@npm:1.1.0" @@ -8330,13 +8339,6 @@ __metadata: languageName: node linkType: hard -"exit-hook@npm:2.2.1": - version: 2.2.1 - resolution: "exit-hook@npm:2.2.1" - checksum: 10c0/0803726d1b60aade6afd10c73e5a7e1bf256ac9bee78362a88e91a4f735e8c67899f2853ddc613072c05af07bbb067a9978a740e614db1aeef167d50c6dc5c09 - languageName: node - linkType: hard - "expect-type@npm:^1.2.2": version: 1.3.0 resolution: "expect-type@npm:1.3.0" @@ -9085,13 +9087,6 @@ __metadata: languageName: node linkType: hard -"get-port@npm:^7.1.0": - version: 7.1.0 - resolution: "get-port@npm:7.1.0" - checksum: 10c0/896051fea0fd3df58c050566754ab91f46406e898ce0c708414739d908a5ac03ffef3eca7a494ea9cc1914439e8caccd2218010d1eeabdde914b9ff920fa28fc - languageName: node - linkType: hard - "get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" @@ -9568,7 +9563,7 @@ __metadata: "@arethetypeswrong/core": "npm:^0.18.2" "@changesets/changelog-github": "npm:^0.4.8" "@changesets/cli": "npm:^2.29.7" - "@cloudflare/vitest-pool-workers": "https://pkg.pr.new/@cloudflare/vitest-pool-workers@11632" + "@cloudflare/vitest-pool-workers": "npm:^0.12.6" "@cloudflare/workers-types": "npm:^4.20250612.0" "@hono/eslint-config": "workspace:*" "@ryoppippi/unplugin-typia": "npm:^2.6.5" @@ -11591,15 +11586,6 @@ __metadata: languageName: node linkType: hard -"mime@npm:^3.0.0": - version: 3.0.0 - resolution: "mime@npm:3.0.0" - bin: - mime: cli.js - checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 - languageName: node - linkType: hard - "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -11607,25 +11593,20 @@ __metadata: languageName: node linkType: hard -"miniflare@https://pkg.pr.new/cloudflare/workers-sdk/miniflare@64982d4": - version: 4.20251217.0 - resolution: "miniflare@https://pkg.pr.new/cloudflare/workers-sdk/miniflare@64982d4" +"miniflare@npm:4.20260120.0": + version: 4.20260120.0 + resolution: "miniflare@npm:4.20260120.0" dependencies: "@cspotcode/source-map-support": "npm:0.8.1" - acorn: "npm:8.14.0" - acorn-walk: "npm:8.3.2" - exit-hook: "npm:2.2.1" - glob-to-regexp: "npm:0.4.1" - sharp: "npm:^0.33.5" - stoppable: "npm:1.1.0" - undici: "npm:7.14.0" - workerd: "npm:1.20251219.0" + sharp: "npm:^0.34.5" + undici: "npm:7.18.2" + workerd: "npm:1.20260120.0" ws: "npm:8.18.0" youch: "npm:4.1.0-beta.10" - zod: "npm:3.22.3" + zod: "npm:^3.25.76" bin: miniflare: bootstrap.js - checksum: 10c0/12287e9d430878f581a9842dc52d13da32101af007cdc6a0aa0f5ffc922dbb86bd41c3a531adc5fa42c8890dfe0c2eb6db22df5e86ff142b4fa360bf70ca8b32 + checksum: 10c0/28a4ff03f3d3c7c234851fd7a57ac80822d820d5eb1311c1fc0ecb9bbc3dd78065c115715a162cb3ce694a46495bd753ac772383fa52b4774678a891d309c7e4 languageName: node linkType: hard @@ -14271,32 +14252,35 @@ __metadata: languageName: node linkType: hard -"sharp@npm:^0.33.5": - version: 0.33.5 - resolution: "sharp@npm:0.33.5" - dependencies: - "@img/sharp-darwin-arm64": "npm:0.33.5" - "@img/sharp-darwin-x64": "npm:0.33.5" - "@img/sharp-libvips-darwin-arm64": "npm:1.0.4" - "@img/sharp-libvips-darwin-x64": "npm:1.0.4" - "@img/sharp-libvips-linux-arm": "npm:1.0.5" - "@img/sharp-libvips-linux-arm64": "npm:1.0.4" - "@img/sharp-libvips-linux-s390x": "npm:1.0.4" - "@img/sharp-libvips-linux-x64": "npm:1.0.4" - "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4" - "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4" - "@img/sharp-linux-arm": "npm:0.33.5" - "@img/sharp-linux-arm64": "npm:0.33.5" - "@img/sharp-linux-s390x": "npm:0.33.5" - "@img/sharp-linux-x64": "npm:0.33.5" - "@img/sharp-linuxmusl-arm64": "npm:0.33.5" - "@img/sharp-linuxmusl-x64": "npm:0.33.5" - "@img/sharp-wasm32": "npm:0.33.5" - "@img/sharp-win32-ia32": "npm:0.33.5" - "@img/sharp-win32-x64": "npm:0.33.5" - color: "npm:^4.2.3" - detect-libc: "npm:^2.0.3" - semver: "npm:^7.6.3" +"sharp@npm:^0.34.1": + version: 0.34.4 + resolution: "sharp@npm:0.34.4" + dependencies: + "@img/colour": "npm:^1.0.0" + "@img/sharp-darwin-arm64": "npm:0.34.4" + "@img/sharp-darwin-x64": "npm:0.34.4" + "@img/sharp-libvips-darwin-arm64": "npm:1.2.3" + "@img/sharp-libvips-darwin-x64": "npm:1.2.3" + "@img/sharp-libvips-linux-arm": "npm:1.2.3" + "@img/sharp-libvips-linux-arm64": "npm:1.2.3" + "@img/sharp-libvips-linux-ppc64": "npm:1.2.3" + "@img/sharp-libvips-linux-s390x": "npm:1.2.3" + "@img/sharp-libvips-linux-x64": "npm:1.2.3" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.3" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.3" + "@img/sharp-linux-arm": "npm:0.34.4" + "@img/sharp-linux-arm64": "npm:0.34.4" + "@img/sharp-linux-ppc64": "npm:0.34.4" + "@img/sharp-linux-s390x": "npm:0.34.4" + "@img/sharp-linux-x64": "npm:0.34.4" + "@img/sharp-linuxmusl-arm64": "npm:0.34.4" + "@img/sharp-linuxmusl-x64": "npm:0.34.4" + "@img/sharp-wasm32": "npm:0.34.4" + "@img/sharp-win32-arm64": "npm:0.34.4" + "@img/sharp-win32-ia32": "npm:0.34.4" + "@img/sharp-win32-x64": "npm:0.34.4" + detect-libc: "npm:^2.1.0" + semver: "npm:^7.7.2" dependenciesMeta: "@img/sharp-darwin-arm64": optional: true @@ -14310,6 +14294,8 @@ __metadata: optional: true "@img/sharp-libvips-linux-arm64": optional: true + "@img/sharp-libvips-linux-ppc64": + optional: true "@img/sharp-libvips-linux-s390x": optional: true "@img/sharp-libvips-linux-x64": @@ -14322,6 +14308,8 @@ __metadata: optional: true "@img/sharp-linux-arm64": optional: true + "@img/sharp-linux-ppc64": + optional: true "@img/sharp-linux-s390x": optional: true "@img/sharp-linux-x64": @@ -14332,43 +14320,47 @@ __metadata: optional: true "@img/sharp-wasm32": optional: true + "@img/sharp-win32-arm64": + optional: true "@img/sharp-win32-ia32": optional: true "@img/sharp-win32-x64": optional: true - checksum: 10c0/6b81421ddfe6ee524d8d77e325c5e147fef22884e1c7b1656dfd89a88d7025894115da02d5f984261bf2e6daa16f98cadd1721c4ba408b4212b1d2a60f233484 + checksum: 10c0/c2d8afab823a53bb720c42aaddde2031d7a1e25b7f1bd123e342b6b77ffce5e2730017fd52282cadf6109b325bc16f35be4771caa040cf2855978b709be35f05 languageName: node linkType: hard -"sharp@npm:^0.34.1": - version: 0.34.4 - resolution: "sharp@npm:0.34.4" +"sharp@npm:^0.34.5": + version: 0.34.5 + resolution: "sharp@npm:0.34.5" dependencies: "@img/colour": "npm:^1.0.0" - "@img/sharp-darwin-arm64": "npm:0.34.4" - "@img/sharp-darwin-x64": "npm:0.34.4" - "@img/sharp-libvips-darwin-arm64": "npm:1.2.3" - "@img/sharp-libvips-darwin-x64": "npm:1.2.3" - "@img/sharp-libvips-linux-arm": "npm:1.2.3" - "@img/sharp-libvips-linux-arm64": "npm:1.2.3" - "@img/sharp-libvips-linux-ppc64": "npm:1.2.3" - "@img/sharp-libvips-linux-s390x": "npm:1.2.3" - "@img/sharp-libvips-linux-x64": "npm:1.2.3" - "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.3" - "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.3" - "@img/sharp-linux-arm": "npm:0.34.4" - "@img/sharp-linux-arm64": "npm:0.34.4" - "@img/sharp-linux-ppc64": "npm:0.34.4" - "@img/sharp-linux-s390x": "npm:0.34.4" - "@img/sharp-linux-x64": "npm:0.34.4" - "@img/sharp-linuxmusl-arm64": "npm:0.34.4" - "@img/sharp-linuxmusl-x64": "npm:0.34.4" - "@img/sharp-wasm32": "npm:0.34.4" - "@img/sharp-win32-arm64": "npm:0.34.4" - "@img/sharp-win32-ia32": "npm:0.34.4" - "@img/sharp-win32-x64": "npm:0.34.4" - detect-libc: "npm:^2.1.0" - semver: "npm:^7.7.2" + "@img/sharp-darwin-arm64": "npm:0.34.5" + "@img/sharp-darwin-x64": "npm:0.34.5" + "@img/sharp-libvips-darwin-arm64": "npm:1.2.4" + "@img/sharp-libvips-darwin-x64": "npm:1.2.4" + "@img/sharp-libvips-linux-arm": "npm:1.2.4" + "@img/sharp-libvips-linux-arm64": "npm:1.2.4" + "@img/sharp-libvips-linux-ppc64": "npm:1.2.4" + "@img/sharp-libvips-linux-riscv64": "npm:1.2.4" + "@img/sharp-libvips-linux-s390x": "npm:1.2.4" + "@img/sharp-libvips-linux-x64": "npm:1.2.4" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.4" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.2.4" + "@img/sharp-linux-arm": "npm:0.34.5" + "@img/sharp-linux-arm64": "npm:0.34.5" + "@img/sharp-linux-ppc64": "npm:0.34.5" + "@img/sharp-linux-riscv64": "npm:0.34.5" + "@img/sharp-linux-s390x": "npm:0.34.5" + "@img/sharp-linux-x64": "npm:0.34.5" + "@img/sharp-linuxmusl-arm64": "npm:0.34.5" + "@img/sharp-linuxmusl-x64": "npm:0.34.5" + "@img/sharp-wasm32": "npm:0.34.5" + "@img/sharp-win32-arm64": "npm:0.34.5" + "@img/sharp-win32-ia32": "npm:0.34.5" + "@img/sharp-win32-x64": "npm:0.34.5" + detect-libc: "npm:^2.1.2" + semver: "npm:^7.7.3" dependenciesMeta: "@img/sharp-darwin-arm64": optional: true @@ -14384,6 +14376,8 @@ __metadata: optional: true "@img/sharp-libvips-linux-ppc64": optional: true + "@img/sharp-libvips-linux-riscv64": + optional: true "@img/sharp-libvips-linux-s390x": optional: true "@img/sharp-libvips-linux-x64": @@ -14398,6 +14392,8 @@ __metadata: optional: true "@img/sharp-linux-ppc64": optional: true + "@img/sharp-linux-riscv64": + optional: true "@img/sharp-linux-s390x": optional: true "@img/sharp-linux-x64": @@ -14414,7 +14410,7 @@ __metadata: optional: true "@img/sharp-win32-x64": optional: true - checksum: 10c0/c2d8afab823a53bb720c42aaddde2031d7a1e25b7f1bd123e342b6b77ffce5e2730017fd52282cadf6109b325bc16f35be4771caa040cf2855978b709be35f05 + checksum: 10c0/fd79e29df0597a7d5704b8461c51f944ead91a5243691697be6e8243b966402beda53ddc6f0a53b96ea3cb8221f0b244aa588114d3ebf8734fb4aefd41ab802f languageName: node linkType: hard @@ -14745,13 +14741,6 @@ __metadata: languageName: node linkType: hard -"stoppable@npm:1.1.0": - version: 1.1.0 - resolution: "stoppable@npm:1.1.0" - checksum: 10c0/ba91b65e6442bf6f01ce837a727ece597a977ed92a05cb9aea6bf446c5e0dcbccc28f31b793afa8aedd8f34baaf3335398d35f903938d5493f7fbe386a1e090e - languageName: node - linkType: hard - "stream-chain@npm:^2.2.4, stream-chain@npm:^2.2.5": version: 2.2.5 resolution: "stream-chain@npm:2.2.5" @@ -15764,10 +15753,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:7.14.0": - version: 7.14.0 - resolution: "undici@npm:7.14.0" - checksum: 10c0/4beab6a5bfb89add9e90195aee6bc993708afbabad33bff7da791b5334a6e26a591c29938822d2fb8f69ae0ad8d580d64e03247b11157af9f820d5bd9f8f16e7 +"undici@npm:7.18.2": + version: 7.18.2 + resolution: "undici@npm:7.18.2" + checksum: 10c0/4ff0722799f5e06fde5d1e58d318b1d78ba9a477836ad3e7374e9ac30ca20d1ab3282952d341635bf69b8e74b5c1cf366e595b3a96810e0dbf74e622dad7b5f9 languageName: node linkType: hard @@ -16589,15 +16578,15 @@ __metadata: languageName: node linkType: hard -"workerd@npm:1.20251219.0": - version: 1.20251219.0 - resolution: "workerd@npm:1.20251219.0" +"workerd@npm:1.20260120.0": + version: 1.20260120.0 + resolution: "workerd@npm:1.20260120.0" dependencies: - "@cloudflare/workerd-darwin-64": "npm:1.20251219.0" - "@cloudflare/workerd-darwin-arm64": "npm:1.20251219.0" - "@cloudflare/workerd-linux-64": "npm:1.20251219.0" - "@cloudflare/workerd-linux-arm64": "npm:1.20251219.0" - "@cloudflare/workerd-windows-64": "npm:1.20251219.0" + "@cloudflare/workerd-darwin-64": "npm:1.20260120.0" + "@cloudflare/workerd-darwin-arm64": "npm:1.20260120.0" + "@cloudflare/workerd-linux-64": "npm:1.20260120.0" + "@cloudflare/workerd-linux-arm64": "npm:1.20260120.0" + "@cloudflare/workerd-windows-64": "npm:1.20260120.0" dependenciesMeta: "@cloudflare/workerd-darwin-64": optional: true @@ -16611,25 +16600,25 @@ __metadata: optional: true bin: workerd: bin/workerd - checksum: 10c0/8cc82a1f185deb60a1122d91948883a23323694751dcaf593636a758acdd6aa85fd3fc3cc75cce44f3995e2ddccbc1230929022db411f11b1a27a36be2afc10d + checksum: 10c0/16af885068618dc1006bc0523528031c1e22dd8ac338d3aefced1cc754511983d82b36dc5135c4f6e39101f0f7fc554a1869aa672d8deb1d2e50b5701c766dd2 languageName: node linkType: hard -"wrangler@https://pkg.pr.new/cloudflare/workers-sdk/wrangler@64982d4": - version: 4.56.0 - resolution: "wrangler@https://pkg.pr.new/cloudflare/workers-sdk/wrangler@64982d4" +"wrangler@npm:4.60.0": + version: 4.60.0 + resolution: "wrangler@npm:4.60.0" dependencies: - "@cloudflare/kv-asset-handler": "https://pkg.pr.new/cloudflare/workers-sdk/@cloudflare/kv-asset-handler@64982d4" - "@cloudflare/unenv-preset": "https://pkg.pr.new/cloudflare/workers-sdk/@cloudflare/unenv-preset@64982d4" + "@cloudflare/kv-asset-handler": "npm:0.4.2" + "@cloudflare/unenv-preset": "npm:2.11.0" blake3-wasm: "npm:2.1.5" esbuild: "npm:0.27.0" fsevents: "npm:~2.3.2" - miniflare: "https://pkg.pr.new/cloudflare/workers-sdk/miniflare@64982d4" + miniflare: "npm:4.20260120.0" path-to-regexp: "npm:6.3.0" unenv: "npm:2.0.0-rc.24" - workerd: "npm:1.20251219.0" + workerd: "npm:1.20260120.0" peerDependencies: - "@cloudflare/workers-types": ^4.20251219.0 + "@cloudflare/workers-types": ^4.20260120.0 dependenciesMeta: fsevents: optional: true @@ -16637,9 +16626,9 @@ __metadata: "@cloudflare/workers-types": optional: true bin: - wrangler: ./bin/wrangler.js - wrangler2: ./bin/wrangler.js - checksum: 10c0/afe8315ecc59d3e908ba5a7094f6ed7e8ed7b313a928e568204803b1761b131bf41b508f751ab70275e1d554eab87d6a37871c4ed6cc4907d5c298484f2a2bcf + wrangler: bin/wrangler.js + wrangler2: bin/wrangler.js + checksum: 10c0/21fd7af6959c168446e5ebb68f62401087502e027d502d0f2940a7fce2745912a0f266f5892cd0b28dacdf768366a53291da298c2024fbf65700059081705571 languageName: node linkType: hard @@ -16961,13 +16950,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:3.22.3": - version: 3.22.3 - resolution: "zod@npm:3.22.3" - checksum: 10c0/cb4b24aed7dec98552eb9042e88cbd645455bf2830e5704174d2da96f554dabad4630e3b4f6623e1b6562b9eaa43535a37b7f2011f29b8d8e9eabe1ddf3b656b - languageName: node - linkType: hard - "zod@npm:3.25.48": version: 3.25.48 resolution: "zod@npm:3.25.48" @@ -16975,13 +16957,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.22.3, zod@npm:^3.24.3": - version: 3.25.76 - resolution: "zod@npm:3.25.76" - checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c - languageName: node - linkType: hard - "zod@npm:^3.23.8": version: 3.23.8 resolution: "zod@npm:3.23.8" @@ -16989,6 +16964,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:^3.24.3, zod@npm:^3.25.76": + version: 3.25.76 + resolution: "zod@npm:3.25.76" + checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c + languageName: node + linkType: hard + "zod@npm:^3.25 || ^4.0": version: 4.1.13 resolution: "zod@npm:4.1.13"