@message-queue-toolkit/core
Advanced tools
Comparing version 13.5.0 to 13.6.0
@@ -11,3 +11,3 @@ export type { QueueConsumer, AsyncPublisher, SyncPublisher, TransactionObservabilityManager, Logger, LogFn, SchemaMap, ExtraParams, } from './lib/types/MessageQueueTypes'; | ||
export { HandlerSpy } from './lib/queues/HandlerSpy'; | ||
export type { SpyResult, HandlerSpyParams, PublicHandlerSpy } from './lib/queues/HandlerSpy'; | ||
export type { SpyResultInput, HandlerSpyParams, PublicHandlerSpy } from './lib/queues/HandlerSpy'; | ||
export { MessageSchemaContainer } from './lib/queues/MessageSchemaContainer'; | ||
@@ -14,0 +14,0 @@ export type { MessageSchemaContainerOptions } from './lib/queues/MessageSchemaContainer'; |
import type { MetadataFiller } from '../messages/MetadataFiller'; | ||
import type { MessageMetadataType } from '../messages/baseMessageSchemas'; | ||
import type { HandlerSpy, HandlerSpyParams, PublicHandlerSpy } from '../queues/HandlerSpy'; | ||
import type { EventRegistry } from './EventRegistry'; | ||
import type { AnyEventHandler, SingleEventHandler, CommonEventDefinition, EventTypeNames, CommonEventDefinitionPublisherSchemaType } from './eventTypes'; | ||
import type { AnyEventHandler, SingleEventHandler, CommonEventDefinition, CommonEventDefinitionConsumerSchemaType, EventTypeNames, CommonEventDefinitionPublisherSchemaType } from './eventTypes'; | ||
export declare class DomainEventEmitter<SupportedEvents extends CommonEventDefinition[]> { | ||
@@ -10,7 +11,11 @@ private readonly eventRegistry; | ||
private readonly metadataFiller; | ||
private _handlerSpy; | ||
constructor({ eventRegistry, metadataFiller, }: { | ||
eventRegistry: EventRegistry<SupportedEvents>; | ||
metadataFiller: MetadataFiller; | ||
}, options: { | ||
handlerSpy?: HandlerSpy<object> | HandlerSpyParams | boolean; | ||
}); | ||
emit<SupportedEvent extends SupportedEvents[number]>(supportedEvent: SupportedEvent, data: Omit<CommonEventDefinitionPublisherSchemaType<SupportedEvent>, 'type'>, metadata?: Partial<MessageMetadataType>): Promise<void>; | ||
get handlerSpy(): PublicHandlerSpy<CommonEventDefinitionConsumerSchemaType<SupportedEvents[number]>>; | ||
emit<SupportedEvent extends SupportedEvents[number]>(supportedEvent: SupportedEvent, data: Omit<CommonEventDefinitionPublisherSchemaType<SupportedEvent>, 'type'>, metadata?: Partial<MessageMetadataType>): Promise<Omit<CommonEventDefinitionConsumerSchemaType<SupportedEvent>, 'type'>>; | ||
/** | ||
@@ -17,0 +22,0 @@ * Register handler for a specific event |
@@ -5,2 +5,3 @@ "use strict"; | ||
const node_core_1 = require("@lokalise/node-core"); | ||
const HandlerSpy_1 = require("../queues/HandlerSpy"); | ||
class DomainEventEmitter { | ||
@@ -11,6 +12,15 @@ eventRegistry; | ||
metadataFiller; | ||
constructor({ eventRegistry, metadataFiller, }) { | ||
_handlerSpy; | ||
constructor({ eventRegistry, metadataFiller, }, options) { | ||
this.eventRegistry = eventRegistry; | ||
this.metadataFiller = metadataFiller; | ||
this._handlerSpy = | ||
(0, HandlerSpy_1.resolveHandlerSpy)(options); | ||
} | ||
get handlerSpy() { | ||
if (!this._handlerSpy) { | ||
throw new Error('HandlerSpy was not instantiated, please pass `handlerSpy` parameter during queue service creation.'); | ||
} | ||
return this._handlerSpy; | ||
} | ||
async emit(supportedEvent, data, metadata) { | ||
@@ -33,3 +43,4 @@ if (!data.timestamp) { | ||
if (!eventHandlers && this.anyHandlers.length === 0) { | ||
return; | ||
// @ts-ignore | ||
return data; | ||
} | ||
@@ -50,2 +61,11 @@ const validatedEvent = this.eventRegistry | ||
} | ||
if (this._handlerSpy) { | ||
this._handlerSpy.addProcessedMessage({ | ||
// @ts-ignore | ||
message: validatedEvent, | ||
processingResult: 'consumed', | ||
}, validatedEvent.id); | ||
} | ||
// @ts-ignore | ||
return validatedEvent; | ||
} | ||
@@ -52,0 +72,0 @@ /** |
@@ -8,2 +8,3 @@ import type { TypeOf, z } from 'zod'; | ||
import type { CommonCreationConfigType, QueuePublisherOptions } from '../types/queueOptionsTypes'; | ||
import type { PublicHandlerSpy } from './HandlerSpy'; | ||
export type MessagePublishType<T extends CommonEventDefinition> = z.infer<T['publisherSchema']>; | ||
@@ -49,3 +50,3 @@ export type MessageSchemaType<T extends CommonEventDefinition> = z.infer<T['consumerSchema']>; | ||
*/ | ||
handlerSpy(eventTarget: EventTargets): import("./HandlerSpy").PublicHandlerSpy<object>; | ||
handlerSpy(eventTarget: EventTargets): PublicHandlerSpy<object>; | ||
} |
import type { MessageProcessingResult } from '../types/MessageQueueTypes'; | ||
import type { CommonQueueOptions } from '../types/queueOptionsTypes'; | ||
export type HandlerSpyParams = { | ||
bufferSize?: number; | ||
messageIdField?: string; | ||
messageTypeField?: string; | ||
}; | ||
export type SpyResult<MessagePayloadSchemas extends object> = { | ||
export type SpyResultInput<MessagePayloadSchemas extends object> = { | ||
message: MessagePayloadSchemas | null; | ||
processingResult: MessageProcessingResult; | ||
}; | ||
export type SpyResultOutput<MessagePayloadSchemas extends object> = { | ||
message: MessagePayloadSchemas; | ||
processingResult: MessageProcessingResult; | ||
}; | ||
export declare function isHandlerSpy<T extends object>(value: unknown): value is HandlerSpy<T>; | ||
@@ -20,11 +24,14 @@ export type PublicHandlerSpy<MessagePayloadSchemas extends object> = Omit<HandlerSpy<MessagePayloadSchemas>, 'addProcessedMessage'>; | ||
private readonly messageIdField; | ||
private readonly messageTypeField; | ||
private readonly spyPromises; | ||
constructor(params?: HandlerSpyParams); | ||
private messageMatchesFilter; | ||
waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, processingResult?: MessageProcessingResult): Promise<SpyResult<T>>; | ||
waitForMessage<T extends MessagePayloadSchemas>(fields: DeepPartial<T>, processingResult?: MessageProcessingResult): Promise<SpyResult<T>>; | ||
waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, processingResult?: MessageProcessingResult): Promise<SpyResultOutput<T>>; | ||
waitForMessage<T extends MessagePayloadSchemas>(fields: DeepPartial<T>, processingResult?: MessageProcessingResult): Promise<SpyResultOutput<T>>; | ||
clear(): void; | ||
addProcessedMessage(processingResult: SpyResult<MessagePayloadSchemas>, messageId?: string): void; | ||
addProcessedMessage(processingResult: SpyResultInput<MessagePayloadSchemas>, messageId?: string): void; | ||
} | ||
export declare function resolveHandlerSpy<T extends object>(queueOptions: CommonQueueOptions): HandlerSpy<T> | undefined; | ||
export declare function resolveHandlerSpy<T extends object>(queueOptions: { | ||
handlerSpy?: HandlerSpy<object> | HandlerSpyParams | boolean; | ||
}): HandlerSpy<T> | undefined; | ||
export {}; |
@@ -18,2 +18,3 @@ "use strict"; | ||
messageIdField; | ||
messageTypeField; | ||
spyPromises; | ||
@@ -24,2 +25,4 @@ constructor(params = {}) { | ||
this.messageIdField = params.messageIdField ?? 'id'; | ||
// @ts-ignore | ||
this.messageTypeField = params.messageTypeField ?? 'type'; | ||
this.spyPromises = []; | ||
@@ -60,2 +63,3 @@ } | ||
}); | ||
// @ts-ignore | ||
return spyPromise; | ||
@@ -68,3 +72,4 @@ } | ||
const resolvedMessageId = processingResult.message?.[this.messageIdField] ?? messageId ?? (0, node_crypto_1.randomUUID)(); | ||
// If we failed to parse message, let's store id at least | ||
const resolvedMessageType = processingResult.message?.[this.messageTypeField] ?? 'FAILED_TO_RESOLVE'; | ||
// If we failed to parse message, let's store id and type at least | ||
const resolvedProcessingResult = processingResult.message | ||
@@ -76,2 +81,3 @@ ? processingResult | ||
[this.messageIdField]: messageId, | ||
[this.messageTypeField]: resolvedMessageType, | ||
}, | ||
@@ -78,0 +84,0 @@ }; |
{ | ||
"name": "@message-queue-toolkit/core", | ||
"version": "13.5.0", | ||
"version": "13.6.0", | ||
"private": false, | ||
@@ -28,3 +28,3 @@ "license": "MIT", | ||
"dependencies": { | ||
"@lokalise/node-core": "^9.21.0", | ||
"@lokalise/node-core": "^10.0.0", | ||
"@message-queue-toolkit/schemas": "^1.0.0", | ||
@@ -31,0 +31,0 @@ "fast-equals": "^5.0.1", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
107769
1512
+ Added@lokalise/node-core@10.0.1(transitive)
+ Addedcolorette@2.0.20(transitive)
+ Addeddateformat@4.6.3(transitive)
+ Addedend-of-stream@1.4.4(transitive)
+ Addedfast-copy@3.0.2(transitive)
+ Addedfast-safe-stringify@2.1.1(transitive)
+ Addedhelp-me@5.0.0(transitive)
+ Addedjoycon@3.1.1(transitive)
+ Addedminimist@1.2.8(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedpino-pretty@11.2.1(transitive)
+ Addedpump@3.0.0(transitive)
+ Addedsecure-json-parse@2.7.0(transitive)
+ Addedstrip-json-comments@3.1.1(transitive)
+ Addedwrappy@1.0.2(transitive)
- Removed@lokalise/node-core@9.22.0(transitive)
- Removedundici@6.19.2(transitive)
- Removedundici-retry@5.0.3(transitive)
Updated@lokalise/node-core@^10.0.0