@message-queue-toolkit/core 13.4.0 → 13.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/events/DomainEventEmitter.d.ts +4 -1
- package/dist/lib/events/DomainEventEmitter.js +9 -1
- package/dist/lib/events/DomainEventEmitter.js.map +1 -1
- package/dist/lib/queues/AbstractQueueService.d.ts +10 -1
- package/dist/lib/queues/AbstractQueueService.js +26 -9
- package/dist/lib/queues/AbstractQueueService.js.map +1 -1
- package/dist/lib/queues/HandlerContainer.d.ts +5 -3
- package/dist/lib/queues/HandlerContainer.js +11 -3
- package/dist/lib/queues/HandlerContainer.js.map +1 -1
- package/dist/lib/queues/MessageSchemaContainer.d.ts +4 -0
- package/dist/lib/queues/MessageSchemaContainer.js +9 -0
- package/dist/lib/queues/MessageSchemaContainer.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MetadataFiller } from '../messages/MetadataFiller';
|
|
1
2
|
import type { MessageMetadataType } from '../messages/baseMessageSchemas';
|
|
2
3
|
import type { EventRegistry } from './EventRegistry';
|
|
3
4
|
import type { AnyEventHandler, SingleEventHandler, CommonEventDefinition, EventTypeNames, CommonEventDefinitionPublisherSchemaType } from './eventTypes';
|
|
@@ -5,8 +6,10 @@ export declare class DomainEventEmitter<SupportedEvents extends CommonEventDefin
|
|
|
5
6
|
private readonly eventRegistry;
|
|
6
7
|
private readonly eventHandlerMap;
|
|
7
8
|
private readonly anyHandlers;
|
|
8
|
-
|
|
9
|
+
private readonly metadataFiller;
|
|
10
|
+
constructor({ eventRegistry, metadataFiller, }: {
|
|
9
11
|
eventRegistry: EventRegistry<SupportedEvents>;
|
|
12
|
+
metadataFiller: MetadataFiller;
|
|
10
13
|
});
|
|
11
14
|
emit<SupportedEvent extends SupportedEvents[number]>(supportedEvent: SupportedEvent, data: Omit<CommonEventDefinitionPublisherSchemaType<SupportedEvent>, 'type'>, metadata?: Partial<MessageMetadataType>): Promise<void>;
|
|
12
15
|
/**
|
|
@@ -6,10 +6,18 @@ class DomainEventEmitter {
|
|
|
6
6
|
eventRegistry;
|
|
7
7
|
eventHandlerMap = {};
|
|
8
8
|
anyHandlers = [];
|
|
9
|
-
|
|
9
|
+
metadataFiller;
|
|
10
|
+
constructor({ eventRegistry, metadataFiller, }) {
|
|
10
11
|
this.eventRegistry = eventRegistry;
|
|
12
|
+
this.metadataFiller = metadataFiller;
|
|
11
13
|
}
|
|
12
14
|
async emit(supportedEvent, data, metadata) {
|
|
15
|
+
if (!data.timestamp) {
|
|
16
|
+
data.timestamp = this.metadataFiller.produceTimestamp();
|
|
17
|
+
}
|
|
18
|
+
if (!data.id) {
|
|
19
|
+
data.id = this.metadataFiller.produceId();
|
|
20
|
+
}
|
|
13
21
|
const eventTypeName = supportedEvent.publisherSchema.shape.type.value;
|
|
14
22
|
if (!this.eventRegistry.isSupportedEvent(eventTypeName)) {
|
|
15
23
|
throw new node_core_1.InternalError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;
|
|
1
|
+
{"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AAgBnD,MAAa,kBAAkB;IACZ,aAAa,CAAgC;IAE7C,eAAe,GAG5B,EAAE,CAAA;IACW,WAAW,GAAuC,EAAE,CAAA;IACpD,cAAc,CAAgB;IAE/C,YAAY,EACV,aAAa,EACb,cAAc,GAIf;QACC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,cAA8B,EAC9B,IAA4E,EAC5E,QAAuC;QAEvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;QAC3C,CAAC;QAED,MAAM,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAA;QAErE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,yBAAa,CAAC;gBACtB,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,iBAAiB,aAAa,EAAE;aAC1C,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;QAEzD,8DAA8D;QAC9D,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAM;QACR,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa;aACtC,4BAA4B,CAAC,aAAa,CAAC;aAC3C,cAAc,CAAC,KAAK,CAAC;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,IAAI;SACR,CAAC,CAAA;QAEJ,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACI,EAAE,CACP,aAA4B,EAC5B,OAA2D;QAE3D,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACI,MAAM,CACX,cAA+B,EAC/B,OAA2D;QAE3D,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAyC;QACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAEO,YAAY,CAClB,aAAsD,EACtD,OAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;QAC1C,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;CACF;AA1GD,gDA0GC"}
|
|
@@ -3,8 +3,9 @@ import type { ZodSchema, ZodType } from 'zod';
|
|
|
3
3
|
import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors';
|
|
4
4
|
import type { Logger, MessageProcessingResult } from '../types/MessageQueueTypes';
|
|
5
5
|
import type { DeletionConfig, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes';
|
|
6
|
-
import type { BarrierCallback, BarrierResult, Prehandler, PrehandlerResult, PreHandlingOutputs } from './HandlerContainer';
|
|
6
|
+
import type { BarrierCallback, BarrierResult, MessageHandlerConfig, Prehandler, PrehandlerResult, PreHandlingOutputs } from './HandlerContainer';
|
|
7
7
|
import type { HandlerSpy, PublicHandlerSpy } from './HandlerSpy';
|
|
8
|
+
import { MessageSchemaContainer } from './MessageSchemaContainer';
|
|
8
9
|
export type Deserializer<MessagePayloadType extends object> = (message: unknown, type: ZodType<MessagePayloadType>, errorProcessor: ErrorResolver) => Either<MessageInvalidFormatError | MessageValidationError, MessagePayloadType>;
|
|
9
10
|
type CommonQueueLocator = {
|
|
10
11
|
queueName: string;
|
|
@@ -32,6 +33,14 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
32
33
|
protected isInitted: boolean;
|
|
33
34
|
get handlerSpy(): PublicHandlerSpy<MessagePayloadSchemas>;
|
|
34
35
|
constructor({ errorReporter, logger }: DependenciesType, options: OptionsType);
|
|
36
|
+
protected resolveConsumerMessageSchemaContainer(options: {
|
|
37
|
+
handlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
|
|
38
|
+
messageTypeField: string;
|
|
39
|
+
}): MessageSchemaContainer<MessagePayloadSchemas>;
|
|
40
|
+
protected resolvePublisherMessageSchemaContainer(options: {
|
|
41
|
+
messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
|
|
42
|
+
messageTypeField: string;
|
|
43
|
+
}): MessageSchemaContainer<MessagePayloadSchemas>;
|
|
35
44
|
protected abstract resolveSchema(message: MessagePayloadSchemas): Either<Error, ZodSchema<MessagePayloadSchemas>>;
|
|
36
45
|
protected abstract resolveMessage(message: MessageEnvelopeType): Either<MessageInvalidFormatError | MessageValidationError, unknown>;
|
|
37
46
|
/**
|
|
@@ -6,6 +6,7 @@ const node_core_1 = require("@lokalise/node-core");
|
|
|
6
6
|
const dateUtils_1 = require("../utils/dateUtils");
|
|
7
7
|
const toDateProcessor_1 = require("../utils/toDateProcessor");
|
|
8
8
|
const HandlerSpy_1 = require("./HandlerSpy");
|
|
9
|
+
const MessageSchemaContainer_1 = require("./MessageSchemaContainer");
|
|
9
10
|
class AbstractQueueService {
|
|
10
11
|
/**
|
|
11
12
|
* Used to keep track of the number of `retryLater` results received for a message to be able to
|
|
@@ -46,6 +47,27 @@ class AbstractQueueService {
|
|
|
46
47
|
this._handlerSpy = (0, HandlerSpy_1.resolveHandlerSpy)(options);
|
|
47
48
|
this.isInitted = false;
|
|
48
49
|
}
|
|
50
|
+
resolveConsumerMessageSchemaContainer(options) {
|
|
51
|
+
const messageSchemas = options.handlers.map((entry) => entry.schema);
|
|
52
|
+
// @ts-expect-error This should no longer be necessary in upcoming TypeScript updates, filter will narrow down the type
|
|
53
|
+
const messageDefinitions = options.handlers
|
|
54
|
+
.map((entry) => entry.definition)
|
|
55
|
+
.filter((entry) => entry !== undefined);
|
|
56
|
+
return new MessageSchemaContainer_1.MessageSchemaContainer({
|
|
57
|
+
messageSchemas,
|
|
58
|
+
messageDefinitions,
|
|
59
|
+
messageTypeField: options.messageTypeField,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
resolvePublisherMessageSchemaContainer(options) {
|
|
63
|
+
const messageSchemas = options.messageSchemas;
|
|
64
|
+
const messageDefinitions = [];
|
|
65
|
+
return new MessageSchemaContainer_1.MessageSchemaContainer({
|
|
66
|
+
messageSchemas,
|
|
67
|
+
messageDefinitions,
|
|
68
|
+
messageTypeField: options.messageTypeField,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
49
71
|
/**
|
|
50
72
|
* Format message for logging
|
|
51
73
|
*/
|
|
@@ -66,15 +88,10 @@ class AbstractQueueService {
|
|
|
66
88
|
}
|
|
67
89
|
handleError(err, context) {
|
|
68
90
|
const logObject = (0, node_core_1.resolveGlobalErrorLogObject)(err);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
this.logger.error({
|
|
74
|
-
...logObject,
|
|
75
|
-
...context,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
91
|
+
this.logger.error({
|
|
92
|
+
...logObject,
|
|
93
|
+
...context,
|
|
94
|
+
});
|
|
78
95
|
if (node_util_1.types.isNativeError(err)) {
|
|
79
96
|
this.errorReporter.report({ error: err, context });
|
|
80
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAiE;
|
|
1
|
+
{"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
|
+
import type { CommonEventDefinition } from '@message-queue-toolkit/schemas';
|
|
2
3
|
import type { ZodSchema } from 'zod';
|
|
3
4
|
import type { DoNotProcessMessageError } from '../errors/DoNotProcessError';
|
|
4
5
|
import type { RetryMessageLaterError } from '../errors/RetryMessageLaterError';
|
|
@@ -27,19 +28,20 @@ export type HandlerConfigOptions<MessagePayloadSchema extends object, ExecutionC
|
|
|
27
28
|
};
|
|
28
29
|
export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext, const PrehandlerOutput = undefined, const BarrierOutput = unknown> {
|
|
29
30
|
readonly schema: ZodSchema<MessagePayloadSchema>;
|
|
31
|
+
readonly definition?: CommonEventDefinition;
|
|
30
32
|
readonly handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
|
|
31
33
|
readonly messageLogFormatter: LogFormatter<MessagePayloadSchema>;
|
|
32
34
|
readonly preHandlerBarrier?: BarrierCallback<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
|
|
33
35
|
readonly preHandlers: Prehandler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput>[];
|
|
34
|
-
constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput
|
|
36
|
+
constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, eventDefinition?: CommonEventDefinition);
|
|
35
37
|
}
|
|
36
38
|
export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> {
|
|
37
39
|
private readonly configs;
|
|
38
40
|
constructor();
|
|
39
|
-
addConfig<MessagePayloadSchema extends MessagePayloadSchemas, const BarrierOutput>(schema: ZodSchema<MessagePayloadSchema
|
|
41
|
+
addConfig<MessagePayloadSchema extends MessagePayloadSchemas, const BarrierOutput>(schema: ZodSchema<MessagePayloadSchema> | CommonEventDefinition, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>): this;
|
|
40
42
|
build(): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, any>[];
|
|
41
43
|
}
|
|
42
|
-
export type Handler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput = undefined, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, preHandlingOutputs: PreHandlingOutputs<PrehandlerOutput, BarrierOutput
|
|
44
|
+
export type Handler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput = undefined, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, preHandlingOutputs: PreHandlingOutputs<PrehandlerOutput, BarrierOutput>, definition?: CommonEventDefinition) => Promise<Either<'retryLater', 'success'>>;
|
|
43
45
|
export type HandlerContainerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> = {
|
|
44
46
|
messageHandlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
|
|
45
47
|
messageTypeField: string;
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HandlerContainer = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.defaultLogFormatter = void 0;
|
|
4
|
+
const schemas_1 = require("@message-queue-toolkit/schemas");
|
|
4
5
|
const defaultLogFormatter = (message) => message;
|
|
5
6
|
exports.defaultLogFormatter = defaultLogFormatter;
|
|
6
7
|
class MessageHandlerConfig {
|
|
7
8
|
schema;
|
|
9
|
+
definition;
|
|
8
10
|
handler;
|
|
9
11
|
messageLogFormatter;
|
|
10
12
|
preHandlerBarrier;
|
|
11
13
|
preHandlers;
|
|
12
|
-
constructor(schema, handler, options) {
|
|
14
|
+
constructor(schema, handler, options, eventDefinition) {
|
|
13
15
|
this.schema = schema;
|
|
16
|
+
this.definition = eventDefinition;
|
|
14
17
|
this.handler = handler;
|
|
15
18
|
this.messageLogFormatter = options?.messageLogFormatter ?? exports.defaultLogFormatter;
|
|
16
19
|
this.preHandlerBarrier = options?.preHandlerBarrier;
|
|
@@ -24,11 +27,16 @@ class MessageHandlerConfigBuilder {
|
|
|
24
27
|
this.configs = [];
|
|
25
28
|
}
|
|
26
29
|
addConfig(schema, handler, options) {
|
|
30
|
+
const resolvedSchema = (0, schemas_1.isCommonEventDefinition)(schema)
|
|
31
|
+
? // @ts-ignore
|
|
32
|
+
schema.consumerSchema
|
|
33
|
+
: schema;
|
|
34
|
+
const definition = (0, schemas_1.isCommonEventDefinition)(schema) ? schema : undefined;
|
|
27
35
|
this.configs.push(
|
|
28
36
|
// @ts-ignore
|
|
29
|
-
new MessageHandlerConfig(
|
|
37
|
+
new MessageHandlerConfig(resolvedSchema,
|
|
30
38
|
// @ts-ignore
|
|
31
|
-
handler, options));
|
|
39
|
+
handler, options, definition));
|
|
32
40
|
return this;
|
|
33
41
|
}
|
|
34
42
|
build() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AA+
|
|
1
|
+
{"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AAEA,4DAAwE;AA+CjE,MAAM,mBAAmB,GAAG,CAAuB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAAtF,QAAA,mBAAmB,uBAAmE;AAkBnG,MAAa,oBAAoB;IAMf,MAAM,CAAiC;IACvC,UAAU,CAAwB;IAClC,OAAO,CAKtB;IACe,mBAAmB,CAAoC;IACvD,iBAAiB,CAKhC;IACe,WAAW,CAIxB;IAEH,YACE,MAAuC,EACvC,OAAyF,EACzF,OAKC,EACD,eAAuC;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,eAAe,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,IAAI,2BAAmB,CAAA;QAC9E,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,CAAA;QACnD,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,EAAE,CAAA;IAC/C,CAAC;CACF;AA7CD,oDA6CC;AAED,MAAa,2BAA2B;IAKrB,OAAO,CAMrB;IAEH;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAA+D,EAC/D,OAAyF,EACzF,OAKC;QAED,MAAM,cAAc,GAAoC,IAAA,iCAAuB,EAAC,MAAM,CAAC;YACrF,CAAC,CAAC,aAAa;gBACZ,MAAM,CAAC,cAAkD;YAC5D,CAAC,CAAC,MAAM,CAAA;QACV,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;QAEvE,IAAI,CAAC,OAAO,CAAC,IAAI;QACf,aAAa;QACb,IAAI,oBAAoB,CAMtB,cAAc;QACd,aAAa;QACb,OAAO,EACP,OAAO,EACP,UAAU,CACX,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AAtDD,kEAsDC;AAuBD,MAAa,gBAAgB;IAKV,eAAe,CAG/B;IACgB,gBAAgB,CAAQ;IAEzC,YACE,OAA2F;QAE3F,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACxE,CAAC;IAEM,cAAc,CACnB,WAAmB;QAOnB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,aAAa;QACb,+DAA+D;QAC/D,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,iBAAiB,CACvB,iBAIG;QAKH,OAAO,iBAAiB,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACb,aAAa;YACb,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAA;YACnE,aAAa;YACb,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;YACxB,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAGC,CACF,CAAA;IACH,CAAC;CACF;AA3DD,4CA2DC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
|
+
import type { CommonEventDefinition } from '@message-queue-toolkit/schemas';
|
|
2
3
|
import type { ZodSchema } from 'zod';
|
|
3
4
|
export type MessageSchemaContainerOptions<MessagePayloadSchemas extends object> = {
|
|
5
|
+
messageDefinitions: readonly CommonEventDefinition[];
|
|
4
6
|
messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
|
|
5
7
|
messageTypeField: string;
|
|
6
8
|
};
|
|
7
9
|
export declare class MessageSchemaContainer<MessagePayloadSchemas extends object> {
|
|
10
|
+
readonly messageDefinitions: Record<string, CommonEventDefinition>;
|
|
8
11
|
private readonly messageSchemas;
|
|
9
12
|
private readonly messageTypeField;
|
|
10
13
|
constructor(options: MessageSchemaContainerOptions<MessagePayloadSchemas>);
|
|
11
14
|
resolveSchema(message: Record<string, any>): Either<Error, ZodSchema<MessagePayloadSchemas>>;
|
|
12
15
|
private resolveSchemaMap;
|
|
16
|
+
private resolveDefinitionsMap;
|
|
13
17
|
}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MessageSchemaContainer = void 0;
|
|
4
4
|
class MessageSchemaContainer {
|
|
5
|
+
messageDefinitions;
|
|
5
6
|
messageSchemas;
|
|
6
7
|
messageTypeField;
|
|
7
8
|
constructor(options) {
|
|
8
9
|
this.messageTypeField = options.messageTypeField;
|
|
9
10
|
this.messageSchemas = this.resolveSchemaMap(options.messageSchemas);
|
|
11
|
+
this.messageDefinitions = this.resolveDefinitionsMap(options.messageDefinitions ?? []);
|
|
10
12
|
}
|
|
11
13
|
resolveSchema(
|
|
12
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -28,6 +30,13 @@ class MessageSchemaContainer {
|
|
|
28
30
|
return acc;
|
|
29
31
|
}, {});
|
|
30
32
|
}
|
|
33
|
+
resolveDefinitionsMap(supportedDefinitions) {
|
|
34
|
+
return supportedDefinitions.reduce((acc, definition) => {
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
acc[definition.publisherSchema.shape[this.messageTypeField].value] = definition;
|
|
37
|
+
return acc;
|
|
38
|
+
}, {});
|
|
39
|
+
}
|
|
31
40
|
}
|
|
32
41
|
exports.MessageSchemaContainer = MessageSchemaContainer;
|
|
33
42
|
//# sourceMappingURL=MessageSchemaContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageSchemaContainer.js","sourceRoot":"","sources":["../../../lib/queues/MessageSchemaContainer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MessageSchemaContainer.js","sourceRoot":"","sources":["../../../lib/queues/MessageSchemaContainer.ts"],"names":[],"mappings":";;;AAUA,MAAa,sBAAsB;IACjB,kBAAkB,CAAuC;IACxD,cAAc,CAAkD;IAChE,gBAAgB,CAAQ;IAEzC,YAAY,OAA6D;QACvE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACnE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAA;IACxF,CAAC;IAEM,aAAa;IAClB,8DAA8D;IAC9D,OAA4B;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,KAAK,EAAE,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;aAChF,CAAA;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM;SACf,CAAA;IACH,CAAC;IAEO,gBAAgB,CACtB,gBAA6D;QAE7D,OAAO,gBAAgB,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,aAAa;YACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;YACvD,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAAsD,CACvD,CAAA;IACH,CAAC;IAEO,qBAAqB,CAC3B,oBAAsD;QAEtD,OAAO,oBAAoB,CAAC,MAAM,CAChC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAClB,aAAa;YACb,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAA;YAC/E,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAA2C,CAC5C,CAAA;IACH,CAAC;CACF;AAnDD,wDAmDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@message-queue-toolkit/core",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Useful utilities, interfaces and base classes for message queue handling. Supports AMQP and SQS with a common abstraction on top currently",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prepublishOnly": "npm run build:release"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@lokalise/node-core": "^9.
|
|
28
|
+
"@lokalise/node-core": "^9.21.0",
|
|
29
29
|
"@message-queue-toolkit/schemas": "^1.0.0",
|
|
30
30
|
"fast-equals": "^5.0.1",
|
|
31
31
|
"toad-cache": "^3.7.0",
|