From 934f3f84269f481f6d9ce7efe2ad36b17ebd842e Mon Sep 17 00:00:00 2001 From: Bernhard Frauendienst Date: Sat, 4 Oct 2025 13:03:43 +0200 Subject: [PATCH] feat: make command-zod and event-type-zod compatible with zod v3/v4 --- packages/command-zod/package.json | 4 ++-- packages/command-zod/src/command.ts | 12 +++++++++--- packages/event-type-zod/package.json | 4 ++-- packages/event-type-zod/src/eventType.ts | 12 +++++++++--- yarn.lock | 14 +++++++------- 5 files changed, 29 insertions(+), 17 deletions(-) diff --git a/packages/command-zod/package.json b/packages/command-zod/package.json index 6b44d289..a5f3002c 100644 --- a/packages/command-zod/package.json +++ b/packages/command-zod/package.json @@ -55,7 +55,7 @@ "tsc-alias": "^1.8.7", "typescript": "^4.6.3", "vitest": "^0.26.2", - "zod": "^3.15.1" + "zod": "^4.1.11" }, "maintainers": [ "Thomas Aribart", @@ -75,6 +75,6 @@ }, "peerDependencies": { "@castore/core": "*", - "zod": "^3.0.0" + "zod": "^3.25.0 || ^4.0.0" } } diff --git a/packages/command-zod/src/command.ts b/packages/command-zod/src/command.ts index df5b305a..83f943f7 100644 --- a/packages/command-zod/src/command.ts +++ b/packages/command-zod/src/command.ts @@ -1,4 +1,5 @@ -import { z, ZodType } from 'zod'; +import type * as z3 from 'zod/v3'; +import type * as z4 from 'zod/v4/core'; import { Command, @@ -7,6 +8,11 @@ import { OnEventAlreadyExistsCallback, } from '@castore/core'; +type ZodType = z3.ZodTypeAny | z4.$ZodType; +type inferZodType = T extends z3.ZodTypeAny + ? z3.infer + : z4.infer; + export class ZodCommand< COMMAND_ID extends string = string, EVENT_STORES extends EventStore[] = EventStore[], @@ -18,13 +24,13 @@ export class ZodCommand< INPUT = $Contravariant< INPUT_SCHEMA, ZodType, - INPUT_SCHEMA extends ZodType ? z.infer : never + INPUT_SCHEMA extends ZodType ? inferZodType : never >, OUTPUT_SCHEMA extends ZodType | undefined = ZodType | undefined, OUTPUT = $Contravariant< OUTPUT_SCHEMA, ZodType, - OUTPUT_SCHEMA extends ZodType ? z.infer : never + OUTPUT_SCHEMA extends ZodType ? inferZodType : never >, // eslint-disable-next-line @typescript-eslint/no-explicit-any CONTEXT extends any[] = any[], diff --git a/packages/event-type-zod/package.json b/packages/event-type-zod/package.json index 27fcbe1d..e79256c5 100644 --- a/packages/event-type-zod/package.json +++ b/packages/event-type-zod/package.json @@ -55,7 +55,7 @@ "tsc-alias": "^1.8.7", "typescript": "^4.6.3", "vitest": "^0.26.2", - "zod": "^3.15.1" + "zod": "^4.1.11" }, "maintainers": [ "Thomas Aribart", @@ -75,6 +75,6 @@ }, "peerDependencies": { "@castore/core": "*", - "zod": "^3.0.0" + "zod": "^3.25.0 || ^4.0.0" } } diff --git a/packages/event-type-zod/src/eventType.ts b/packages/event-type-zod/src/eventType.ts index 7cb808a4..82c6269b 100644 --- a/packages/event-type-zod/src/eventType.ts +++ b/packages/event-type-zod/src/eventType.ts @@ -1,7 +1,13 @@ -import type { z, ZodType } from 'zod'; +import type * as z3 from 'zod/v3'; +import type * as z4 from 'zod/v4/core'; import { EventType } from '@castore/core'; +type ZodType = z3.ZodTypeAny | z4.$ZodType; +type inferZodType = T extends z3.ZodTypeAny + ? z3.infer + : z4.infer; + export class ZodEventType< TYPE extends string = string, PAYLOAD_SCHEMA extends ZodType | undefined = ZodType | undefined, @@ -10,7 +16,7 @@ export class ZodEventType< ? unknown : never : PAYLOAD_SCHEMA extends ZodType - ? z.infer + ? inferZodType : never, METADATA_SCHEMA extends ZodType | undefined = ZodType | undefined, METADATA = ZodType extends METADATA_SCHEMA @@ -18,7 +24,7 @@ export class ZodEventType< ? unknown : never : METADATA_SCHEMA extends ZodType - ? z.infer + ? inferZodType : never, > extends EventType { payloadSchema?: PAYLOAD_SCHEMA; diff --git a/yarn.lock b/yarn.lock index 6ee7cbbc..aef93c25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6068,7 +6068,7 @@ __metadata: tsc-alias: ^1.8.7 typescript: ^4.6.3 vitest: ^0.26.2 - zod: ^3.15.1 + zod: ^4.1.11 peerDependencies: "@castore/core": "*" zod: ^3.0.0 @@ -6418,10 +6418,10 @@ __metadata: tsc-alias: ^1.8.7 typescript: ^4.6.3 vitest: ^0.26.2 - zod: ^3.15.1 + zod: ^4.1.11 peerDependencies: "@castore/core": "*" - zod: ^3.0.0 + zod: ^3.25.0 || ^4.0.0 languageName: unknown linkType: soft @@ -28266,10 +28266,10 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.15.1": - version: 3.15.1 - resolution: "zod@npm:3.15.1" - checksum: d1ceec91b1b19fe26233c2e6be7625c6d5937c6c667ce23ff7d59948eb1239a24819227c615096a5e6a6377a17fc2df3720e8d613d2176dc482c0a1e8d02e1e2 +"zod@npm:^4.1.11": + version: 4.1.11 + resolution: "zod@npm:4.1.11" + checksum: 022d59f85ebe054835fbcdc96a93c01479a64321104f846cb5644812c91e00d17ae3479f823956ec9b04e4351dd32841e1f12c567e81bc43f6e21ef5cc02ce3c languageName: node linkType: hard