From 054630311817cf68182ffa961e3bcbab8e7bad02 Mon Sep 17 00:00:00 2001 From: Benno <57860196+bennoinbeta@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:02:00 +0200 Subject: [PATCH 1/5] #113 parsed data experiment --- .../express/petstore/package.json | 2 +- .../express/petstore/src/index.ts | 2 +- .../express/petstore/src/router.ts | 4 +- packages/feature-state/package.json | 2 +- packages/openapi-ts-router/package.json | 2 +- .../src/features/with-express/with-express.ts | 49 +- .../src/helper/format-path.ts | 2 +- .../src/types/features/express.ts | 18 +- pnpm-lock.yaml | 1335 +++++++++-------- 9 files changed, 787 insertions(+), 629 deletions(-) diff --git a/examples/openapi-ts-router/express/petstore/package.json b/examples/openapi-ts-router/express/petstore/package.json index 55f9a802..2f50f352 100644 --- a/examples/openapi-ts-router/express/petstore/package.json +++ b/examples/openapi-ts-router/express/petstore/package.json @@ -21,7 +21,7 @@ "devDependencies": { "@blgc/config": "workspace:*", "@types/express": "^5.0.3", - "@types/node": "^22.15.30", + "@types/node": "^24.1.0", "nodemon": "^3.1.10", "openapi-typescript": "^7.8.0", "ts-node": "^10.9.2", diff --git a/examples/openapi-ts-router/express/petstore/src/index.ts b/examples/openapi-ts-router/express/petstore/src/index.ts index 226ee0c8..83f468c6 100644 --- a/examples/openapi-ts-router/express/petstore/src/index.ts +++ b/examples/openapi-ts-router/express/petstore/src/index.ts @@ -7,7 +7,7 @@ const port = 3000; app.use(express.json()); -app.get('/*', router); +app.use(router); app.use(invalidPathMiddleware); app.use(errorMiddleware); diff --git a/examples/openapi-ts-router/express/petstore/src/router.ts b/examples/openapi-ts-router/express/petstore/src/router.ts index 2662a8cd..3a017782 100644 --- a/examples/openapi-ts-router/express/petstore/src/router.ts +++ b/examples/openapi-ts-router/express/petstore/src/router.ts @@ -21,8 +21,8 @@ openApiRouter.get('/pet/{petId}', { } ], handler: (req, res) => { - const { petId } = req.params; - console.log('handler'); + const { petId } = req.parsed.params; + console.log('handler', petId, typeof petId); res.send({ name: 'Falko', diff --git a/packages/feature-state/package.json b/packages/feature-state/package.json index e23c4a15..7ddb8643 100644 --- a/packages/feature-state/package.json +++ b/packages/feature-state/package.json @@ -1,6 +1,6 @@ { "name": "feature-state", - "version": "0.0.56", + "version": "0.0.57", "private": false, "description": "Straightforward, typesafe, and feature-based state management library for ReactJs", "keywords": [], diff --git a/packages/openapi-ts-router/package.json b/packages/openapi-ts-router/package.json index b8a8bbe4..3294764e 100644 --- a/packages/openapi-ts-router/package.json +++ b/packages/openapi-ts-router/package.json @@ -1,6 +1,6 @@ { "name": "openapi-ts-router", - "version": "0.2.14", + "version": "0.2.15", "private": false, "description": "Thin wrapper around the router of web frameworks like Express and Hono, offering OpenAPI typesafety and seamless integration with validation libraries such as Valibot and Zod", "keywords": [], diff --git a/packages/openapi-ts-router/src/features/with-express/with-express.ts b/packages/openapi-ts-router/src/features/with-express/with-express.ts index 162a2399..030c1806 100644 --- a/packages/openapi-ts-router/src/features/with-express/with-express.ts +++ b/packages/openapi-ts-router/src/features/with-express/with-express.ts @@ -1,16 +1,19 @@ import { TEnforceFeatureConstraint, TFeatureDefinition } from '@blgc/types/features'; import { type TOperationPathParams, type TOperationQueryParams } from '@blgc/types/openapi'; import type * as express from 'express'; -import { type ParamsDictionary } from 'express-serve-static-core'; import { createValidationContext, type TValidationError } from 'validation-adapter'; import { ValidationError } from '../../exceptions'; import { formatPath, parseParams } from '../../helper'; import { TOpenApiExpressFeature, + TOpenApiExpressParsedData, + TOpenApiExpressPathParams, + TOpenApiExpressQueryParams, + TParams, type TOpenApiExpressParamsParserOptions, + type TOpenApiExpressRequest, type TOpenApiExpressValidators, - type TOpenApiRouter, - type TParams + type TOpenApiRouter } from '../../types'; export function withExpress( @@ -77,7 +80,7 @@ export function withExpress; } -function parseParamsMiddleware( +function parseParamsMiddleware( paramsParser: TOpenApiExpressParamsParserOptions = {} ): express.RequestHandler { const { @@ -88,23 +91,19 @@ function parseParamsMiddleware( parseQueryParamsBlacklist } = paramsParser; - if (shouldParseParams) { - return (req, _res, next) => { - // Extend Express query params & path params parsing to handle numbers and booleans - // as primitive type instead of string. - // See: https://expressjs.com/en/5x/api.html#req.query - // https://github.com/ljharb/qs/issues/91 - req.query = parseQueryParams(req.query as TParams, parseQueryParamsBlacklist) as TParams; - req.params = parsePathParams( - req.params as TParams, - parsePathParamsBlacklist - ) as ParamsDictionary; - - next(); - }; - } - - return (_req, _res, next) => { + return (req, _res, next) => { + if (shouldParseParams) { + (req as TOpenApiExpressRequest).parsed = { + query: parseQueryParams( + req.query as TParams, + parseQueryParamsBlacklist + ) as TOpenApiExpressQueryParams, + params: parsePathParams( + req.params as TParams, + parsePathParamsBlacklist + ) as TOpenApiExpressPathParams + } as TOpenApiExpressParsedData; + } next(); }; } @@ -128,8 +127,10 @@ function validationMiddleware( } if (pathValidator != null) { + const pathParams = + (req as TOpenApiExpressRequest).parsed?.params ?? req.params; const pathValidationContext = createValidationContext>( - req.params as TOperationPathParams + pathParams as TOperationPathParams ); await pathValidator.validate(pathValidationContext); for (const error of pathValidationContext.errors) { @@ -139,9 +140,11 @@ function validationMiddleware( } if (queryValidator != null) { + const queryParams = + (req as TOpenApiExpressRequest).parsed?.query ?? req.query; const queryValidationContext = createValidationContext< TOperationQueryParams - >(req.query as TOperationQueryParams); + >(queryParams as TOperationQueryParams); await queryValidator.validate(queryValidationContext); for (const error of queryValidationContext.errors) { error['source'] = 'query'; diff --git a/packages/openapi-ts-router/src/helper/format-path.ts b/packages/openapi-ts-router/src/helper/format-path.ts index a5454480..72890be3 100644 --- a/packages/openapi-ts-router/src/helper/format-path.ts +++ b/packages/openapi-ts-router/src/helper/format-path.ts @@ -1,4 +1,4 @@ // "/users/{userId}/books/{bookId}" -> "/users/:userId/books/:bookId" export function formatPath(path: string): string { - return path.replace(/\{(?\w+)\}/g, ':$'); + return path.replace(/\{(\w+)\}/g, ':$1'); } diff --git a/packages/openapi-ts-router/src/types/features/express.ts b/packages/openapi-ts-router/src/types/features/express.ts index 3275d9aa..44ce73d9 100644 --- a/packages/openapi-ts-router/src/types/features/express.ts +++ b/packages/openapi-ts-router/src/types/features/express.ts @@ -78,7 +78,10 @@ export type TOpenApiExpressRequest = express.Request< TOperationSuccessResponseContent, // ResBody TOpenApiExpressRequestBody, // ReqBody TOpenApiExpressQueryParams // ReqQuery ->; +> & { + // Express 5: req.query/req.params are read-only -> parsed params stored here + parsed: TOpenApiExpressParsedData; +}; export type TOpenApiExpressQueryParams = TOperationQueryParams extends never @@ -97,6 +100,19 @@ export type TOpenApiExpressResponse = express.Response< express.Locals >; +export type TOpenApiExpressParsedData = TOpenApiExpressParsedQuery & + TOpenApiExpressParsedParams; + +export type TOpenApiExpressParsedQuery = + TOperationQueryParams extends never + ? { query?: never } + : { query: TOpenApiExpressQueryParams }; + +export type TOpenApiExpressParsedParams = + TOperationPathParams extends never + ? { params?: never } + : { params: TOpenApiExpressPathParams }; + // ============================================================================= // Router Options // ============================================================================= diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2671ab42..14d53458 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,10 +16,10 @@ importers: version: 0.5.1 '@changesets/cli': specifier: ^2.29.4 - version: 2.29.4 + version: 2.29.5 '@ianvs/prettier-plugin-sort-imports': specifier: ^4.4.1 - version: 4.4.2(prettier@3.5.3) + version: 4.5.1(prettier@3.6.2) '@size-limit/esbuild': specifier: ^11.2.0 version: 11.2.0(size-limit@11.2.0) @@ -31,16 +31,16 @@ importers: version: 11.2.0(size-limit@11.2.0) eslint: specifier: ^9.27.0 - version: 9.28.0(jiti@2.4.2) + version: 9.32.0(jiti@2.4.2) prettier: specifier: ^3.5.3 - version: 3.5.3 + version: 3.6.2 prettier-plugin-tailwindcss: specifier: ^0.6.11 - version: 0.6.12(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.5.3))(prettier-plugin-css-order@2.1.2(postcss@8.5.4)(prettier@3.5.3))(prettier@3.5.3) + version: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier-plugin-css-order@2.1.2(postcss@8.5.6)(prettier@3.6.2))(prettier@3.6.2) rollup: specifier: ^4.41.1 - version: 4.42.0 + version: 4.45.3 shx: specifier: ^0.4.0 version: 0.4.0 @@ -49,13 +49,13 @@ importers: version: 11.2.0 turbo: specifier: ^2.5.3 - version: 2.5.4 + version: 2.5.5 typescript: specifier: ^5.8.3 version: 5.8.3 vitest: specifier: ^3.1.4 - version: 3.2.3(@types/node@22.15.30)(jiti@2.4.2)(msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3))(tsx@4.19.4) + version: 3.2.4(@types/node@24.1.0)(jiti@2.4.2)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3) examples/ecsify/vanilla/basic: dependencies: @@ -68,7 +68,7 @@ importers: version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) examples/feature-fetch/vanilla/open-meteo: dependencies: @@ -84,7 +84,7 @@ importers: version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) examples/feature-form/react/basic: dependencies: @@ -111,38 +111,38 @@ importers: version: link:../../../../packages/validation-adapters zod: specifier: ^3.25.56 - version: 3.25.56 + version: 4.0.10 devDependencies: '@types/react': specifier: ^19.1.6 - version: 19.1.6 + version: 19.1.8 '@types/react-dom': specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + version: 19.1.6(@types/react@19.1.8) '@typescript-eslint/eslint-plugin': specifier: ^8.33.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.33.1 - version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.5.1 - version: 4.5.1(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4)) + version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3)) eslint: specifier: ^9.28.0 - version: 9.28.0(jiti@2.4.2) + version: 9.32.0(jiti@2.4.2) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.28.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.28.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.32.0(jiti@2.4.2)) typescript: specifier: ^5.8.3 version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) examples/feature-state/react/counter: dependencies: @@ -164,34 +164,34 @@ importers: devDependencies: '@types/react': specifier: ^19.1.6 - version: 19.1.6 + version: 19.1.8 '@types/react-dom': specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.6) + version: 19.1.6(@types/react@19.1.8) '@typescript-eslint/eslint-plugin': specifier: ^8.33.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.33.1 - version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.5.1 - version: 4.5.1(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4)) + version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3)) eslint: specifier: ^9.28.0 - version: 9.28.0(jiti@2.4.2) + version: 9.32.0(jiti@2.4.2) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.28.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.28.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.32.0(jiti@2.4.2)) typescript: specifier: ^5.8.3 version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) examples/openapi-ts-router/express/petstore: dependencies: @@ -215,8 +215,8 @@ importers: specifier: ^5.0.3 version: 5.0.3 '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.1.0 + version: 24.1.0 nodemon: specifier: ^3.1.10 version: 3.1.10 @@ -225,7 +225,7 @@ importers: version: 7.8.0(typescript@5.8.3) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.15.30)(typescript@5.8.3) + version: 10.9.2(@types/node@24.1.0)(typescript@5.8.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -234,13 +234,13 @@ importers: dependencies: '@hono/node-server': specifier: ^1.14.4 - version: 1.14.4(hono@4.7.11) + version: 1.17.1(hono@4.8.9) '@hono/zod-validator': specifier: ^0.7.0 - version: 0.7.0(hono@4.7.11)(zod@3.25.56) + version: 0.7.2(hono@4.8.9)(zod@4.0.10) hono: specifier: ^4.7.11 - version: 4.7.11 + version: 4.8.9 openapi-ts-router: specifier: workspace:* version: link:../../../../packages/openapi-ts-router @@ -249,14 +249,14 @@ importers: version: link:../../../../packages/validation-adapters zod: specifier: ^3.25.56 - version: 3.25.56 + version: 4.0.10 devDependencies: '@types/node': specifier: ^22.15.30 - version: 22.15.30 + version: 24.1.0 tsx: specifier: ^4.19.4 - version: 4.19.4 + version: 4.20.3 examples/xml-tokenizer/vanilla/playground: dependencies: @@ -287,65 +287,65 @@ importers: version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + version: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) packages/config: dependencies: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.4.2 - version: 4.4.2(prettier@3.5.3) + version: 4.5.1(prettier@3.6.2) '@next/eslint-plugin-next': specifier: ^15.3.3 - version: 15.3.3 + version: 15.4.4 '@typescript-eslint/eslint-plugin': specifier: ^8.33.0 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.33.0 - version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.5(eslint@9.28.0(jiti@2.4.2)) + version: 10.1.8(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-only-warn: specifier: ^1.1.0 version: 1.1.0 eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.28.0(jiti@2.4.2)) + version: 7.37.5(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.28.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.32.0(jiti@2.4.2)) eslint-plugin-turbo: specifier: ^2.5.4 - version: 2.5.4(eslint@9.28.0(jiti@2.4.2))(turbo@2.5.4) + version: 2.5.5(eslint@9.32.0(jiti@2.4.2))(turbo@2.5.5) prettier-plugin-css-order: specifier: ^2.1.2 - version: 2.1.2(postcss@8.5.4)(prettier@3.5.3) + version: 2.1.2(postcss@8.5.6)(prettier@3.6.2) prettier-plugin-packagejson: specifier: ^2.5.15 - version: 2.5.15(prettier@3.5.3) + version: 2.5.19(prettier@3.6.2) prettier-plugin-tailwindcss: specifier: ^0.6.12 - version: 0.6.12(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.5.3))(prettier-plugin-css-order@2.1.2(postcss@8.5.4)(prettier@3.5.3))(prettier@3.5.3) + version: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier-plugin-css-order@2.1.2(postcss@8.5.6)(prettier@3.6.2))(prettier@3.6.2) typescript-eslint: specifier: ^8.33.0 - version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4)) + version: 5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3)) devDependencies: eslint: specifier: ^9.28.0 - version: 9.28.0(jiti@2.4.2) + version: 9.32.0(jiti@2.4.2) prettier: specifier: ^3.5.3 - version: 3.5.3 + version: 3.6.2 typescript: specifier: ^5.8.3 version: 5.8.3 vitest: specifier: ^3.1.4 - version: 3.2.3(@types/node@22.15.30)(jiti@2.4.2)(msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3))(tsx@4.19.4) + version: 3.2.4(@types/node@24.1.0)(jiti@2.4.2)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3) packages/ecsify: dependencies: @@ -361,13 +361,13 @@ importers: version: 0.15.5 '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 bitecs: specifier: github:NateTheGreatt/bitECS#rc-0-4-0 version: https://codeload.github.com/NateTheGreatt/bitECS/tar.gz/caa1f58be2ccc304c1f0a085de34ca5904b3b80f elics: specifier: ^2.3.0 - version: 2.3.0 + version: 3.0.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -389,10 +389,10 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 dotenv: specifier: ^16.5.0 - version: 16.5.0 + version: 17.2.1 openapi-typescript: specifier: ^7.8.0 version: 7.8.0(typescript@5.8.3) @@ -417,10 +417,10 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 dotenv: specifier: ^16.5.0 - version: 16.5.0 + version: 17.2.1 openapi-typescript: specifier: ^7.8.0 version: 7.8.0(typescript@5.8.3) @@ -445,13 +445,13 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 '@types/url-parse': specifier: ^1.4.11 version: 1.4.11 msw: specifier: ^2.8.7 - version: 2.10.2(@types/node@22.15.30)(typescript@5.8.3) + version: 2.10.4(@types/node@24.1.0)(typescript@5.8.3) rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -476,7 +476,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -495,7 +495,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -514,10 +514,10 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 '@types/react': specifier: ^19.1.6 - version: 19.1.6 + version: 19.1.8 feature-form: specifier: workspace:* version: link:../feature-form @@ -545,7 +545,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -561,10 +561,10 @@ importers: version: link:../config '@figma/plugin-typings': specifier: ^1.113.0 - version: 1.113.0 + version: 1.116.0 '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -586,10 +586,10 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 dotenv: specifier: ^16.5.0 - version: 16.5.0 + version: 17.2.1 openapi-typescript: specifier: ^7.8.0 version: 7.8.0(typescript@5.8.3) @@ -605,7 +605,7 @@ importers: devDependencies: '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -627,16 +627,16 @@ importers: version: 5.0.3 '@types/express-serve-static-core': specifier: ^5.0.6 - version: 5.0.6 + version: 5.0.7 '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 express: specifier: ^5.1.0 version: 5.1.0 hono: specifier: ^4.7.11 - version: 4.7.11 + version: 4.8.9 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -651,7 +651,7 @@ importers: dependencies: '@rollup/plugin-commonjs': specifier: ^28.0.3 - version: 28.0.3(rollup@4.42.0) + version: 28.0.6(rollup@4.45.3) execa: specifier: 9.6.0 version: 9.6.0 @@ -660,23 +660,23 @@ importers: version: 1.1.1 rollup-plugin-dts: specifier: ^6.2.1 - version: 6.2.1(rollup@4.42.0)(typescript@5.8.3) + version: 6.2.1(rollup@4.45.3)(typescript@5.8.3) rollup-plugin-esbuild: specifier: ^6.2.1 - version: 6.2.1(esbuild@0.25.5)(rollup@4.42.0) + version: 6.2.1(esbuild@0.25.5)(rollup@4.45.3) rollup-plugin-node-externals: specifier: 8.0.0 - version: 8.0.0(rollup@4.42.0) + version: 8.0.1(rollup@4.45.3) devDependencies: '@blgc/config': specifier: workspace:* version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup: specifier: ^4.41.1 - version: 4.42.0 + version: 4.45.3 type-fest: specifier: ^4.41.0 version: 4.41.0 @@ -697,7 +697,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -716,7 +716,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -732,7 +732,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -748,7 +748,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.30 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -760,7 +760,7 @@ importers: version: 1.6.1 zod: specifier: ^3.25.56 - version: 3.25.56 + version: 4.0.10 packages/webito: dependencies: @@ -773,7 +773,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 rollup-presets: specifier: workspace:* version: link:../rollup-presets @@ -785,7 +785,7 @@ importers: version: link:../config '@types/node': specifier: ^22.15.29 - version: 22.15.30 + version: 24.1.0 '@types/sax': specifier: ^1.2.7 version: 1.2.7 @@ -839,26 +839,30 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.5': - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} + '@babel/compat-data@7.28.0': + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} '@babel/generator@7.27.1': resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.5': - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -889,8 +893,8 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} engines: {node: '>=6.9.0'} '@babel/parser@7.27.2': @@ -903,6 +907,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -927,8 +936,8 @@ packages: resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.4': - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} '@babel/types@7.27.1': @@ -939,6 +948,10 @@ packages: resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@bundled-es-modules/cookie@2.0.1': resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} @@ -951,8 +964,8 @@ packages: '@changesets/apply-release-plan@7.0.12': resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} - '@changesets/assemble-release-plan@6.0.8': - resolution: {integrity: sha512-y8+8LvZCkKJdbUlpXFuqcavpzJR80PN0OIfn8HZdwK7Sh6MgLXm4hKY5vu6/NDoKp8lAlM4ERZCqRMLxP4m+MQ==} + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} @@ -960,8 +973,8 @@ packages: '@changesets/changelog-github@0.5.1': resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} - '@changesets/cli@2.29.4': - resolution: {integrity: sha512-VW30x9oiFp/un/80+5jLeWgEU6Btj8IqOgI+X/zAYu4usVOWXjPIK5jSSlt5jsCU7/6Z7AxEkarxBxGUqkAmNg==} + '@changesets/cli@2.29.5': + resolution: {integrity: sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==} hasBin: true '@changesets/config@3.1.1': @@ -976,8 +989,8 @@ packages: '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.12': - resolution: {integrity: sha512-KukdEgaafnyGryUwpHG2kZ7xJquOmWWWk5mmoeQaSvZTWH1DC5D/Sw6ClgGFYtQnOMSQhgoEbDxAbpIIayKH1g==} + '@changesets/get-release-plan@4.0.13': + resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -1323,48 +1336,48 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.0': - resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.2': - resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + '@eslint/config-helpers@0.3.0': + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.14.0': - resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + '@eslint/core@0.15.1': + resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.28.0': - resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} + '@eslint/js@9.32.0': + resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.1': - resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} + '@eslint/plugin-kit@0.3.4': + resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@figma/plugin-typings@1.113.0': - resolution: {integrity: sha512-gasgrtK6XsZmpsWCbE1g7KTLWGCc6teo4alNUDF06OtJ7E9hwOOTMdicueAgghvQJETI+dmWE3IjJfGIPSsdfA==} + '@figma/plugin-typings@1.116.0': + resolution: {integrity: sha512-jpn7Vq3uxgJF5oQ5PwkWGGIyCwIjB260UjtSzBck9LL1WzXJSaxBH1wo+vrU4XXbV//TURUGBYIQ2tU7cdyRYQ==} - '@hono/node-server@1.14.4': - resolution: {integrity: sha512-DnxpshhYewr2q9ZN8ez/M5mmc3sucr8CT1sIgIy1bkeUXut9XWDkqHoFHRhWIQgkYnKpVRxunyhK7WzpJeJ6qQ==} + '@hono/node-server@1.17.1': + resolution: {integrity: sha512-SY79W/C+2b1MyAzmIcV32Q47vO1b5XwLRwj8S9N6Jr5n1QCkIfAIH6umOSgqWZ4/v67hg6qq8Ha5vZonVidGsg==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 - '@hono/zod-validator@0.7.0': - resolution: {integrity: sha512-qe2ZE6sHFE98dcUrbYMtS3bAV8hqcCOflykvZga2S7XhmNSZzT+dIz4OuMILsjLHkJw9JMn912/dB7dQOmuPvg==} + '@hono/zod-validator@0.7.2': + resolution: {integrity: sha512-ub5eL/NeZ4eLZawu78JpW/J+dugDAYhwqUIdp9KYScI6PZECij4Hx4UsrthlEUutqDDhPwRI0MscUfNkvn/mqQ==} peerDependencies: hono: '>=3.9.0' - zod: ^3.25.0 + zod: ^3.25.0 || ^4.0.0 '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -1386,12 +1399,15 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@ianvs/prettier-plugin-sort-imports@4.4.2': - resolution: {integrity: sha512-KkVFy3TLh0OFzimbZglMmORi+vL/i2OFhEs5M07R9w0IwWAGpsNNyE4CY/2u0YoMF5bawKC2+8/fUH60nnNtjw==} + '@ianvs/prettier-plugin-sort-imports@4.5.1': + resolution: {integrity: sha512-vOQwIyQHnHz0ikvHEQDzwUkNfX74o/7qNEpm9LiPtyBvCg/AU/DOkhwe1o92chPS1QzS6G7HeiO+OwIt8a358A==} peerDependencies: + '@prettier/plugin-oxc': ^0.0.4 '@vue/compiler-sfc': 2.7.x || 3.x prettier: 2 || 3 || ^4.0.0-0 peerDependenciesMeta: + '@prettier/plugin-oxc': + optional: true '@vue/compiler-sfc': optional: true @@ -1426,6 +1442,9 @@ packages: '@types/node': optional: true + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -1441,9 +1460,15 @@ packages: '@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==} @@ -1461,8 +1486,8 @@ packages: resolution: {integrity: sha512-RuzCup9Ct91Y7V79xwCb146RaBRHZ7NBbrIUySumd1rpKqHL5OonaqrGIbug5hNwP/fRyxFMA6ISgw4FTtYFYg==} engines: {node: '>=18'} - '@next/eslint-plugin-next@15.3.3': - resolution: {integrity: sha512-VKZJEiEdpKkfBmcokGjHu0vGDG+8CehGs90tBEy/IDoDDKGngeyIStt2MmE5FYNyU9BhgR7tybNWTAJY/30u+Q==} + '@next/eslint-plugin-next@15.4.4': + resolution: {integrity: sha512-1FDsyN//ai3Jd97SEd7scw5h1yLdzDACGOPRofr2GD3sEFsBylEEoL0MHSerd4n2dq9Zm/mFMqi4+NRMOreOKA==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1485,8 +1510,8 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@pkgr/core@0.2.5': - resolution: {integrity: sha512-YRx7tFgLkrpFkDAzVSV5sUJydmf2ZDrW+O3IbQ1JyeMW7B0FiWroFJTnR4/fD9CsusnAn4qRUcbb5jFnZSd6uw==} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@preact/signals-core@1.9.0': @@ -1498,15 +1523,15 @@ packages: '@redocly/config@0.22.2': resolution: {integrity: sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==} - '@redocly/openapi-core@1.34.3': - resolution: {integrity: sha512-3arRdUp1fNx55itnjKiUhO6t4Mf91TsrTIYINDNLAZPS0TPd5YpiXRctwjel0qqWoOOhjA34cZ3m4dksLDFUYg==} + '@redocly/openapi-core@1.34.5': + resolution: {integrity: sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@rolldown/pluginutils@1.0.0-beta.9': - resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rollup/plugin-commonjs@28.0.3': - resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} + '@rollup/plugin-commonjs@28.0.6': + resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -1523,103 +1548,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.42.0': - resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==} + '@rollup/rollup-android-arm-eabi@4.45.3': + resolution: {integrity: sha512-8oQkCTve4H4B4JpmD2FV7fV2ZPTxJHN//bRhCqPUU8v6c5APlxteAXyc7BFaEb4aGpUzrPLU4PoAcGhwmRzZTA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.42.0': - resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==} + '@rollup/rollup-android-arm64@4.45.3': + resolution: {integrity: sha512-StOsmdXHU2hx3UFTTs6yYxCSwSIgLsfjUBICXyWj625M32OOjakXlaZuGKL+jA3Nvv35+hMxrm/64eCoT07SYQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.42.0': - resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==} + '@rollup/rollup-darwin-arm64@4.45.3': + resolution: {integrity: sha512-6CfLF3eqKhCdhK0GUnR5ZS99OFz+dtOeB/uePznLKxjCsk5QjT/V0eSEBb4vj+o/ri3i35MseSEQHCLLAgClVw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.42.0': - resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==} + '@rollup/rollup-darwin-x64@4.45.3': + resolution: {integrity: sha512-QLWyWmAJG9elNTNLdcSXUT/M+J7DhEmvs1XPHYcgYkse3UHf9iWTJ+yTPlKMIetiQnNi+cNp+gY4gvjDpREfKw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.42.0': - resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==} + '@rollup/rollup-freebsd-arm64@4.45.3': + resolution: {integrity: sha512-ZOvBq+5nL0yrZIEo1eq6r7MPvkJ8kC1XATS/yHvcq3WbDNKNKBQ1uIF4hicyzDMoJt72G+sn1nKsFXpifZyRDA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.42.0': - resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==} + '@rollup/rollup-freebsd-x64@4.45.3': + resolution: {integrity: sha512-AYvGR07wecEnyYSovyJ71pTOulbNvsrpRpK6i/IM1b0UGX1vFx51afYuPYPxnvE9aCl5xPnhQicEvdIMxClRgQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.42.0': - resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==} + '@rollup/rollup-linux-arm-gnueabihf@4.45.3': + resolution: {integrity: sha512-Yx8Cp38tfRRToVLuIWzBHV25/QPzpUreOPIiUuNV7KahNPurYg2pYQ4l7aYnvpvklO1riX4643bXLvDsYSBIrA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.42.0': - resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==} + '@rollup/rollup-linux-arm-musleabihf@4.45.3': + resolution: {integrity: sha512-4dIYRNxlXGDKnO6qgcda6LxnObPO6r1OBU9HG8F9pAnHHLtfbiOqCzDvkeHknx+5mfFVH4tWOl+h+cHylwsPWA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.42.0': - resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==} + '@rollup/rollup-linux-arm64-gnu@4.45.3': + resolution: {integrity: sha512-M6uVlWKmhLN7LguLDu6396K1W5IBlAaRonjlHQgc3s4dOGceu0FeBuvbXiUPYvup/6b5Ln7IEX7XNm68DN4vrg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.42.0': - resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==} + '@rollup/rollup-linux-arm64-musl@4.45.3': + resolution: {integrity: sha512-emaYiOTQJUd6fC9a6jcw9zIWtzaUiuBC+vomggaM4In2iOra/lA6IMHlqZqQZr08NYXrOPMVigreLMeSAwv3Uw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.42.0': - resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==} + '@rollup/rollup-linux-loongarch64-gnu@4.45.3': + resolution: {integrity: sha512-3P77T5AQ4UfVRJSrTKLiUZDJ6XsxeP80027bp6mOFh8sevSD038mYuIYFiUtrSJxxgFb+NgRJFF9oIa0rlUsmg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': - resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==} + '@rollup/rollup-linux-ppc64-gnu@4.45.3': + resolution: {integrity: sha512-/VPH3ZVeSlmCBPhZdx/+4dMXDjaGMhDsWOBo9EwSkGbw2+OAqaslL53Ao2OqCxR0GgYjmmssJ+OoG+qYGE7IBg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.42.0': - resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==} + '@rollup/rollup-linux-riscv64-gnu@4.45.3': + resolution: {integrity: sha512-Hs5if0PjROl1MGMmZX3xMAIfqcGxQE2SJWUr/CpDQsOQn43Wq4IvXXxUMWtiY/BrzdqCCJlRgJ5DKxzS3qWkCw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.42.0': - resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==} + '@rollup/rollup-linux-riscv64-musl@4.45.3': + resolution: {integrity: sha512-Qm0WOwh3Lk388+HJFl1ILGbd2iOoQf6yl4fdGqOjBzEA+5JYbLcwd+sGsZjs5pkt8Cr/1G42EiXmlRp9ZeTvFA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.42.0': - resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==} + '@rollup/rollup-linux-s390x-gnu@4.45.3': + resolution: {integrity: sha512-VJdknTaYw+TqXzlh9c7vaVMh/fV2sU8Khfk4a9vAdYXJawpjf6z3U1k7vDWx2IQ9ZOPoOPxgVpDfYOYhxD7QUA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.42.0': - resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==} + '@rollup/rollup-linux-x64-gnu@4.45.3': + resolution: {integrity: sha512-SUDXU5YabLAMl86FpupSQQEWzVG8X0HM+Q/famnJusbPiUgQnTGuSxtxg4UAYgv1ZmRV1nioYYXsgtSokU/7+Q==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.42.0': - resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==} + '@rollup/rollup-linux-x64-musl@4.45.3': + resolution: {integrity: sha512-ezmqknOUFgZMN6wW+Avlo4sXF3Frswd+ncrwMz4duyZ5Eqd+dAYgJ+A1MY+12LNZ7XDhCiijJceueYvtnzdviw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.42.0': - resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==} + '@rollup/rollup-win32-arm64-msvc@4.45.3': + resolution: {integrity: sha512-1YfXoUEE++gIW66zNB9Twd0Ua5xCXpfYppFUxVT/Io5ZT3fO6Se+C/Jvmh3usaIHHyi53t3kpfjydO2GAy5eBA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.42.0': - resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==} + '@rollup/rollup-win32-ia32-msvc@4.45.3': + resolution: {integrity: sha512-Iok2YA3PvC163rVZf2Zy81A0g88IUcSPeU5pOilcbICXre2EP1mxn1Db/l09Z/SK1vdSLtpJXAnwGuMOyf5O9g==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.42.0': - resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==} + '@rollup/rollup-win32-x64-msvc@4.45.3': + resolution: {integrity: sha512-HwHCH5GQTOeGYP5wBEBXFVhfQecwRl24Rugoqhh8YwGarsU09bHhOKuqlyW4ZolZCan3eTUax7UJbGSmKSM51A==} cpu: [x64] os: [win32] @@ -1692,14 +1717,11 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@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.3': resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} @@ -1716,8 +1738,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@22.15.30': - resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} + '@types/node@24.1.0': + resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -1730,8 +1752,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.6': - resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==} + '@types/react@19.1.8': + resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -1757,76 +1779,76 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.33.1': - resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} + '@typescript-eslint/eslint-plugin@8.38.0': + resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.33.1 + '@typescript-eslint/parser': ^8.38.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.33.1': - resolution: {integrity: sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==} + '@typescript-eslint/parser@8.38.0': + resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.33.1': - resolution: {integrity: sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==} + '@typescript-eslint/project-service@8.38.0': + resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.33.1': - resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} + '@typescript-eslint/scope-manager@8.38.0': + resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.33.1': - resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} + '@typescript-eslint/tsconfig-utils@8.38.0': + resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.33.1': - resolution: {integrity: sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==} + '@typescript-eslint/type-utils@8.38.0': + resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.33.1': - resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} + '@typescript-eslint/types@8.38.0': + resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.33.1': - resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} + '@typescript-eslint/typescript-estree@8.38.0': + resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.33.1': - resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} + '@typescript-eslint/utils@8.38.0': + resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.33.1': - resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} + '@typescript-eslint/visitor-keys@8.38.0': + resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitejs/plugin-react@4.5.1': - resolution: {integrity: sha512-uPZBqSI0YD4lpkIru6M35sIfylLGTyhGHvDZbNLuMA73lMlwJKz5xweH7FajfcCAc2HnINciejA9qTz0dr0M7A==} + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/expect@3.2.3': - resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/mocker@3.2.3': - resolution: {integrity: sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==} + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 @@ -1836,20 +1858,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.2.3': - resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/runner@3.2.3': - resolution: {integrity: sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==} + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@vitest/snapshot@3.2.3': - resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==} + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - '@vitest/spy@3.2.3': - resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/utils@3.2.3': - resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} @@ -1869,8 +1891,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} ajv@6.12.6: @@ -1971,18 +1993,18 @@ packages: resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} engines: {node: '>=18'} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - 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==} engines: {node: '>=8'} - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2022,8 +2044,8 @@ packages: resolution: {integrity: sha512-HtgOb4cXhr++JQX98bv1UwL/eHJklrtalcD9v+TW3Voc5bsT8ph4vJBS/kcZRjdpqT3fyywRKjasNcWo4vOqIQ==} engines: {node: '>= 12.0.0'} - caniuse-lite@1.0.30001721: - resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} + caniuse-lite@1.0.30001727: + resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} chai@5.2.0: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} @@ -2214,8 +2236,8 @@ packages: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + dotenv@17.2.1: + resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} engines: {node: '>=12'} dotenv@8.6.0: @@ -2229,11 +2251,11 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.165: - resolution: {integrity: sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==} + electron-to-chromium@1.5.191: + resolution: {integrity: sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==} - elics@2.3.0: - resolution: {integrity: sha512-J6hnuxg7592jYkF1mJU0d4tSefWW5j27KE3tsceURbV5Fmu4bNqUrtt7gGpzt0xFWIM3PrqOeKezS2E0uz/nBw==} + elics@3.0.0: + resolution: {integrity: sha512-L1YtHQzN/by38YxyyfcYQsFrPiB63js9vzxNxeTwOcp9LjF90036LvenoHa/qWBpVU7/09n5Vo3qcR0dGawFxQ==} engines: {node: '>=16.0.0'} emoji-regex@8.0.0: @@ -2314,8 +2336,8 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@10.1.5: - resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -2341,8 +2363,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.5.4: - resolution: {integrity: sha512-IZsW61DFj5mLMMaCJxhh1VE4HvNhfdnHnAaXajgne+LUzdyHk2NvYT0ECSa/1SssArcqgTvV74MrLL68hWLLFw==} + eslint-plugin-turbo@2.5.5: + resolution: {integrity: sha512-IlN65X6W7rgK88u5xl1xC+7FIGKA7eyaca0yxZQ9CBNV6keAaqtjZQLw8ZfXdv7T+MzTLYkYOeOHAv8yCRUx4Q==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -2359,8 +2381,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.28.0: - resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} + eslint@9.32.0: + resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2478,6 +2500,14 @@ packages: picomatch: optional: true + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -2662,8 +2692,8 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} - hono@4.7.11: - resolution: {integrity: sha512-rv0JMwC0KALbbmwJDEnxvQCeJh+xbS3KEWW5PC9cMJ08Ur9xgatI0HmtgYZfOdOSOeYsp5LO2cOhdI8cLEbDEQ==} + hono@4.8.9: + resolution: {integrity: sha512-ERIxkXMRhUxGV7nS/Af52+j2KL60B1eg+k6cPtgzrGughS+espS9KQ7QO0SMnevtmRlBfAcN0mf1jKtO6j/doA==} engines: {node: '>=16.9.0'} http-errors@2.0.0: @@ -2981,6 +3011,9 @@ packages: loupe@3.1.3: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3039,8 +3072,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.10.2: - resolution: {integrity: sha512-RCKM6IZseZQCWcSWlutdf590M8nVfRHG1ImwzOtwz8IYxgT4zhUO0rfTcTvDGiaFE0Rhcc+h43lcF3Jc9gFtwQ==} + msw@2.10.4: + resolution: {integrity: sha512-6R1or/qyele7q3RyPwNuvc0IxO8L8/Aim6Sz5ncXEgcWUNxSKE+udriTOWHtpMwmfkLYlacA2y7TIx4cL5lgHA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -3285,6 +3318,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -3316,6 +3353,10 @@ packages: resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3326,19 +3367,21 @@ packages: peerDependencies: prettier: 3.x - prettier-plugin-packagejson@2.5.15: - resolution: {integrity: sha512-2QSx6y4IT6LTwXtCvXAopENW5IP/aujC8fobEM2pDbs0IGkiVjW/ipPuYAHuXigbNe64aGWF7vIetukuzM3CBw==} + prettier-plugin-packagejson@2.5.19: + resolution: {integrity: sha512-Qsqp4+jsZbKMpEGZB1UP1pxeAT8sCzne2IwnKkr+QhUe665EXUo3BAvTf1kAPCqyMv9kg3ZmO0+7eOni/C6Uag==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: prettier: optional: true - prettier-plugin-tailwindcss@0.6.12: - resolution: {integrity: sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==} + prettier-plugin-tailwindcss@0.6.14: + resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-hermes': '*' + '@prettier/plugin-oxc': '*' '@prettier/plugin-pug': '*' '@shopify/prettier-plugin-liquid': '*' '@trivago/prettier-plugin-sort-imports': '*' @@ -3358,6 +3401,10 @@ packages: peerDependenciesMeta: '@ianvs/prettier-plugin-sort-imports': optional: true + '@prettier/plugin-hermes': + optional: true + '@prettier/plugin-oxc': + optional: true '@prettier/plugin-pug': optional: true '@shopify/prettier-plugin-liquid': @@ -3394,8 +3441,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - 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 @@ -3540,14 +3587,14 @@ packages: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup-plugin-node-externals@8.0.0: - resolution: {integrity: sha512-2HIOpWsWn5DqBoYl6iCAmB4kd5GoGbF68PR4xKR1YBPvywiqjtYvDEjHFodyqRL51iAMDITP074Zxs0OKs6F+g==} + rollup-plugin-node-externals@8.0.1: + resolution: {integrity: sha512-j6uve/BPEyHCmQuXpu5/LT5qXw69QLIi6YnFrs6F7tmGFXjkFDT0zqZMt0KaMuWSvkcxJFBklsKfYYoKKEPwyw==} engines: {node: '>= 21 || ^20.6.0 || ^18.19.0'} peerDependencies: rollup: ^4.0.0 - rollup@4.42.0: - resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==} + rollup@4.45.3: + resolution: {integrity: sha512-STwyHZF3G+CrmZhB+qDiROq9s8B5PrOCYN6dtmOvwz585XBnyeHk1GTEhHJtUVb355/9uZhOazyVclTt5uahzA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3694,8 +3741,9 @@ packages: sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} - sort-package-json@3.2.1: - resolution: {integrity: sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==} + sort-package-json@3.4.0: + resolution: {integrity: sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==} + engines: {node: '>=20'} hasBin: true source-map-js@1.2.1: @@ -3793,8 +3841,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.11.8: - resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} term-size@2.2.1: @@ -3825,8 +3873,8 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.0: - resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@2.0.0: @@ -3897,43 +3945,43 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tsx@4.19.4: - resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + tsx@4.20.3: + resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.5.4: - resolution: {integrity: sha512-ah6YnH2dErojhFooxEzmvsoZQTMImaruZhFPfMKPBq8sb+hALRdvBNLqfc8NWlZq576FkfRZ/MSi4SHvVFT9PQ==} + turbo-darwin-64@2.5.5: + resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.4: - resolution: {integrity: sha512-2+Nx6LAyuXw2MdXb7pxqle3MYignLvS7OwtsP9SgtSBaMlnNlxl9BovzqdYAgkUW3AsYiQMJ/wBRb7d+xemM5A==} + turbo-darwin-arm64@2.5.5: + resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.4: - resolution: {integrity: sha512-5May2kjWbc8w4XxswGAl74GZ5eM4Gr6IiroqdLhXeXyfvWEdm2mFYCSWOzz0/z5cAgqyGidF1jt1qzUR8hTmOA==} + turbo-linux-64@2.5.5: + resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.4: - resolution: {integrity: sha512-/2yqFaS3TbfxV3P5yG2JUI79P7OUQKOUvAnx4MV9Bdz6jqHsHwc9WZPpO4QseQm+NvmgY6ICORnoVPODxGUiJg==} + turbo-linux-arm64@2.5.5: + resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.4: - resolution: {integrity: sha512-EQUO4SmaCDhO6zYohxIjJpOKRN3wlfU7jMAj3CgcyTPvQR/UFLEKAYHqJOnJtymbQmiiM/ihX6c6W6Uq0yC7mA==} + turbo-windows-64@2.5.5: + resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.4: - resolution: {integrity: sha512-oQ8RrK1VS8lrxkLriotFq+PiF7iiGgkZtfLKF4DDKsmdbPo0O9R2mQxm7jHLuXraRCuIQDWMIw6dpcr7Iykf4A==} + turbo-windows-arm64@2.5.5: + resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} cpu: [arm64] os: [win32] - turbo@2.5.4: - resolution: {integrity: sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==} + turbo@2.5.5: + resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} hasBin: true txml@5.1.1: @@ -3975,8 +4023,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.33.1: - resolution: {integrity: sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==} + typescript-eslint@8.38.0: + resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3994,8 +4042,8 @@ packages: undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} @@ -4050,8 +4098,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@3.2.3: - resolution: {integrity: sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==} + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -4103,16 +4151,56 @@ packages: yaml: optional: true - vitest@3.2.3: - resolution: {integrity: sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==} + vite@7.0.6: + resolution: {integrity: sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.3 - '@vitest/ui': 3.2.3 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -4227,8 +4315,8 @@ packages: yup@1.6.1: resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==} - zod@3.25.56: - resolution: {integrity: sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==} + zod@4.0.10: + resolution: {integrity: sha512-3vB+UU3/VmLL2lvwcY/4RV2i9z/YU0DTV/tDuYjrwmx5WeJ7hwy+rGEEx8glHp6Yxw7ibRbKSaIFBgReRPe5KA==} snapshots: @@ -4238,8 +4326,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 '@assemblyscript/loader@0.10.1': {} @@ -4256,20 +4344,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.5': {} + '@babel/compat-data@7.28.0': {} - '@babel/core@7.27.4': + '@babel/core@7.28.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 + '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helpers': 7.28.2 + '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -4286,35 +4374,37 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/generator@7.27.5': + '@babel/generator@7.28.0': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.27.5 + '@babel/compat-data': 7.28.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 + browserslist: 4.25.1 lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-globals@7.28.0': {} + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -4329,10 +4419,10 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.2': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/types': 7.28.2 '@babel/parser@7.27.2': dependencies: @@ -4342,14 +4432,18 @@ snapshots: dependencies: '@babel/types': 7.27.6 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.4)': + '@babel/parser@7.28.0': dependencies: - '@babel/core': 7.27.4 + '@babel/types': 7.28.2 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/runtime@7.27.1': {} @@ -4372,15 +4466,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.27.4': + '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/types': 7.28.2 debug: 4.4.1 - globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4394,6 +4488,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bundled-es-modules/cookie@2.0.1': dependencies: cookie: 0.7.2 @@ -4423,7 +4522,7 @@ snapshots: resolve-from: 5.0.0 semver: 7.7.2 - '@changesets/assemble-release-plan@6.0.8': + '@changesets/assemble-release-plan@6.0.9': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 @@ -4444,15 +4543,15 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.29.4': + '@changesets/cli@2.29.5': dependencies: '@changesets/apply-release-plan': 7.0.12 - '@changesets/assemble-release-plan': 6.0.8 + '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 '@changesets/config': 3.1.1 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.12 + '@changesets/get-release-plan': 4.0.13 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 @@ -4503,9 +4602,9 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.12': + '@changesets/get-release-plan@4.0.13': dependencies: - '@changesets/assemble-release-plan': 6.0.8 + '@changesets/assemble-release-plan': 6.0.9 '@changesets/config': 3.1.1 '@changesets/pre': 2.0.2 '@changesets/read': 0.6.5 @@ -4718,14 +4817,14 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.4.2))': dependencies: - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.0': + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.1 @@ -4733,9 +4832,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.2': {} + '@eslint/config-helpers@0.3.0': {} - '@eslint/core@0.14.0': + '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -4753,25 +4852,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.28.0': {} + '@eslint/js@9.32.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.1': + '@eslint/plugin-kit@0.3.4': dependencies: - '@eslint/core': 0.14.0 + '@eslint/core': 0.15.1 levn: 0.4.1 - '@figma/plugin-typings@1.113.0': {} + '@figma/plugin-typings@1.116.0': {} - '@hono/node-server@1.14.4(hono@4.7.11)': + '@hono/node-server@1.17.1(hono@4.8.9)': dependencies: - hono: 4.7.11 + hono: 4.8.9 - '@hono/zod-validator@0.7.0(hono@4.7.11)(zod@3.25.56)': + '@hono/zod-validator@0.7.2(hono@4.8.9)(zod@4.0.10)': dependencies: - hono: 4.7.11 - zod: 3.25.56 + hono: 4.8.9 + zod: 4.0.10 '@humanfs/core@0.19.1': {} @@ -4786,28 +4885,28 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.5.3)': + '@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2)': dependencies: '@babel/generator': 7.27.1 '@babel/parser': 7.27.2 '@babel/traverse': 7.27.1 '@babel/types': 7.27.1 - prettier: 3.5.3 + prettier: 3.6.2 semver: 7.7.2 transitivePeerDependencies: - supports-color - '@inquirer/confirm@5.1.12(@types/node@22.15.30)': + '@inquirer/confirm@5.1.12(@types/node@24.1.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.30) - '@inquirer/type': 3.0.7(@types/node@22.15.30) + '@inquirer/core': 10.1.13(@types/node@24.1.0) + '@inquirer/type': 3.0.7(@types/node@24.1.0) optionalDependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 - '@inquirer/core@10.1.13(@types/node@22.15.30)': + '@inquirer/core@10.1.13(@types/node@24.1.0)': dependencies: '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.15.30) + '@inquirer/type': 3.0.7(@types/node@24.1.0) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -4815,13 +4914,18 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@inquirer/figures@1.0.12': {} - '@inquirer/type@3.0.7(@types/node@22.15.30)': + '@inquirer/type@3.0.7(@types/node@24.1.0)': optionalDependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 + + '@jridgewell/gen-mapping@0.3.12': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/gen-mapping@0.3.8': dependencies: @@ -4835,15 +4939,22 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.29': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@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 '@lastolivegames/becsy@0.15.5': {} @@ -4872,7 +4983,7 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@next/eslint-plugin-next@15.3.3': + '@next/eslint-plugin-next@15.4.4': dependencies: fast-glob: 3.3.1 @@ -4897,7 +5008,7 @@ snapshots: '@open-draft/until@2.1.0': {} - '@pkgr/core@0.2.5': {} + '@pkgr/core@0.2.9': {} '@preact/signals-core@1.9.0': {} @@ -4910,7 +5021,7 @@ snapshots: '@redocly/config@0.22.2': {} - '@redocly/openapi-core@1.34.3(supports-color@10.0.0)': + '@redocly/openapi-core@1.34.5(supports-color@10.0.0)': dependencies: '@redocly/ajv': 8.11.2 '@redocly/config': 0.22.2 @@ -4924,11 +5035,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@rolldown/pluginutils@1.0.0-beta.9': {} + '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rollup/plugin-commonjs@28.0.3(rollup@4.42.0)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.45.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.42.0) + '@rollup/pluginutils': 5.1.4(rollup@4.45.3) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -4936,74 +5047,74 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.42.0 + rollup: 4.45.3 - '@rollup/pluginutils@5.1.4(rollup@4.42.0)': + '@rollup/pluginutils@5.1.4(rollup@4.45.3)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.42.0 + rollup: 4.45.3 - '@rollup/rollup-android-arm-eabi@4.42.0': + '@rollup/rollup-android-arm-eabi@4.45.3': optional: true - '@rollup/rollup-android-arm64@4.42.0': + '@rollup/rollup-android-arm64@4.45.3': optional: true - '@rollup/rollup-darwin-arm64@4.42.0': + '@rollup/rollup-darwin-arm64@4.45.3': optional: true - '@rollup/rollup-darwin-x64@4.42.0': + '@rollup/rollup-darwin-x64@4.45.3': optional: true - '@rollup/rollup-freebsd-arm64@4.42.0': + '@rollup/rollup-freebsd-arm64@4.45.3': optional: true - '@rollup/rollup-freebsd-x64@4.42.0': + '@rollup/rollup-freebsd-x64@4.45.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.42.0': + '@rollup/rollup-linux-arm-gnueabihf@4.45.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.42.0': + '@rollup/rollup-linux-arm-musleabihf@4.45.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.42.0': + '@rollup/rollup-linux-arm64-gnu@4.45.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.42.0': + '@rollup/rollup-linux-arm64-musl@4.45.3': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.42.0': + '@rollup/rollup-linux-loongarch64-gnu@4.45.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': + '@rollup/rollup-linux-ppc64-gnu@4.45.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.42.0': + '@rollup/rollup-linux-riscv64-gnu@4.45.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.42.0': + '@rollup/rollup-linux-riscv64-musl@4.45.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.42.0': + '@rollup/rollup-linux-s390x-gnu@4.45.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.42.0': + '@rollup/rollup-linux-x64-gnu@4.45.3': optional: true - '@rollup/rollup-linux-x64-musl@4.42.0': + '@rollup/rollup-linux-x64-musl@4.45.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.42.0': + '@rollup/rollup-win32-arm64-msvc@4.45.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.42.0': + '@rollup/rollup-win32-ia32-msvc@4.45.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.42.0': + '@rollup/rollup-win32-x64-msvc@4.45.3': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -5064,7 +5175,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@types/chai@5.2.2': dependencies: @@ -5072,19 +5183,17 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@types/cookie@0.6.0': {} '@types/deep-eql@4.0.2': {} - '@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': 22.15.30 + '@types/node': 24.1.0 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -5092,7 +5201,7 @@ snapshots: '@types/express@5.0.3': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 5.0.6 + '@types/express-serve-static-core': 5.0.7 '@types/serve-static': 1.15.8 '@types/http-errors@2.0.5': {} @@ -5103,40 +5212,40 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@22.15.30': + '@types/node@24.1.0': dependencies: - undici-types: 6.21.0 + undici-types: 7.8.0 '@types/qs@6.9.18': {} '@types/range-parser@1.2.7': {} - '@types/react-dom@19.1.6(@types/react@19.1.6)': + '@types/react-dom@19.1.6(@types/react@19.1.8)': dependencies: - '@types/react': 19.1.6 + '@types/react': 19.1.8 - '@types/react@19.1.6': + '@types/react@19.1.8': dependencies: csstype: 3.1.3 '@types/sax@1.2.7': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.15.30 + '@types/node': 24.1.0 '@types/send': 0.17.5 '@types/statuses@2.0.5': {} @@ -5147,17 +5256,17 @@ snapshots: '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 - '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.1 - eslint: 9.28.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/type-utils': 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.38.0 + eslint: 9.32.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -5166,55 +5275,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.1 + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.38.0 debug: 4.4.1 - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.33.1(typescript@5.8.3)': + '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) - '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.33.1': + '@typescript-eslint/scope-manager@8.38.0': dependencies: - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/visitor-keys': 8.33.1 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 - '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.33.1': {} + '@typescript-eslint/types@8.38.0': {} - '@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.33.1(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/visitor-keys': 8.33.1 + '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -5225,75 +5335,75 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - eslint: 9.28.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + eslint: 9.32.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.33.1': + '@typescript-eslint/visitor-keys@8.38.0': dependencies: - '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/types': 8.38.0 eslint-visitor-keys: 4.2.1 - '@vitejs/plugin-react@4.5.1(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4))': + '@vitejs/plugin-react@4.7.0(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3))': dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.4) - '@rolldown/pluginutils': 1.0.0-beta.9 + '@babel/core': 7.28.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) + '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) transitivePeerDependencies: - supports-color - '@vitest/expect@3.2.3': + '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.2 - '@vitest/spy': 3.2.3 - '@vitest/utils': 3.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.3(msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4))': + '@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3))': dependencies: - '@vitest/spy': 3.2.3 + '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.10.2(@types/node@22.15.30)(typescript@5.8.3) - vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + msw: 2.10.4(@types/node@24.1.0)(typescript@5.8.3) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) - '@vitest/pretty-format@3.2.3': + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.2.3': + '@vitest/runner@3.2.4': dependencies: - '@vitest/utils': 3.2.3 + '@vitest/utils': 3.2.4 pathe: 2.0.3 strip-literal: 3.0.0 - '@vitest/snapshot@3.2.3': + '@vitest/snapshot@3.2.4': dependencies: - '@vitest/pretty-format': 3.2.3 + '@vitest/pretty-format': 3.2.4 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.2.3': + '@vitest/spy@3.2.4': dependencies: tinyspy: 4.0.3 - '@vitest/utils@3.2.3': + '@vitest/utils@3.2.4': dependencies: - '@vitest/pretty-format': 3.2.3 - loupe: 3.1.3 + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.0 tinyrainbow: 2.0.0 accepts@2.0.0: @@ -5311,7 +5421,7 @@ snapshots: acorn@8.15.0: {} - agent-base@7.1.3: {} + agent-base@7.1.4: {} ajv@6.12.6: dependencies: @@ -5436,12 +5546,12 @@ snapshots: transitivePeerDependencies: - supports-color - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -5449,12 +5559,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.0: + browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001721 - electron-to-chromium: 1.5.165 + caniuse-lite: 1.0.30001727 + electron-to-chromium: 1.5.191 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) + update-browserslist-db: 1.1.3(browserslist@4.25.1) bundle-name@4.1.0: dependencies: @@ -5489,7 +5599,7 @@ snapshots: dependencies: piscina: 3.2.0 - caniuse-lite@1.0.30001721: {} + caniuse-lite@1.0.30001727: {} chai@5.2.0: dependencies: @@ -5576,9 +5686,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-declaration-sorter@7.2.0(postcss@8.5.4): + css-declaration-sorter@7.2.0(postcss@8.5.6): dependencies: - postcss: 8.5.4 + postcss: 8.5.6 csstype@3.1.3: {} @@ -5669,7 +5779,7 @@ snapshots: dotenv@16.0.3: {} - dotenv@16.5.0: {} + dotenv@17.2.1: {} dotenv@8.6.0: {} @@ -5681,9 +5791,9 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.165: {} + electron-to-chromium@1.5.191: {} - elics@2.3.0: + elics@3.0.0: dependencies: '@preact/signals-core': 1.9.0 @@ -5870,21 +5980,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.5(eslint@9.28.0(jiti@2.4.2)): + eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) eslint-plugin-only-warn@1.1.0: {} - eslint-plugin-react-hooks@5.2.0(eslint@9.28.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) - eslint-plugin-react-refresh@0.4.20(eslint@9.28.0(jiti@2.4.2)): + eslint-plugin-react-refresh@0.4.20(eslint@9.32.0(jiti@2.4.2)): dependencies: - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) - eslint-plugin-react@7.37.5(eslint@9.28.0(jiti@2.4.2)): + eslint-plugin-react@7.37.5(eslint@9.32.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -5892,7 +6002,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.28.0(jiti@2.4.2) + eslint: 9.32.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -5906,11 +6016,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.5.4(eslint@9.28.0(jiti@2.4.2))(turbo@2.5.4): + eslint-plugin-turbo@2.5.5(eslint@9.32.0(jiti@2.4.2))(turbo@2.5.5): dependencies: dotenv: 16.0.3 - eslint: 9.28.0(jiti@2.4.2) - turbo: 2.5.4 + eslint: 9.32.0(jiti@2.4.2) + turbo: 2.5.5 eslint-scope@8.4.0: dependencies: @@ -5921,16 +6031,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.28.0(jiti@2.4.2): + eslint@9.32.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.0 - '@eslint/config-helpers': 0.2.2 - '@eslint/core': 0.14.0 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.0 + '@eslint/core': 0.15.1 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.28.0 - '@eslint/plugin-kit': 0.3.1 + '@eslint/js': 9.32.0 + '@eslint/plugin-kit': 0.3.4 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -6102,6 +6212,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.6(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -6295,7 +6409,7 @@ snapshots: headers-polyfill@4.0.3: {} - hono@4.7.11: {} + hono@4.8.9: {} http-errors@2.0.0: dependencies: @@ -6307,7 +6421,7 @@ snapshots: https-proxy-agent@7.0.6(supports-color@10.0.0): dependencies: - agent-base: 7.1.3 + agent-base: 7.1.4 debug: 4.4.1(supports-color@10.0.0) transitivePeerDependencies: - supports-color @@ -6439,7 +6553,7 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 is-regex@1.2.1: dependencies: @@ -6582,6 +6696,8 @@ snapshots: loupe@3.1.3: {} + loupe@3.2.0: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -6613,15 +6729,15 @@ snapshots: minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} @@ -6629,12 +6745,12 @@ snapshots: ms@2.1.3: {} - msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3): + msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.12(@types/node@22.15.30) + '@inquirer/confirm': 5.1.12(@types/node@24.1.0) '@mswjs/interceptors': 0.39.2 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -6771,7 +6887,7 @@ snapshots: openapi-typescript@7.8.0(typescript@5.8.3): dependencies: - '@redocly/openapi-core': 1.34.3(supports-color@10.0.0) + '@redocly/openapi-core': 1.34.5(supports-color@10.0.0) ansi-colors: 4.1.3 change-case: 5.4.4 parse-json: 8.3.0 @@ -6872,6 +6988,8 @@ snapshots: picomatch@4.0.2: {} + picomatch@4.0.3: {} + pify@4.0.1: {} piscina@3.2.0: @@ -6886,13 +7004,13 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-less@6.0.0(postcss@8.5.4): + postcss-less@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.4 + postcss: 8.5.6 - postcss-scss@4.0.9(postcss@8.5.4): + postcss-scss@4.0.9(postcss@8.5.6): dependencies: - postcss: 8.5.4 + postcss: 8.5.6 postcss@8.5.4: dependencies: @@ -6900,34 +7018,40 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} - prettier-plugin-css-order@2.1.2(postcss@8.5.4)(prettier@3.5.3): + prettier-plugin-css-order@2.1.2(postcss@8.5.6)(prettier@3.6.2): dependencies: - css-declaration-sorter: 7.2.0(postcss@8.5.4) - postcss-less: 6.0.0(postcss@8.5.4) - postcss-scss: 4.0.9(postcss@8.5.4) - prettier: 3.5.3 + css-declaration-sorter: 7.2.0(postcss@8.5.6) + postcss-less: 6.0.0(postcss@8.5.6) + postcss-scss: 4.0.9(postcss@8.5.6) + prettier: 3.6.2 transitivePeerDependencies: - postcss - prettier-plugin-packagejson@2.5.15(prettier@3.5.3): + prettier-plugin-packagejson@2.5.19(prettier@3.6.2): dependencies: - sort-package-json: 3.2.1 - synckit: 0.11.8 + sort-package-json: 3.4.0 + synckit: 0.11.11 optionalDependencies: - prettier: 3.5.3 + prettier: 3.6.2 - prettier-plugin-tailwindcss@0.6.12(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.5.3))(prettier-plugin-css-order@2.1.2(postcss@8.5.4)(prettier@3.5.3))(prettier@3.5.3): + prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.5.1(prettier@3.6.2))(prettier-plugin-css-order@2.1.2(postcss@8.5.6)(prettier@3.6.2))(prettier@3.6.2): dependencies: - prettier: 3.5.3 + prettier: 3.6.2 optionalDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.4.2(prettier@3.5.3) - prettier-plugin-css-order: 2.1.2(postcss@8.5.4)(prettier@3.5.3) + '@ianvs/prettier-plugin-sort-imports': 4.5.1(prettier@3.6.2) + prettier-plugin-css-order: 2.1.2(postcss@8.5.6)(prettier@3.6.2) prettier@2.8.8: {} - prettier@3.5.3: {} + prettier@3.6.2: {} pretty-ms@9.2.0: dependencies: @@ -7058,53 +7182,53 @@ snapshots: reusify@1.1.0: {} - rollup-plugin-dts@6.2.1(rollup@4.42.0)(typescript@5.8.3): + rollup-plugin-dts@6.2.1(rollup@4.45.3)(typescript@5.8.3): dependencies: magic-string: 0.30.17 - rollup: 4.42.0 + rollup: 4.45.3 typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-esbuild@6.2.1(esbuild@0.25.5)(rollup@4.42.0): + rollup-plugin-esbuild@6.2.1(esbuild@0.25.5)(rollup@4.45.3): dependencies: debug: 4.4.0 es-module-lexer: 1.6.0 esbuild: 0.25.5 get-tsconfig: 4.10.0 - rollup: 4.42.0 + rollup: 4.45.3 unplugin-utils: 0.2.4 transitivePeerDependencies: - supports-color - rollup-plugin-node-externals@8.0.0(rollup@4.42.0): + rollup-plugin-node-externals@8.0.1(rollup@4.45.3): dependencies: - rollup: 4.42.0 + rollup: 4.45.3 - rollup@4.42.0: + rollup@4.45.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.42.0 - '@rollup/rollup-android-arm64': 4.42.0 - '@rollup/rollup-darwin-arm64': 4.42.0 - '@rollup/rollup-darwin-x64': 4.42.0 - '@rollup/rollup-freebsd-arm64': 4.42.0 - '@rollup/rollup-freebsd-x64': 4.42.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.42.0 - '@rollup/rollup-linux-arm-musleabihf': 4.42.0 - '@rollup/rollup-linux-arm64-gnu': 4.42.0 - '@rollup/rollup-linux-arm64-musl': 4.42.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.42.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0 - '@rollup/rollup-linux-riscv64-gnu': 4.42.0 - '@rollup/rollup-linux-riscv64-musl': 4.42.0 - '@rollup/rollup-linux-s390x-gnu': 4.42.0 - '@rollup/rollup-linux-x64-gnu': 4.42.0 - '@rollup/rollup-linux-x64-musl': 4.42.0 - '@rollup/rollup-win32-arm64-msvc': 4.42.0 - '@rollup/rollup-win32-ia32-msvc': 4.42.0 - '@rollup/rollup-win32-x64-msvc': 4.42.0 + '@rollup/rollup-android-arm-eabi': 4.45.3 + '@rollup/rollup-android-arm64': 4.45.3 + '@rollup/rollup-darwin-arm64': 4.45.3 + '@rollup/rollup-darwin-x64': 4.45.3 + '@rollup/rollup-freebsd-arm64': 4.45.3 + '@rollup/rollup-freebsd-x64': 4.45.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.45.3 + '@rollup/rollup-linux-arm-musleabihf': 4.45.3 + '@rollup/rollup-linux-arm64-gnu': 4.45.3 + '@rollup/rollup-linux-arm64-musl': 4.45.3 + '@rollup/rollup-linux-loongarch64-gnu': 4.45.3 + '@rollup/rollup-linux-ppc64-gnu': 4.45.3 + '@rollup/rollup-linux-riscv64-gnu': 4.45.3 + '@rollup/rollup-linux-riscv64-musl': 4.45.3 + '@rollup/rollup-linux-s390x-gnu': 4.45.3 + '@rollup/rollup-linux-x64-gnu': 4.45.3 + '@rollup/rollup-linux-x64-musl': 4.45.3 + '@rollup/rollup-win32-arm64-msvc': 4.45.3 + '@rollup/rollup-win32-ia32-msvc': 4.45.3 + '@rollup/rollup-win32-x64-msvc': 4.45.3 fsevents: 2.3.3 router@2.2.0: @@ -7283,7 +7407,7 @@ snapshots: sort-object-keys@1.1.3: {} - sort-package-json@3.2.1: + sort-package-json@3.4.0: dependencies: detect-indent: 7.0.1 detect-newline: 4.0.1 @@ -7396,9 +7520,9 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.11.8: + synckit@0.11.11: dependencies: - '@pkgr/core': 0.2.5 + '@pkgr/core': 0.2.9 term-size@2.2.1: {} @@ -7425,7 +7549,7 @@ snapshots: fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@1.1.0: {} + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} @@ -7458,14 +7582,14 @@ snapshots: dependencies: typescript: 5.8.3 - ts-node@10.9.2(@types/node@22.15.30)(typescript@5.8.3): + ts-node@10.9.2(@types/node@24.1.0)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.30 + '@types/node': 24.1.0 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -7486,39 +7610,39 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsx@4.19.4: + tsx@4.20.3: dependencies: esbuild: 0.25.5 get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.5.4: + turbo-darwin-64@2.5.5: optional: true - turbo-darwin-arm64@2.5.4: + turbo-darwin-arm64@2.5.5: optional: true - turbo-linux-64@2.5.4: + turbo-linux-64@2.5.5: optional: true - turbo-linux-arm64@2.5.4: + turbo-linux-arm64@2.5.5: optional: true - turbo-windows-64@2.5.4: + turbo-windows-64@2.5.5: optional: true - turbo-windows-arm64@2.5.4: + turbo-windows-arm64@2.5.5: optional: true - turbo@2.5.4: + turbo@2.5.5: optionalDependencies: - turbo-darwin-64: 2.5.4 - turbo-darwin-arm64: 2.5.4 - turbo-linux-64: 2.5.4 - turbo-linux-arm64: 2.5.4 - turbo-windows-64: 2.5.4 - turbo-windows-arm64: 2.5.4 + turbo-darwin-64: 2.5.5 + turbo-darwin-arm64: 2.5.5 + turbo-linux-64: 2.5.5 + turbo-linux-arm64: 2.5.5 + turbo-windows-64: 2.5.5 + turbo-windows-arm64: 2.5.5 txml@5.1.1: dependencies: @@ -7573,12 +7697,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.28.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.32.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -7594,7 +7719,7 @@ snapshots: undefsafe@2.0.5: {} - undici-types@6.21.0: {} + undici-types@7.8.0: {} unicorn-magic@0.3.0: {} @@ -7609,9 +7734,9 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.2 - update-browserslist-db@1.1.3(browserslist@4.25.0): + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -7636,13 +7761,13 @@ snapshots: vary@1.1.2: {} - vite-node@3.2.3(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4): + vite-node@3.2.4(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) transitivePeerDependencies: - '@types/node' - jiti @@ -7657,41 +7782,55 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.8.3) optionalDependencies: - vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + vite: 7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) transitivePeerDependencies: - supports-color - typescript - vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4): + vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3): dependencies: esbuild: 0.25.5 fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.4 - rollup: 4.42.0 + rollup: 4.45.3 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 24.1.0 + fsevents: 2.3.3 + jiti: 2.4.2 + tsx: 4.20.3 + + vite@7.0.6(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.6(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.45.3 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 fsevents: 2.3.3 jiti: 2.4.2 - tsx: 4.19.4 + tsx: 4.20.3 - vitest@3.2.3(@types/node@22.15.30)(jiti@2.4.2)(msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3))(tsx@4.19.4): + vitest@3.2.4(@types/node@24.1.0)(jiti@2.4.2)(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(tsx@4.20.3): dependencies: '@types/chai': 5.2.2 - '@vitest/expect': 3.2.3 - '@vitest/mocker': 3.2.3(msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3))(vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4)) - '@vitest/pretty-format': 3.2.3 - '@vitest/runner': 3.2.3 - '@vitest/snapshot': 3.2.3 - '@vitest/spy': 3.2.3 - '@vitest/utils': 3.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.1.0)(typescript@5.8.3))(vite@6.3.5(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 chai: 5.2.0 debug: 4.4.1 expect-type: 1.2.1 @@ -7702,13 +7841,13 @@ snapshots: tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.14 - tinypool: 1.1.0 + tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) - vite-node: 3.2.3(@types/node@22.15.30)(jiti@2.4.2)(tsx@4.19.4) + vite: 6.3.5(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) + vite-node: 3.2.4(@types/node@24.1.0)(jiti@2.4.2)(tsx@4.20.3) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.15.30 + '@types/node': 24.1.0 transitivePeerDependencies: - jiti - less @@ -7840,4 +7979,4 @@ snapshots: toposort: 2.0.2 type-fest: 2.19.0 - zod@3.25.56: {} + zod@4.0.10: {} From 24b85c106194740420416c084ddcbbf85585c9e3 Mon Sep 17 00:00:00 2001 From: Benno <57860196+bennoinbeta@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:28:30 +0200 Subject: [PATCH 2/5] #113 fixed typos --- .../openapi-ts-router/express/petstore/src/router.ts | 2 +- .../src/features/with-express/with-express.ts | 9 ++++----- .../src/features/with-hono/with-hono.ts | 3 +-- packages/openapi-ts-router/src/index.ts | 2 +- .../src/{ => lib}/exceptions/AppError.ts | 0 .../src/{ => lib}/exceptions/ValidationError.ts | 0 .../openapi-ts-router/src/{ => lib}/exceptions/index.ts | 0 .../src/{helper => lib}/format-path.test.ts | 0 .../openapi-ts-router/src/{helper => lib}/format-path.ts | 0 packages/openapi-ts-router/src/{helper => lib}/index.ts | 1 + .../src/{helper => lib}/parse-params.test.ts | 0 .../src/{helper => lib}/parse-params.ts | 0 packages/openapi-ts-router/src/types/features/express.ts | 5 +++-- 13 files changed, 11 insertions(+), 11 deletions(-) rename packages/openapi-ts-router/src/{ => lib}/exceptions/AppError.ts (100%) rename packages/openapi-ts-router/src/{ => lib}/exceptions/ValidationError.ts (100%) rename packages/openapi-ts-router/src/{ => lib}/exceptions/index.ts (100%) rename packages/openapi-ts-router/src/{helper => lib}/format-path.test.ts (100%) rename packages/openapi-ts-router/src/{helper => lib}/format-path.ts (100%) rename packages/openapi-ts-router/src/{helper => lib}/index.ts (67%) rename packages/openapi-ts-router/src/{helper => lib}/parse-params.test.ts (100%) rename packages/openapi-ts-router/src/{helper => lib}/parse-params.ts (100%) diff --git a/examples/openapi-ts-router/express/petstore/src/router.ts b/examples/openapi-ts-router/express/petstore/src/router.ts index 3a017782..69854c22 100644 --- a/examples/openapi-ts-router/express/petstore/src/router.ts +++ b/examples/openapi-ts-router/express/petstore/src/router.ts @@ -21,7 +21,7 @@ openApiRouter.get('/pet/{petId}', { } ], handler: (req, res) => { - const { petId } = req.parsed.params; + const { petId } = req.valid.params; console.log('handler', petId, typeof petId); res.send({ diff --git a/packages/openapi-ts-router/src/features/with-express/with-express.ts b/packages/openapi-ts-router/src/features/with-express/with-express.ts index 030c1806..b6291187 100644 --- a/packages/openapi-ts-router/src/features/with-express/with-express.ts +++ b/packages/openapi-ts-router/src/features/with-express/with-express.ts @@ -2,8 +2,7 @@ import { TEnforceFeatureConstraint, TFeatureDefinition } from '@blgc/types/featu import { type TOperationPathParams, type TOperationQueryParams } from '@blgc/types/openapi'; import type * as express from 'express'; import { createValidationContext, type TValidationError } from 'validation-adapter'; -import { ValidationError } from '../../exceptions'; -import { formatPath, parseParams } from '../../helper'; +import { formatPath, parseParams, ValidationError } from '../../lib'; import { TOpenApiExpressFeature, TOpenApiExpressParsedData, @@ -93,7 +92,7 @@ function parseParamsMiddleware( return (req, _res, next) => { if (shouldParseParams) { - (req as TOpenApiExpressRequest).parsed = { + (req as TOpenApiExpressRequest).valid = { query: parseQueryParams( req.query as TParams, parseQueryParamsBlacklist @@ -128,7 +127,7 @@ function validationMiddleware( if (pathValidator != null) { const pathParams = - (req as TOpenApiExpressRequest).parsed?.params ?? req.params; + (req as TOpenApiExpressRequest).valid?.params ?? req.params; const pathValidationContext = createValidationContext>( pathParams as TOperationPathParams ); @@ -141,7 +140,7 @@ function validationMiddleware( if (queryValidator != null) { const queryParams = - (req as TOpenApiExpressRequest).parsed?.query ?? req.query; + (req as TOpenApiExpressRequest).valid?.query ?? req.query; const queryValidationContext = createValidationContext< TOperationQueryParams >(queryParams as TOperationQueryParams); diff --git a/packages/openapi-ts-router/src/features/with-hono/with-hono.ts b/packages/openapi-ts-router/src/features/with-hono/with-hono.ts index b14cc582..e8249076 100644 --- a/packages/openapi-ts-router/src/features/with-hono/with-hono.ts +++ b/packages/openapi-ts-router/src/features/with-hono/with-hono.ts @@ -3,8 +3,7 @@ import { type TOperationPathParams, type TOperationQueryParams } from '@blgc/typ import { type Hono } from 'hono'; import type * as hono from 'hono/types'; import { createValidationContext, type TValidationError } from 'validation-adapter'; -import { ValidationError } from '../../exceptions'; -import { formatPath, parseParams } from '../../helper'; +import { formatPath, parseParams, ValidationError } from '../../lib'; import { TOpenApiHonoFeature, type TOpenApiHonoParamsParserOptions, diff --git a/packages/openapi-ts-router/src/index.ts b/packages/openapi-ts-router/src/index.ts index 377cb76c..87e513bb 100644 --- a/packages/openapi-ts-router/src/index.ts +++ b/packages/openapi-ts-router/src/index.ts @@ -1,4 +1,4 @@ export * from './create-openapi-router'; -export * from './exceptions'; export * from './features'; +export * from './lib'; export * from './types'; diff --git a/packages/openapi-ts-router/src/exceptions/AppError.ts b/packages/openapi-ts-router/src/lib/exceptions/AppError.ts similarity index 100% rename from packages/openapi-ts-router/src/exceptions/AppError.ts rename to packages/openapi-ts-router/src/lib/exceptions/AppError.ts diff --git a/packages/openapi-ts-router/src/exceptions/ValidationError.ts b/packages/openapi-ts-router/src/lib/exceptions/ValidationError.ts similarity index 100% rename from packages/openapi-ts-router/src/exceptions/ValidationError.ts rename to packages/openapi-ts-router/src/lib/exceptions/ValidationError.ts diff --git a/packages/openapi-ts-router/src/exceptions/index.ts b/packages/openapi-ts-router/src/lib/exceptions/index.ts similarity index 100% rename from packages/openapi-ts-router/src/exceptions/index.ts rename to packages/openapi-ts-router/src/lib/exceptions/index.ts diff --git a/packages/openapi-ts-router/src/helper/format-path.test.ts b/packages/openapi-ts-router/src/lib/format-path.test.ts similarity index 100% rename from packages/openapi-ts-router/src/helper/format-path.test.ts rename to packages/openapi-ts-router/src/lib/format-path.test.ts diff --git a/packages/openapi-ts-router/src/helper/format-path.ts b/packages/openapi-ts-router/src/lib/format-path.ts similarity index 100% rename from packages/openapi-ts-router/src/helper/format-path.ts rename to packages/openapi-ts-router/src/lib/format-path.ts diff --git a/packages/openapi-ts-router/src/helper/index.ts b/packages/openapi-ts-router/src/lib/index.ts similarity index 67% rename from packages/openapi-ts-router/src/helper/index.ts rename to packages/openapi-ts-router/src/lib/index.ts index f3ab45ca..2f35da31 100644 --- a/packages/openapi-ts-router/src/helper/index.ts +++ b/packages/openapi-ts-router/src/lib/index.ts @@ -1,2 +1,3 @@ +export * from './exceptions'; export * from './format-path'; export * from './parse-params'; diff --git a/packages/openapi-ts-router/src/helper/parse-params.test.ts b/packages/openapi-ts-router/src/lib/parse-params.test.ts similarity index 100% rename from packages/openapi-ts-router/src/helper/parse-params.test.ts rename to packages/openapi-ts-router/src/lib/parse-params.test.ts diff --git a/packages/openapi-ts-router/src/helper/parse-params.ts b/packages/openapi-ts-router/src/lib/parse-params.ts similarity index 100% rename from packages/openapi-ts-router/src/helper/parse-params.ts rename to packages/openapi-ts-router/src/lib/parse-params.ts diff --git a/packages/openapi-ts-router/src/types/features/express.ts b/packages/openapi-ts-router/src/types/features/express.ts index 44ce73d9..79056614 100644 --- a/packages/openapi-ts-router/src/types/features/express.ts +++ b/packages/openapi-ts-router/src/types/features/express.ts @@ -79,8 +79,9 @@ export type TOpenApiExpressRequest = express.Request< TOpenApiExpressRequestBody, // ReqBody TOpenApiExpressQueryParams // ReqQuery > & { - // Express 5: req.query/req.params are read-only -> parsed params stored here - parsed: TOpenApiExpressParsedData; + // Express 5: req.query/req.params are read-only -> parsed & validated params stored here + // https://expressjs.com/en/api.html#req.params + valid: TOpenApiExpressParsedData; }; export type TOpenApiExpressQueryParams = From 4eb3c35fd5051818bf8017a76638d32554f35fc4 Mon Sep 17 00:00:00 2001 From: Benno <57860196+bennoinbeta@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:34:47 +0200 Subject: [PATCH 3/5] #113 fixed typos --- examples/openapi-ts-router/hono/petstore/src/router.ts | 2 +- packages/openapi-ts-router/src/types/features/express.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/openapi-ts-router/hono/petstore/src/router.ts b/examples/openapi-ts-router/hono/petstore/src/router.ts index 6c18076a..be454150 100644 --- a/examples/openapi-ts-router/hono/petstore/src/router.ts +++ b/examples/openapi-ts-router/hono/petstore/src/router.ts @@ -22,7 +22,7 @@ openApiRouter.get('/pet/{petId}', { ], handler: (c) => { const { petId } = c.req.valid('param'); - console.log('handler'); + console.log('handler', petId, typeof petId); return c.json({ name: 'Falko', diff --git a/packages/openapi-ts-router/src/types/features/express.ts b/packages/openapi-ts-router/src/types/features/express.ts index 79056614..864b02af 100644 --- a/packages/openapi-ts-router/src/types/features/express.ts +++ b/packages/openapi-ts-router/src/types/features/express.ts @@ -74,10 +74,10 @@ export type TOpenApiExpressRequestHandler = ( ) => Promise | void; export type TOpenApiExpressRequest = express.Request< - TOpenApiExpressPathParams, // Params + core.ParamsDictionary, // Params TOperationSuccessResponseContent, // ResBody TOpenApiExpressRequestBody, // ReqBody - TOpenApiExpressQueryParams // ReqQuery + core.Query // ReqQuery > & { // Express 5: req.query/req.params are read-only -> parsed & validated params stored here // https://expressjs.com/en/api.html#req.params From 1f917333414bc3075607724f532469315a2ce388 Mon Sep 17 00:00:00 2001 From: Benno <57860196+bennoinbeta@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:38:23 +0200 Subject: [PATCH 4/5] #113 updated README --- packages/openapi-ts-router/README.md | 2 +- packages/openapi-ts-router/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/openapi-ts-router/README.md b/packages/openapi-ts-router/README.md index 60015b7b..05b6dff1 100644 --- a/packages/openapi-ts-router/README.md +++ b/packages/openapi-ts-router/README.md @@ -63,7 +63,7 @@ openApiRouter.get('/pet/{petId}', { }) ), handler: (req, res) => { - const { petId } = req.params; // Access validated params + const { petId } = req.valid.params; // Access parsed & validated params res.send({ name: 'Falko', photoUrls: [] }); } }); diff --git a/packages/openapi-ts-router/package.json b/packages/openapi-ts-router/package.json index 3294764e..d12ee2de 100644 --- a/packages/openapi-ts-router/package.json +++ b/packages/openapi-ts-router/package.json @@ -1,6 +1,6 @@ { "name": "openapi-ts-router", - "version": "0.2.15", + "version": "0.3.1", "private": false, "description": "Thin wrapper around the router of web frameworks like Express and Hono, offering OpenAPI typesafety and seamless integration with validation libraries such as Valibot and Zod", "keywords": [], From 2f239ffd735d4f652da83afbab2bf31751642299 Mon Sep 17 00:00:00 2001 From: Benno <57860196+bennoinbeta@users.noreply.github.com> Date: Tue, 29 Jul 2025 07:42:33 +0200 Subject: [PATCH 5/5] #113 fixed typos --- packages/openapi-ts-router/package.json | 2 +- .../src/features/with-express/with-express.ts | 6 ++---- .../src/types/features/express.ts | 14 ++------------ 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/packages/openapi-ts-router/package.json b/packages/openapi-ts-router/package.json index d12ee2de..3b9ede15 100644 --- a/packages/openapi-ts-router/package.json +++ b/packages/openapi-ts-router/package.json @@ -1,6 +1,6 @@ { "name": "openapi-ts-router", - "version": "0.3.1", + "version": "0.3.2", "private": false, "description": "Thin wrapper around the router of web frameworks like Express and Hono, offering OpenAPI typesafety and seamless integration with validation libraries such as Valibot and Zod", "keywords": [], diff --git a/packages/openapi-ts-router/src/features/with-express/with-express.ts b/packages/openapi-ts-router/src/features/with-express/with-express.ts index b6291187..1e36c614 100644 --- a/packages/openapi-ts-router/src/features/with-express/with-express.ts +++ b/packages/openapi-ts-router/src/features/with-express/with-express.ts @@ -6,8 +6,6 @@ import { formatPath, parseParams, ValidationError } from '../../lib'; import { TOpenApiExpressFeature, TOpenApiExpressParsedData, - TOpenApiExpressPathParams, - TOpenApiExpressQueryParams, TParams, type TOpenApiExpressParamsParserOptions, type TOpenApiExpressRequest, @@ -96,11 +94,11 @@ function parseParamsMiddleware( query: parseQueryParams( req.query as TParams, parseQueryParamsBlacklist - ) as TOpenApiExpressQueryParams, + ) as TOperationQueryParams, params: parsePathParams( req.params as TParams, parsePathParamsBlacklist - ) as TOpenApiExpressPathParams + ) as TOperationPathParams } as TOpenApiExpressParsedData; } next(); diff --git a/packages/openapi-ts-router/src/types/features/express.ts b/packages/openapi-ts-router/src/types/features/express.ts index 864b02af..9b5714de 100644 --- a/packages/openapi-ts-router/src/types/features/express.ts +++ b/packages/openapi-ts-router/src/types/features/express.ts @@ -84,16 +84,6 @@ export type TOpenApiExpressRequest = express.Request< valid: TOpenApiExpressParsedData; }; -export type TOpenApiExpressQueryParams = - TOperationQueryParams extends never - ? core.Query - : TOperationQueryParams; - -export type TOpenApiExpressPathParams = - TOperationPathParams extends never - ? core.ParamsDictionary - : TOperationPathParams; - export type TOpenApiExpressRequestBody = TRequestBody; export type TOpenApiExpressResponse = express.Response< @@ -107,12 +97,12 @@ export type TOpenApiExpressParsedData = TOpenApiExpressParsedQue export type TOpenApiExpressParsedQuery = TOperationQueryParams extends never ? { query?: never } - : { query: TOpenApiExpressQueryParams }; + : { query: TOperationQueryParams }; export type TOpenApiExpressParsedParams = TOperationPathParams extends never ? { params?: never } - : { params: TOpenApiExpressPathParams }; + : { params: TOperationPathParams }; // ============================================================================= // Router Options