From 6bb1a271d3d1ece8b6b1b1fe03275804ce36baff Mon Sep 17 00:00:00 2001 From: kass-kass <15650245+kass-kass@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:45:27 +0100 Subject: [PATCH 1/4] Add valibot json schema package --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 02dba617..bc43924f 100644 --- a/package.json +++ b/package.json @@ -185,6 +185,7 @@ "zod": "^4.1.11" }, "dependencies": { + "@valibot/to-json-schema": "^1.4.0", "devalue": "^5.3.2", "memoize-weak": "^1.0.2", "ts-deepmerge": "^7.0.3" From 7d5e8b8b8fc57a64eb4675146b7a9475346e2d1e Mon Sep 17 00:00:00 2001 From: kass-kass <15650245+kass-kass@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:46:04 +0100 Subject: [PATCH 2/4] Remove deprecated package --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index bc43924f..133ec705 100644 --- a/package.json +++ b/package.json @@ -170,7 +170,6 @@ "optionalDependencies": { "@exodus/schemasafe": "^1.3.0", "@finom/zod-to-json-schema": "^3.24.11", - "@gcornut/valibot-json-schema": "^0.42.0", "@typeschema/class-validator": "^0.3.0", "@vinejs/vine": "^3.0.1", "arktype": "^2.1.22", From 0383bfc8bc0a467f66476d6a461455485e507dca Mon Sep 17 00:00:00 2001 From: kass-kass <15650245+kass-kass@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:46:11 +0100 Subject: [PATCH 3/4] Run pnpm i --- pnpm-lock.yaml | 85 ++++++++------------------------------------------ 1 file changed, 13 insertions(+), 72 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74227c32..58afabb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@valibot/to-json-schema': + specifier: ^1.4.0 + version: 1.4.0(valibot@1.1.0(typescript@5.9.3)) devalue: specifier: ^5.3.2 version: 5.3.2 @@ -133,9 +136,6 @@ importers: '@finom/zod-to-json-schema': specifier: ^3.24.11 version: 3.24.11(zod@4.1.11) - '@gcornut/valibot-json-schema': - specifier: ^0.42.0 - version: 0.42.0(esbuild@0.25.10)(typescript@5.9.3) '@typeschema/class-validator': specifier: ^0.3.0 version: 0.3.0(@types/json-schema@7.0.15)(class-validator@0.14.2) @@ -397,13 +397,10 @@ packages: '@finom/zod-to-json-schema@3.24.11': resolution: {integrity: sha512-fL656yBPiWebtfGItvtXLWrFNGlF1NcDFS0WdMQXMs9LluVg0CfT5E2oXYp0pidl0vVG53XkW55ysijNkU5/hA==} + deprecated: 'Use https://www.npmjs.com/package/zod-v3-to-json-schema instead. See issue comment for details: https://github.com/StefanTerdell/zod-to-json-schema/issues/178#issuecomment-3533122539' peerDependencies: zod: ^4.0.14 - '@gcornut/valibot-json-schema@0.42.0': - resolution: {integrity: sha512-4Et4AN6wmqeA0PfU5Clkv/IS27wiefsWf6TemAZrb75uzkClYEFavim7SboeKwbll9Nbsn2Iv0LT/HS5H7orZg==} - hasBin: true - '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -824,6 +821,11 @@ packages: peerDependencies: valibot: ^1.0.0 + '@valibot/to-json-schema@1.4.0': + resolution: {integrity: sha512-xziHfrrB6al8uoUI876eAYU5x+nZFYifCssYnxS/P7JYe9LjzeKWnqwb8Yno7ulL84Gp0ZNj2GUR+3GXtU8CZQ==} + peerDependencies: + valibot: ^1.2.0 + '@vinejs/compiler@3.0.0': resolution: {integrity: sha512-v9Lsv59nR56+bmy2p0+czjZxsLHwaibJ+SV5iK9JJfehlJMa501jUJQqqz4X/OqKXrxtE3uTQmSqjUqzF3B2mw==} engines: {node: '>=18.0.0'} @@ -909,9 +911,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1016,12 +1015,6 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - esbuild-runner@2.2.2: - resolution: {integrity: sha512-fRFVXcmYVmSmtYm2mL8RlUASt2TDkGh3uRcvHFOKNr/T58VrfVeKD9uT9nlgxk96u0LS0ehS/GY7Da/bXWKkhw==} - hasBin: true - peerDependencies: - esbuild: '*' - esbuild@0.25.10: resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} engines: {node: '>=18'} @@ -1507,13 +1500,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -1636,9 +1622,6 @@ packages: resolution: {integrity: sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA==} engines: {node: '>=14.13.1'} - tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1678,14 +1661,6 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true - valibot@0.42.1: - resolution: {integrity: sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - valibot@1.1.0: resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==} peerDependencies: @@ -1966,17 +1941,6 @@ snapshots: zod: 4.1.11 optional: true - '@gcornut/valibot-json-schema@0.42.0(esbuild@0.25.10)(typescript@5.9.3)': - dependencies: - valibot: 0.42.1(typescript@5.9.3) - optionalDependencies: - '@types/json-schema': 7.0.15 - esbuild-runner: 2.2.2(esbuild@0.25.10) - transitivePeerDependencies: - - esbuild - - typescript - optional: true - '@hapi/hoek@9.3.0': optional: true @@ -2369,6 +2333,10 @@ snapshots: dependencies: valibot: 1.1.0(typescript@5.9.3) + '@valibot/to-json-schema@1.4.0(valibot@1.1.0(typescript@5.9.3))': + dependencies: + valibot: 1.1.0(typescript@5.9.3) + '@vinejs/compiler@3.0.0': optional: true @@ -2472,9 +2440,6 @@ snapshots: dependencies: fill-range: 7.1.1 - buffer-from@1.1.2: - optional: true - cac@6.7.14: {} callsites@3.1.0: {} @@ -2561,13 +2526,6 @@ snapshots: es-module-lexer@1.7.0: {} - esbuild-runner@2.2.2(esbuild@0.25.10): - dependencies: - esbuild: 0.25.10 - source-map-support: 0.5.21 - tslib: 2.4.0 - optional: true - esbuild@0.25.10: optionalDependencies: '@esbuild/aix-ppc64': 0.25.10 @@ -3061,15 +3019,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - optional: true - - source-map@0.6.1: - optional: true - stackback@0.0.2: {} std-env@3.9.0: {} @@ -3191,9 +3140,6 @@ snapshots: ts-deepmerge@7.0.3: {} - tslib@2.4.0: - optional: true - tslib@2.8.1: {} type-check@0.4.0: @@ -3229,11 +3175,6 @@ snapshots: uuid@11.1.0: {} - valibot@0.42.1(typescript@5.9.3): - optionalDependencies: - typescript: 5.9.3 - optional: true - valibot@1.1.0(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 From 0a9cd648ddf3c9727f197a80baae189ba72e5a39 Mon Sep 17 00:00:00 2001 From: kass-kass <15650245+kass-kass@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:46:25 +0100 Subject: [PATCH 4/4] Attempt in-place replacement of package --- src/lib/adapters/valibot.ts | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/src/lib/adapters/valibot.ts b/src/lib/adapters/valibot.ts index eaa2c3df..c6e1bb5b 100644 --- a/src/lib/adapters/valibot.ts +++ b/src/lib/adapters/valibot.ts @@ -18,29 +18,16 @@ import { } from 'valibot'; import { memoize } from '$lib/memoize.js'; import { - type ToJSONSchemaOptions, - toJSONSchema as valibotToJSON -} from '@gcornut/valibot-json-schema'; + toJsonSchema as valibotToJSON, + type ConversionConfig as ToJSONSchemaOptions +} from '@valibot/to-json-schema'; import type { JSONSchema } from '../jsonSchema/index.js'; type SupportedSchemas = GenericSchema | GenericSchemaAsync; -const defaultOptions = { - strictObjectTypes: true, - dateStrategy: 'integer' as const, - bigintStrategy: 'integer' as const, - ignoreUnknownValidation: true, - customSchemaConversion: { - custom: () => ({}), - instance: () => ({}), - file: () => ({}), - blob: () => ({}) - } -} satisfies ToJSONSchemaOptions; - /* @__NO_SIDE_EFFECTS__ */ -export const valibotToJSONSchema = (options: ToJSONSchemaOptions) => { - return valibotToJSON({ ...defaultOptions, ...options }) as JSONSchema; +export const valibotToJSONSchema = (options: ToJSONSchemaOptions & { schema: Parameters[0] }) => { + return valibotToJSON(options.schema, options) as JSONSchema; }; async function _validate(