From ab7d301efbff46270b5a9f4955f0f00977b6e676 Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Thu, 11 Jun 2026 16:57:00 +0200 Subject: [PATCH 1/7] fix: resolve consumer message schemas to the schema output type Consumers receive messages that have already been parsed by the consumer schema, so ConsumerMessageSchema and AllConsumerMessageSchemas should resolve to z.output rather than z.input. For schemas without transforms both types are identical, so this changes nothing. They diverge once a schema uses transforms or preprocess (e.g. a field that tolerantly drops unknown enum values): there z.input degrades to unknown and breaks typing in message handlers, while the handler actually receives the parsed output. Publisher-side types intentionally stay z.input, since publishers pass the raw payload that the schema parses on emit. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/schemas/lib/utils/messageTypeUtils.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/schemas/lib/utils/messageTypeUtils.ts b/packages/schemas/lib/utils/messageTypeUtils.ts index 68dee11d..42efd1c6 100644 --- a/packages/schemas/lib/utils/messageTypeUtils.ts +++ b/packages/schemas/lib/utils/messageTypeUtils.ts @@ -3,9 +3,10 @@ import type { z } from 'zod/v4' import type { CommonEventDefinition } from '../events/eventTypes.ts' /** - * Resolves schema of a consumer message for a given event definition + * Resolves schema of a consumer message for a given event definition. + * Consumers receive messages already parsed by the consumer schema, hence the output type. */ -export type ConsumerMessageSchema = z.input< +export type ConsumerMessageSchema = z.output< MessageDefinitionType['consumerSchema'] > @@ -23,7 +24,8 @@ export type AllPublisherMessageSchemas /** - * Resolves schema of all possible consumer messages for a given list of event definitions + * Resolves schema of all possible consumer messages for a given list of event definitions. + * Consumers receive messages already parsed by the consumer schema, hence the output type. */ export type AllConsumerMessageSchemas = - z.input + z.output From 47ede480d1350dfd43d99e5d4316de694122e7ac Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Thu, 11 Jun 2026 17:12:53 +0200 Subject: [PATCH 2/7] Adding type check tests to message type utils --- .../lib/utils/messageTypeUtils.types.spec.ts | 78 +++++++++++++++++++ packages/schemas/vitest.config.ts | 4 + 2 files changed, 82 insertions(+) create mode 100644 packages/schemas/lib/utils/messageTypeUtils.types.spec.ts diff --git a/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts b/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts new file mode 100644 index 00000000..54a1cfea --- /dev/null +++ b/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts @@ -0,0 +1,78 @@ +import { expectTypeOf } from 'vitest' +import { z } from 'zod/v4' +import type { CommonEventDefinition } from '../events/eventTypes.ts' +import { enrichMessageSchemaWithBase } from '../messages/baseMessageSchemas.ts' +import type { + AllConsumerMessageSchemas, + ConsumerMessageSchema, + PublisherMessageSchema, +} from './messageTypeUtils.ts' + +const SUPPORTED_MODES = ['status', 'value'] as const + +const myEvents = { + plainEvent: { + ...enrichMessageSchemaWithBase('entity.created', z.object({ name: z.string() })), + }, + transformingEvent: { + ...enrichMessageSchemaWithBase( + 'entity.updated', + z.object({ + // Forward-compatible field: unknown values are dropped instead of failing validation + mode: z.preprocess( + (value) => + typeof value === 'string' && (SUPPORTED_MODES as readonly string[]).includes(value) + ? value + : undefined, + z.enum(SUPPORTED_MODES).optional(), + ), + }), + ), + }, +} as const satisfies Record + +describe('messageTypeUtils', () => { + describe('ConsumerMessageSchema', () => { + it('resolves to the parsed message type for transform-free schemas', () => { + type ConsumerMessage = ConsumerMessageSchema + + expectTypeOf().toEqualTypeOf<'entity.created'>() + expectTypeOf().toEqualTypeOf() + }) + + it('resolves transformed fields to their output type, not their input type', () => { + type ConsumerMessage = ConsumerMessageSchema + + // Consumers receive messages already parsed by the consumer schema, so the + // field is the preprocess output, not unknown (the input of any preprocess) + expectTypeOf().toEqualTypeOf< + 'status' | 'value' | undefined + >() + }) + }) + + describe('PublisherMessageSchema', () => { + it('resolves to the raw (pre-parse) message type', () => { + type PublisherMessage = PublisherMessageSchema + + expectTypeOf().toEqualTypeOf() + }) + + it('keeps the input type for transformed fields', () => { + type PublisherMessage = PublisherMessageSchema + + // Publishers pass the raw payload that the schema parses on emit + expectTypeOf().toBeUnknown() + }) + }) + + describe('AllConsumerMessageSchemas', () => { + it('resolves to the union of parsed message types', () => { + type SupportedMessages = AllConsumerMessageSchemas< + [typeof myEvents.plainEvent, typeof myEvents.transformingEvent] + > + + expectTypeOf().toEqualTypeOf<'entity.created' | 'entity.updated'>() + }) + }) +}) diff --git a/packages/schemas/vitest.config.ts b/packages/schemas/vitest.config.ts index af9944ef..182fdaab 100644 --- a/packages/schemas/vitest.config.ts +++ b/packages/schemas/vitest.config.ts @@ -7,6 +7,10 @@ export default defineConfig({ watch: false, mockReset: true, pool: 'threads', + typecheck: { + enabled: true, + include: ['**/*.types.spec.ts'], + }, coverage: { provider: 'v8', include: ['lib/**/*.ts'], From e62ea8313b73ce5b4ddcdcf44ac083db50daf481 Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Thu, 11 Jun 2026 17:21:00 +0200 Subject: [PATCH 3/7] Fixing one more typing issue --- packages/schemas/lib/events/eventTypes.ts | 3 ++- .../lib/utils/messageTypeUtils.types.spec.ts | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/schemas/lib/events/eventTypes.ts b/packages/schemas/lib/events/eventTypes.ts index 53856663..fd533644 100644 --- a/packages/schemas/lib/events/eventTypes.ts +++ b/packages/schemas/lib/events/eventTypes.ts @@ -32,7 +32,8 @@ export type CommonEventDefinition = { tags?: readonly string[] // Free-form tags for the event } -export type CommonEventDefinitionConsumerSchemaType = z.input< +// Consumers receive messages already parsed by the consumer schema, hence the output type. +export type CommonEventDefinitionConsumerSchemaType = z.output< T['consumerSchema'] > diff --git a/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts b/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts index 54a1cfea..66e31a1e 100644 --- a/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts +++ b/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts @@ -1,6 +1,9 @@ import { expectTypeOf } from 'vitest' import { z } from 'zod/v4' -import type { CommonEventDefinition } from '../events/eventTypes.ts' +import type { + CommonEventDefinition, + CommonEventDefinitionConsumerSchemaType, +} from '../events/eventTypes.ts' import { enrichMessageSchemaWithBase } from '../messages/baseMessageSchemas.ts' import type { AllConsumerMessageSchemas, @@ -66,6 +69,19 @@ describe('messageTypeUtils', () => { }) }) + describe('CommonEventDefinitionConsumerSchemaType', () => { + it('resolves transformed fields to their output type, like ConsumerMessageSchema', () => { + type ConsumerMessage = CommonEventDefinitionConsumerSchemaType< + typeof myEvents.transformingEvent + > + + // DomainEventEmitter hands handlers the event parsed by the schema + expectTypeOf().toEqualTypeOf< + 'status' | 'value' | undefined + >() + }) + }) + describe('AllConsumerMessageSchemas', () => { it('resolves to the union of parsed message types', () => { type SupportedMessages = AllConsumerMessageSchemas< From d097e5e3ed54cb59d7c36e04ec30276c4cfc74f9 Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Thu, 11 Jun 2026 17:31:01 +0200 Subject: [PATCH 4/7] Adding type tests --- .../lib/events/eventTypes.types.spec.ts | 75 +++++++++++++++++++ .../lib/utils/messageTypeUtils.types.spec.ts | 31 +------- 2 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 packages/schemas/lib/events/eventTypes.types.spec.ts diff --git a/packages/schemas/lib/events/eventTypes.types.spec.ts b/packages/schemas/lib/events/eventTypes.types.spec.ts new file mode 100644 index 00000000..df68e7f4 --- /dev/null +++ b/packages/schemas/lib/events/eventTypes.types.spec.ts @@ -0,0 +1,75 @@ +import { expectTypeOf } from 'vitest' +import { z } from 'zod/v4' +import { enrichMessageSchemaWithBase } from '../messages/baseMessageSchemas.ts' +import type { + AnyEventHandler, + CommonEventDefinition, + CommonEventDefinitionConsumerSchemaType, + CommonEventDefinitionPublisherSchemaType, + SingleEventHandler, +} from './eventTypes.ts' + +const myEvents = { + plainEvent: { + ...enrichMessageSchemaWithBase('entity.created', z.object({ name: z.string() })), + }, + transformingEvent: { + ...enrichMessageSchemaWithBase( + 'entity.updated', + z.object({ + // Forward-compatible field: unknown values are dropped instead of failing validation + mode: z.preprocess( + (value) => (value === 'live' ? value : undefined), + z.literal('live').optional(), + ), + }), + ), + }, +} as const satisfies Record + +describe('eventTypes', () => { + describe('CommonEventDefinitionConsumerSchemaType', () => { + it('resolves transformed fields to their output type, not their input type', () => { + type ConsumerMessage = CommonEventDefinitionConsumerSchemaType< + typeof myEvents.transformingEvent + > + + // DomainEventEmitter hands handlers the event parsed by the schema + expectTypeOf().toEqualTypeOf<'live' | undefined>() + }) + }) + + describe('CommonEventDefinitionPublisherSchemaType', () => { + it('keeps the input type for transformed fields', () => { + type PublisherMessage = CommonEventDefinitionPublisherSchemaType< + typeof myEvents.transformingEvent + > + + // Publishers pass the raw payload that the schema parses on emit + expectTypeOf().toBeUnknown() + }) + }) + + describe('SingleEventHandler', () => { + it('receives the parsed event', () => { + type Handler = SingleEventHandler<[typeof myEvents.transformingEvent], 'entity.updated'> + type HandledEvent = Parameters[0] + + expectTypeOf().toEqualTypeOf<'live' | undefined>() + }) + }) + + describe('AnyEventHandler', () => { + it('receives the parsed event union', () => { + type Handler = AnyEventHandler< + [typeof myEvents.plainEvent, typeof myEvents.transformingEvent] + > + type HandledEvent = Parameters[0] + + expectTypeOf().toEqualTypeOf<'entity.created' | 'entity.updated'>() + expectTypeOf< + Extract['payload']['mode'] + >().toEqualTypeOf<'live' | undefined>() + }) + }) +}) diff --git a/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts b/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts index 66e31a1e..9f567d1b 100644 --- a/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts +++ b/packages/schemas/lib/utils/messageTypeUtils.types.spec.ts @@ -1,9 +1,6 @@ import { expectTypeOf } from 'vitest' import { z } from 'zod/v4' -import type { - CommonEventDefinition, - CommonEventDefinitionConsumerSchemaType, -} from '../events/eventTypes.ts' +import type { CommonEventDefinition } from '../events/eventTypes.ts' import { enrichMessageSchemaWithBase } from '../messages/baseMessageSchemas.ts' import type { AllConsumerMessageSchemas, @@ -11,8 +8,6 @@ import type { PublisherMessageSchema, } from './messageTypeUtils.ts' -const SUPPORTED_MODES = ['status', 'value'] as const - const myEvents = { plainEvent: { ...enrichMessageSchemaWithBase('entity.created', z.object({ name: z.string() })), @@ -23,11 +18,8 @@ const myEvents = { z.object({ // Forward-compatible field: unknown values are dropped instead of failing validation mode: z.preprocess( - (value) => - typeof value === 'string' && (SUPPORTED_MODES as readonly string[]).includes(value) - ? value - : undefined, - z.enum(SUPPORTED_MODES).optional(), + (value) => (value === 'live' ? value : undefined), + z.literal('live').optional(), ), }), ), @@ -48,9 +40,7 @@ describe('messageTypeUtils', () => { // Consumers receive messages already parsed by the consumer schema, so the // field is the preprocess output, not unknown (the input of any preprocess) - expectTypeOf().toEqualTypeOf< - 'status' | 'value' | undefined - >() + expectTypeOf().toEqualTypeOf<'live' | undefined>() }) }) @@ -69,19 +59,6 @@ describe('messageTypeUtils', () => { }) }) - describe('CommonEventDefinitionConsumerSchemaType', () => { - it('resolves transformed fields to their output type, like ConsumerMessageSchema', () => { - type ConsumerMessage = CommonEventDefinitionConsumerSchemaType< - typeof myEvents.transformingEvent - > - - // DomainEventEmitter hands handlers the event parsed by the schema - expectTypeOf().toEqualTypeOf< - 'status' | 'value' | undefined - >() - }) - }) - describe('AllConsumerMessageSchemas', () => { it('resolves to the union of parsed message types', () => { type SupportedMessages = AllConsumerMessageSchemas< From 8c361b172ad009c667607bb9e190f3dbf0ceb3d6 Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Thu, 11 Jun 2026 17:48:15 +0200 Subject: [PATCH 5/7] Covering schema changes with tests on core --- .../events/DomainEventEmitter.types.spec.ts | 50 +++++++++++++++++++ .../queues/HandlerContainer.types.spec.ts | 21 ++++++++ pnpm-lock.yaml | 38 ++++++-------- pnpm-workspace.yaml | 6 +++ 4 files changed, 93 insertions(+), 22 deletions(-) create mode 100644 packages/core/lib/events/DomainEventEmitter.types.spec.ts diff --git a/packages/core/lib/events/DomainEventEmitter.types.spec.ts b/packages/core/lib/events/DomainEventEmitter.types.spec.ts new file mode 100644 index 00000000..c62f7147 --- /dev/null +++ b/packages/core/lib/events/DomainEventEmitter.types.spec.ts @@ -0,0 +1,50 @@ +import { + type CommonEventDefinition, + enrichMessageSchemaWithBase, +} from '@message-queue-toolkit/schemas' +import { describe, expectTypeOf, it } from 'vitest' +import { z } from 'zod/v4' + +import type { DomainEventEmitter } from './DomainEventEmitter.ts' + +const myEvents = { + transformingEvent: { + ...enrichMessageSchemaWithBase( + 'entity.updated', + z.object({ + mode: z.preprocess( + (value) => (value === 'live' ? value : undefined), + z.literal('live').optional(), + ), + }), + ), + }, +} as const satisfies Record + +type Emitter = DomainEventEmitter<[typeof myEvents.transformingEvent]> + +describe('DomainEventEmitter types', () => { + it('on() handlers receive the parsed event, with transformed fields as their output type', () => { + type OnHandler = Parameters[1] + type HandledEvent = Parameters[0] + + expectTypeOf().toEqualTypeOf<'live' | undefined>() + }) + + it('onAny() handlers receive the parsed event, with transformed fields as their output type', () => { + type AnyHandler = Parameters[0] + type HandledEvent = Parameters[0] + + expectTypeOf().toEqualTypeOf<'live' | undefined>() + }) + + it('emit() takes the raw event as input and resolves to the parsed event', () => { + type EmitInput = Parameters[1] + type EmittedEvent = Awaited> + + // The caller passes the raw payload, which emit() parses with the schema + expectTypeOf().toBeUnknown() + // What comes back is the validated event returned by the parse + expectTypeOf().toEqualTypeOf<'live' | undefined>() + }) +}) diff --git a/packages/core/test/queues/HandlerContainer.types.spec.ts b/packages/core/test/queues/HandlerContainer.types.spec.ts index fddaa10e..8111e758 100644 --- a/packages/core/test/queues/HandlerContainer.types.spec.ts +++ b/packages/core/test/queues/HandlerContainer.types.spec.ts @@ -72,6 +72,27 @@ describe('HandlerContainer Types', () => { }) }) + it('should infer the schema output type for transforming schemas', () => { + const JOB_MESSAGE_SCHEMA = z.object({ + type: z.literal('job.scheduled'), + // Forward-compatible field: unknown values are dropped instead of failing validation + mode: z.preprocess( + (value) => (value === 'fast' ? value : undefined), + z.literal('fast').optional(), + ), + }) + type JobMessage = z.output + + const builder = new MessageHandlerConfigBuilder() + + // Consumers (e.g. SNS/SQS) parse messages with the schema before invoking the + // handler, so the handler message type is the schema output, not its raw input + builder.addConfig(JOB_MESSAGE_SCHEMA, (message, _context) => { + expectTypeOf(message.mode).toEqualTypeOf<'fast' | undefined>() + return Promise.resolve({ result: 'success' as const }) + }) + }) + it('should accept messageType in options', () => { const builder = new MessageHandlerConfigBuilder() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3a9c5e7..c1aa3c23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@message-queue-toolkit/schemas': workspace:* + importers: .: @@ -18,8 +21,8 @@ importers: specifier: ^14.7.4 version: 14.8.1(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: '>=7.0.0' - version: 7.1.0(zod@4.4.3) + specifier: workspace:* + version: link:../schemas devDependencies: '@biomejs/biome': specifier: ^2.4.16 @@ -73,8 +76,8 @@ importers: specifier: ^4.5.1 version: 4.10.0 '@message-queue-toolkit/schemas': - specifier: ^7.0.0 - version: 7.1.0(zod@4.4.3) + specifier: workspace:* + version: link:../schemas dot-prop: specifier: ^10.1.0 version: 10.1.0 @@ -159,8 +162,8 @@ importers: specifier: '*' version: 2.0.2(@message-queue-toolkit/core@packages+core)(ioredis@5.11.0)(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: '*' - version: 7.1.0(zod@4.4.3) + specifier: workspace:* + version: link:../schemas '@types/node': specifier: ^25.0.2 version: 25.8.0 @@ -247,8 +250,8 @@ importers: specifier: '>=23.0.0' version: 25.5.0(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: '>=7.0.0' - version: 7.1.0(zod@4.4.3) + specifier: workspace:* + version: link:../schemas '@types/node': specifier: ^25.0.2 version: 25.8.0 @@ -336,8 +339,8 @@ importers: specifier: '*' version: 25.5.0(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: '*' - version: 7.1.0(zod@4.4.3) + specifier: workspace:* + version: link:../schemas '@types/node': specifier: ^25.0.2 version: 25.8.0 @@ -473,8 +476,8 @@ importers: specifier: ^14.4.2 version: 14.8.1(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: '>=7.0.0' - version: 7.1.0(zod@4.4.3) + specifier: workspace:* + version: link:../schemas sqs-consumer: specifier: ^15.0.2 version: 15.0.2(@aws-sdk/client-sqs@3.1061.0) @@ -1216,11 +1219,6 @@ packages: '@message-queue-toolkit/core': '>=23.1.0' ioredis: ^5.3.2 - '@message-queue-toolkit/schemas@7.1.0': - resolution: {integrity: sha512-JAzSQAHouympK/cEDBxsfEuS2Ifu1pv0a/NRvhNWfFlgW0TmsWT7SkYNERA7x89OK7PGk9PyDN88cV9l0gZ22Q==} - peerDependencies: - zod: '>=3.25.76 <5.0.0' - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==} cpu: [arm64] @@ -4174,7 +4172,7 @@ snapshots: dependencies: '@lokalise/node-core': 14.8.1(zod@4.4.3) '@lokalise/universal-ts-utils': 4.10.0 - '@message-queue-toolkit/schemas': 7.1.0(zod@4.4.3) + '@message-queue-toolkit/schemas': link:packages/schemas dot-prop: 10.1.0 fast-equals: 6.0.0 json-stream-stringify: 3.1.6 @@ -4197,10 +4195,6 @@ snapshots: - supports-color - zod - '@message-queue-toolkit/schemas@7.1.0(zod@4.4.3)': - dependencies: - zod: 4.4.3 - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5918a4e3..b2334a36 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,12 @@ packages: - 'packages/*' +# Always resolve the schemas package to the local workspace copy during +# development, so every package builds and tests against unreleased changes. +# Published manifests keep their own declared version ranges. +overrides: + '@message-queue-toolkit/schemas': 'workspace:*' + # Disallow every dependency from running install/build scripts. Each entry # must be set to `false` to silently skip the script, or `true` to allow it. # pnpm 11 auto-appends new entries here whenever a dep has scripts, prompting From fbc5e16832e2264dd407cec7d7aceacea6aba74f Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Thu, 11 Jun 2026 17:58:39 +0200 Subject: [PATCH 6/7] Remove override --- pnpm-lock.yaml | 36 +++++++++++++++++++++--------------- pnpm-workspace.yaml | 6 ------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1aa3c23..71b2fa7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,9 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -overrides: - '@message-queue-toolkit/schemas': workspace:* - importers: .: @@ -21,8 +18,8 @@ importers: specifier: ^14.7.4 version: 14.8.1(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: workspace:* - version: link:../schemas + specifier: '>=7.0.0' + version: 7.1.0(zod@4.4.3) devDependencies: '@biomejs/biome': specifier: ^2.4.16 @@ -76,7 +73,7 @@ importers: specifier: ^4.5.1 version: 4.10.0 '@message-queue-toolkit/schemas': - specifier: workspace:* + specifier: workspace:^ version: link:../schemas dot-prop: specifier: ^10.1.0 @@ -162,8 +159,8 @@ importers: specifier: '*' version: 2.0.2(@message-queue-toolkit/core@packages+core)(ioredis@5.11.0)(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: workspace:* - version: link:../schemas + specifier: '*' + version: 7.1.0(zod@4.4.3) '@types/node': specifier: ^25.0.2 version: 25.8.0 @@ -250,8 +247,8 @@ importers: specifier: '>=23.0.0' version: 25.5.0(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: workspace:* - version: link:../schemas + specifier: '>=7.0.0' + version: 7.1.0(zod@4.4.3) '@types/node': specifier: ^25.0.2 version: 25.8.0 @@ -339,8 +336,8 @@ importers: specifier: '*' version: 25.5.0(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: workspace:* - version: link:../schemas + specifier: '*' + version: 7.1.0(zod@4.4.3) '@types/node': specifier: ^25.0.2 version: 25.8.0 @@ -476,8 +473,8 @@ importers: specifier: ^14.4.2 version: 14.8.1(zod@4.4.3) '@message-queue-toolkit/schemas': - specifier: workspace:* - version: link:../schemas + specifier: '>=7.0.0' + version: 7.1.0(zod@4.4.3) sqs-consumer: specifier: ^15.0.2 version: 15.0.2(@aws-sdk/client-sqs@3.1061.0) @@ -1219,6 +1216,11 @@ packages: '@message-queue-toolkit/core': '>=23.1.0' ioredis: ^5.3.2 + '@message-queue-toolkit/schemas@7.1.0': + resolution: {integrity: sha512-JAzSQAHouympK/cEDBxsfEuS2Ifu1pv0a/NRvhNWfFlgW0TmsWT7SkYNERA7x89OK7PGk9PyDN88cV9l0gZ22Q==} + peerDependencies: + zod: '>=3.25.76 <5.0.0' + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==} cpu: [arm64] @@ -4172,7 +4174,7 @@ snapshots: dependencies: '@lokalise/node-core': 14.8.1(zod@4.4.3) '@lokalise/universal-ts-utils': 4.10.0 - '@message-queue-toolkit/schemas': link:packages/schemas + '@message-queue-toolkit/schemas': 7.1.0(zod@4.4.3) dot-prop: 10.1.0 fast-equals: 6.0.0 json-stream-stringify: 3.1.6 @@ -4195,6 +4197,10 @@ snapshots: - supports-color - zod + '@message-queue-toolkit/schemas@7.1.0(zod@4.4.3)': + dependencies: + zod: 4.4.3 + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b2334a36..5918a4e3 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,12 +1,6 @@ packages: - 'packages/*' -# Always resolve the schemas package to the local workspace copy during -# development, so every package builds and tests against unreleased changes. -# Published manifests keep their own declared version ranges. -overrides: - '@message-queue-toolkit/schemas': 'workspace:*' - # Disallow every dependency from running install/build scripts. Each entry # must be set to `false` to silently skip the script, or `true` to allow it. # pnpm 11 auto-appends new entries here whenever a dep has scripts, prompting From 57d61fa79aed8eeddfe7bc7ff2ecbc4b8b4791c4 Mon Sep 17 00:00:00 2001 From: CarlosGamero Date: Fri, 12 Jun 2026 16:24:03 +0200 Subject: [PATCH 7/7] schemas version bump --- packages/core/package.json | 2 +- pnpm-lock.yaml | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index dd62f1d4..ed561e26 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,7 +27,7 @@ "dependencies": { "@lokalise/node-core": "^14.2.0", "@lokalise/universal-ts-utils": "^4.5.1", - "@message-queue-toolkit/schemas": "^7.0.0", + "@message-queue-toolkit/schemas": "^7.2.0", "dot-prop": "^10.1.0", "fast-equals": "^6.0.0", "json-stream-stringify": "^3.1.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71b2fa7a..e03d5bc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,8 +73,8 @@ importers: specifier: ^4.5.1 version: 4.10.0 '@message-queue-toolkit/schemas': - specifier: workspace:^ - version: link:../schemas + specifier: ^7.2.0 + version: 7.2.0(zod@4.4.3) dot-prop: specifier: ^10.1.0 version: 10.1.0 @@ -1221,6 +1221,11 @@ packages: peerDependencies: zod: '>=3.25.76 <5.0.0' + '@message-queue-toolkit/schemas@7.2.0': + resolution: {integrity: sha512-iuPbSeO1wm26tHPd5jIAmtllxVPRoMHHQbrqhsF5TpOfvDegXQ14lw/L5W2U7dWIYE+ErOvMWKTQAxdFZmza3A==} + peerDependencies: + zod: '>=3.25.67' + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==} cpu: [arm64] @@ -4201,6 +4206,10 @@ snapshots: dependencies: zod: 4.4.3 + '@message-queue-toolkit/schemas@7.2.0(zod@4.4.3)': + dependencies: + zod: 4.4.3 + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': optional: true