Skip to content

Commit bb2c633

Browse files
authored
Migrate to zod v4 (#298)
1 parent 2a40b9e commit bb2c633

File tree

61 files changed

+255
-271
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+255
-271
lines changed

.github/workflows/ci.common.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,6 @@ jobs:
3939

4040
- name: Docker stop
4141
run: npm run docker:stop:ci -- --filter=${{ inputs.package_name }}
42+
43+
- name: Run lint
44+
run: npm run lint

.github/workflows/linting.yml

Lines changed: 0 additions & 37 deletions
This file was deleted.

packages/amqp/lib/AbstractAmqpPublisher.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type {
1111
SyncPublisher,
1212
} from '@message-queue-toolkit/core'
1313
import { objectToBuffer } from '@message-queue-toolkit/core'
14-
import type { ZodSchema } from 'zod/v3'
14+
import type { ZodSchema } from 'zod/v4'
1515

1616
import type { AMQPDependencies } from './AbstractAmqpService.ts'
1717
import { AbstractAmqpService } from './AbstractAmqpService.ts'

packages/amqp/lib/AbstractAmqpQueuePublisher.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export abstract class AbstractAmqpQueuePublisher<
3838

3939
this.queueName = options.locatorConfig
4040
? options.locatorConfig.queueName
41-
: // biome-ignore lint/style/noNonNullAssertion: <explanation>
41+
: // biome-ignore lint/style/noNonNullAssertion: this is expected
4242
options.creationConfig!.queueName
4343
}
4444

packages/amqp/lib/AmqpQueuePublisherManager.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type {
99
} from '@message-queue-toolkit/core'
1010
import { AbstractPublisherManager } from '@message-queue-toolkit/core'
1111
import type { AmqpAwareEventDefinition } from '@message-queue-toolkit/schemas'
12-
import type z from 'zod/v3'
12+
import type z from 'zod/v4'
1313

1414
import type { AMQPPublisherOptions, AbstractAmqpPublisher } from './AbstractAmqpPublisher.ts'
1515
import type {
@@ -63,27 +63,27 @@ export type AmqpPublisherManagerOptions<
6363
}
6464
}
6565

66-
export type AmqpMessageSchemaType<T extends AmqpAwareEventDefinition> = z.infer<
66+
export type AmqpMessageSchemaType<T extends AmqpAwareEventDefinition> = z.input<
6767
T['publisherSchema']
6868
>
6969

7070
export class AmqpQueuePublisherManager<
7171
T extends AbstractAmqpQueuePublisher<
72-
z.infer<SupportedEventDefinitions[number]['publisherSchema']>
72+
z.input<SupportedEventDefinitions[number]['publisherSchema']>
7373
>,
7474
SupportedEventDefinitions extends AmqpAwareEventDefinition[],
7575
MetadataType = PublisherMessageMetadataType,
7676
> extends AbstractPublisherManager<
7777
AmqpAwareEventDefinition,
7878
NonNullable<SupportedEventDefinitions[number]['queueName']>,
79-
AbstractAmqpQueuePublisher<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>,
79+
AbstractAmqpQueuePublisher<z.input<SupportedEventDefinitions[number]['publisherSchema']>>,
8080
AMQPDependencies,
8181
AMQPQueueCreationConfig,
8282
AMQPQueueLocator,
8383
AmqpMessageSchemaType<AmqpAwareEventDefinition>,
8484
Omit<
8585
AMQPPublisherOptions<
86-
z.infer<SupportedEventDefinitions[number]['publisherSchema']>,
86+
z.input<SupportedEventDefinitions[number]['publisherSchema']>,
8787
AMQPQueueCreationConfig,
8888
AMQPQueueLocator
8989
>,
@@ -99,11 +99,11 @@ export class AmqpQueuePublisherManager<
9999
T,
100100
AmqpQueueMessageOptions,
101101
AMQPPublisherOptions<
102-
z.infer<SupportedEventDefinitions[number]['publisherSchema']>,
102+
z.input<SupportedEventDefinitions[number]['publisherSchema']>,
103103
AMQPQueueCreationConfig,
104104
AMQPQueueLocator
105105
>,
106-
z.infer<SupportedEventDefinitions[number]['publisherSchema']>,
106+
z.input<SupportedEventDefinitions[number]['publisherSchema']>,
107107
MetadataType
108108
>,
109109
) {
@@ -152,7 +152,10 @@ export class AmqpQueuePublisherManager<
152152

153153
const messageDefinition = this.resolveMessageDefinition(queue, message)
154154
const resolvedMessage = this.resolveMessage(messageDefinition, message, precedingEventMetadata)
155-
publisher.publish(resolvedMessage, messageOptions)
155+
publisher.publish(
156+
resolvedMessage as MessagePublishType<SupportedEventDefinitions[number]>,
157+
messageOptions,
158+
)
156159
return resolvedMessage
157160
}
158161

packages/amqp/lib/AmqpTopicPublisherManager.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
import { AbstractPublisherManager } from '@message-queue-toolkit/core'
2-
import type {
3-
MessagePublishType,
4-
MessageSchemaType,
5-
PublisherMessageMetadataType,
6-
} from '@message-queue-toolkit/core'
7-
import type z from 'zod/v3'
1+
import { AbstractPublisherManager, type MessageSchemaType } from '@message-queue-toolkit/core'
2+
import type { MessagePublishType, PublisherMessageMetadataType } from '@message-queue-toolkit/core'
3+
import type z from 'zod/v4'
84

95
import type { AMQPDependencies, AMQPTopicPublisherConfig } from './AbstractAmqpService.ts'
106
import type {
@@ -22,20 +18,20 @@ import { CommonAmqpTopicPublisherFactory } from './CommonAmqpPublisherFactory.ts
2218

2319
export class AmqpTopicPublisherManager<
2420
PublisherType extends AbstractAmqpTopicPublisher<
25-
z.infer<SupportedEventDefinitions[number]['publisherSchema']>
21+
z.input<SupportedEventDefinitions[number]['publisherSchema']>
2622
>,
2723
SupportedEventDefinitions extends AmqpAwareEventDefinition[],
2824
MetadataType = PublisherMessageMetadataType,
2925
> extends AbstractPublisherManager<
3026
AmqpAwareEventDefinition,
3127
NonNullable<SupportedEventDefinitions[number]['exchange']>,
32-
AbstractAmqpTopicPublisher<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>,
28+
AbstractAmqpTopicPublisher<z.input<SupportedEventDefinitions[number]['publisherSchema']>>,
3329
AMQPDependencies,
3430
AMQPTopicPublisherConfig,
3531
AMQPTopicPublisherConfig,
3632
AmqpMessageSchemaType<AmqpAwareEventDefinition>,
3733
Omit<
38-
AMQPTopicPublisherOptions<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>,
34+
AMQPTopicPublisherOptions<z.input<SupportedEventDefinitions[number]['publisherSchema']>>,
3935
'messageSchemas' | 'locatorConfig' | 'exchange'
4036
>,
4137
SupportedEventDefinitions,
@@ -47,8 +43,8 @@ export class AmqpTopicPublisherManager<
4743
options: AmqpPublisherManagerOptions<
4844
PublisherType,
4945
AmqpTopicMessageOptions,
50-
AMQPTopicPublisherOptions<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>,
51-
z.infer<SupportedEventDefinitions[number]['publisherSchema']>,
46+
AMQPTopicPublisherOptions<z.input<SupportedEventDefinitions[number]['publisherSchema']>>,
47+
z.input<SupportedEventDefinitions[number]['publisherSchema']>,
5248
MetadataType,
5349
AMQPTopicPublisherConfig,
5450
AMQPTopicPublisherConfig
@@ -73,7 +69,7 @@ export class AmqpTopicPublisherManager<
7369
exchange: string,
7470
): Partial<
7571
Omit<
76-
AMQPTopicPublisherOptions<z.infer<SupportedEventDefinitions[number]['publisherSchema']>>,
72+
AMQPTopicPublisherOptions<z.output<SupportedEventDefinitions[number]['publisherSchema']>>,
7773
'messageSchemas' | 'locatorConfig'
7874
>
7975
> {
@@ -112,7 +108,7 @@ export class AmqpTopicPublisherManager<
112108

113109
const messageDefinition = this.resolveMessageDefinition(exchange, message)
114110
const resolvedMessage = this.resolveMessage(messageDefinition, message, precedingEventMetadata)
115-
publisher.publish(resolvedMessage, {
111+
publisher.publish(resolvedMessage as MessagePublishType<SupportedEventDefinitions[number]>, {
116112
routingKey: messageOptions?.routingKey ?? messageDefinition?.topic ?? '',
117113
publishOptions: messageOptions?.publishOptions,
118114
})

packages/amqp/lib/amqpMessageDeserializer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
} from '@message-queue-toolkit/core'
77
import { parseMessage } from '@message-queue-toolkit/core'
88
import type { Message } from 'amqplib'
9-
import type { ZodType } from 'zod/v3'
9+
import type { ZodType } from 'zod/v4'
1010

1111
import type { AmqpConsumerErrorResolver } from './errors/AmqpConsumerErrorResolver.ts'
1212

packages/amqp/lib/errors/AmqpConsumerErrorResolver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { types } from 'node:util'
33
import type { ErrorResolver } from '@lokalise/node-core'
44
import { InternalError, isStandardizedError } from '@lokalise/node-core'
55
import { MessageInvalidFormatError, MessageValidationError } from '@message-queue-toolkit/core'
6-
import { ZodError } from 'zod/v3'
6+
import { ZodError } from 'zod/v4'
77

88
export class AmqpConsumerErrorResolver implements ErrorResolver {
99
public processError(error: unknown): InternalError {

packages/amqp/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929
},
3030
"dependencies": {
3131
"@lokalise/node-core": "^14.0.1",
32-
"zod": "^3.25.7"
32+
"zod": "^3.25.67"
3333
},
3434
"peerDependencies": {
3535
"@message-queue-toolkit/core": ">=21.1.0",
3636
"@message-queue-toolkit/schemas": ">=6.0.0",
3737
"amqplib": "^0.10.8"
3838
},
3939
"devDependencies": {
40-
"@biomejs/biome": "2.0.5",
40+
"@biomejs/biome": "1.9.4",
4141
"@lokalise/biome-config": "^2.0.0",
4242
"@lokalise/tsconfig": "^1.3.0",
4343
"@message-queue-toolkit/core": "*",

packages/amqp/test/consumers/AmqpPermissionConsumer.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type { Channel } from 'amqplib'
77
import type { AwilixContainer } from 'awilix'
88
import { asClass, asFunction } from 'awilix'
99
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
10-
import { ZodError } from 'zod/v3'
10+
import { ZodError } from 'zod/v4'
1111

1212
import { FakeConsumerErrorResolver } from '../fakes/FakeConsumerErrorResolver.ts'
1313
import { FakeLogger } from '../fakes/FakeLogger.ts'
@@ -373,13 +373,12 @@ describe('AmqpPermissionConsumer', () => {
373373
`
374374
[ZodError: [
375375
{
376-
"code": "invalid_type",
377376
"expected": "string",
378-
"received": "number",
377+
"code": "invalid_type",
379378
"path": [
380379
"id"
381380
],
382-
"message": "Expected string, received number"
381+
"message": "Invalid input: expected string, received number"
383382
}
384383
]]
385384
`,

0 commit comments

Comments
 (0)