| import { IListenerConnector, IPublisherConnector } from "../interfaces"; | ||
| export * from "./listener"; | ||
| export * from "./publisher"; | ||
| export declare class InMemoryConnectors { | ||
| listener: IListenerConnector; | ||
| publisher: IPublisherConnector; | ||
| constructor(); | ||
| } | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAExE,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAE5B,qBAAa,kBAAkB;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,mBAAmB,CAAC;;CAOhC"} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.InMemoryConnectors = void 0; | ||
| const node_events_1 = require("node:events"); | ||
| const listener_1 = require("./listener"); | ||
| const publisher_1 = require("./publisher"); | ||
| __exportStar(require("./listener"), exports); | ||
| __exportStar(require("./publisher"), exports); | ||
| class InMemoryConnectors { | ||
| listener; | ||
| publisher; | ||
| constructor() { | ||
| const eventEmitter = new node_events_1.EventEmitter({ captureRejections: true }); | ||
| this.listener = new listener_1.InMemoryListenerConnector(eventEmitter); | ||
| this.publisher = new publisher_1.InMemoryPublisherConnector(eventEmitter); | ||
| } | ||
| } | ||
| exports.InMemoryConnectors = InMemoryConnectors; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,yCAAuD;AACvD,2CAAyD;AAGzD,6CAA2B;AAC3B,8CAA4B;AAE5B,MAAa,kBAAkB;IAC7B,QAAQ,CAAqB;IAC7B,SAAS,CAAsB;IAE/B;QACE,MAAM,YAAY,GAAiB,IAAI,0BAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,GAAG,IAAI,oCAAyB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,sCAA0B,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;CACF;AATD,gDASC"} |
| import { EventEmitter } from "node:events"; | ||
| import { IListenerConnector, ReceivedMessage } from "../interfaces"; | ||
| export declare class InMemoryListenerConnector implements IListenerConnector { | ||
| #private; | ||
| constructor(eventEmitter: EventEmitter); | ||
| onMessage(handler: (message: ReceivedMessage) => Promise<void>): void; | ||
| get status(): "STARTED" | "STOPPED"; | ||
| start(): Promise<void>; | ||
| stop(): Promise<void>; | ||
| onError(handler: (error: unknown) => void): void; | ||
| } | ||
| //# sourceMappingURL=listener.d.ts.map |
| {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE,qBAAa,yBAA0B,YAAW,kBAAkB;;gBAMtD,YAAY,EAAE,YAAY;IAKtC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC;IAI9D,IAAI,MAAM,IAAG,SAAS,GAAC,SAAS,CAE/B;IAED,KAAK;IAyBL,IAAI;IAMJ,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAC,OAAO,KAAK,IAAI,GAAG,IAAI;CAIhD"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.InMemoryListenerConnector = void 0; | ||
| class InMemoryListenerConnector { | ||
| #status; | ||
| #eventEmitter; | ||
| #handler; | ||
| constructor(eventEmitter) { | ||
| this.#status = "STOPPED"; | ||
| this.#eventEmitter = eventEmitter; | ||
| } | ||
| onMessage(handler) { | ||
| this.#handler = handler; | ||
| } | ||
| get status() { | ||
| return this.#status; | ||
| } | ||
| start() { | ||
| if (this.#status === 'STARTED') { | ||
| return Promise.resolve(); | ||
| } | ||
| if (!this.#handler) { | ||
| throw new Error("[InMemoryListenerConnector]: Cannot start if no handler has been registered. Use onMessage() before start()"); | ||
| } | ||
| const handler = this.#handler; | ||
| this.#eventEmitter.on("message", async (message) => { | ||
| await handler({ | ||
| content: message.content, | ||
| name: message.name, | ||
| ack: async () => { }, | ||
| nack: async () => { }, | ||
| }); | ||
| }); | ||
| this.#status = "STARTED"; | ||
| return Promise.resolve(); | ||
| } | ||
| stop() { | ||
| this.#status = "STOPPED"; | ||
| this.#eventEmitter.removeAllListeners("message"); | ||
| return Promise.resolve(); | ||
| } | ||
| onError(handler) { | ||
| this.#eventEmitter.on('error', handler); | ||
| } | ||
| } | ||
| exports.InMemoryListenerConnector = InMemoryListenerConnector; | ||
| //# sourceMappingURL=listener.js.map |
| {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/listener.ts"],"names":[],"mappings":";;;AAGA,MAAa,yBAAyB;IAEpC,OAAO,CAAsB;IAC7B,aAAa,CAAe;IAC5B,QAAQ,CAAgD;IAExD,YAAY,YAA0B;QACpC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,OAAoD;QAC5D,IAAI,CAAC,QAAQ,GAAE,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAG,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAA;QAChI,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAwC,EAAE,EAAE;YAClF,MAAM,OAAO,CAAC;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAC,KAAK,IAAI,EAAE,GAAE,CAAC;gBAClB,IAAI,EAAC,KAAK,IAAI,EAAE,GAAE,CAAC;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QAExB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,OAAgC;QACtC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CAEF;AAtDD,8DAsDC"} |
| import { EventEmitter } from "node:events"; | ||
| import { IPublisherConnector } from "../interfaces"; | ||
| export declare class InMemoryPublisherConnector implements IPublisherConnector { | ||
| #private; | ||
| constructor(eventEmitter: EventEmitter); | ||
| publish(name: string, message: string): Promise<void>; | ||
| get status(): "STARTED" | "STOPPED"; | ||
| start(): Promise<void>; | ||
| stop(): Promise<void>; | ||
| onError(handler: (error: unknown) => void): void; | ||
| } | ||
| //# sourceMappingURL=publisher.d.ts.map |
| {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/publisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,0BAA2B,YAAW,mBAAmB;;gBAKxD,YAAY,EAAE,YAAY;IAKtC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,IAAI,MAAM,IAAG,SAAS,GAAC,SAAS,CAE/B;IAED,KAAK;IAKL,IAAI;IAKJ,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAC,OAAO,KAAK,IAAI,GAAG,IAAI;CAIhD"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.InMemoryPublisherConnector = void 0; | ||
| class InMemoryPublisherConnector { | ||
| #status; | ||
| #eventEmitter; | ||
| constructor(eventEmitter) { | ||
| this.#status = "STOPPED"; | ||
| this.#eventEmitter = eventEmitter; | ||
| } | ||
| publish(name, message) { | ||
| this.#eventEmitter.emit('message', { name, content: message }); | ||
| return Promise.resolve(); | ||
| } | ||
| get status() { | ||
| return this.#status; | ||
| } | ||
| start() { | ||
| this.#status = "STARTED"; | ||
| return Promise.resolve(); | ||
| } | ||
| stop() { | ||
| this.#status = "STOPPED"; | ||
| return Promise.resolve(); | ||
| } | ||
| onError(handler) { | ||
| this.#eventEmitter.on('error', handler); | ||
| } | ||
| } | ||
| exports.InMemoryPublisherConnector = InMemoryPublisherConnector; | ||
| //# sourceMappingURL=publisher.js.map |
| {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/publisher.ts"],"names":[],"mappings":";;;AAIA,MAAa,0BAA0B;IAErC,OAAO,CAAsB;IAC7B,aAAa,CAAe;IAE5B,YAAY,YAA0B;QACpC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,OAAe;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,OAAgC;QACtC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CAEF;AAjCD,gEAiCC"} |
| export * from "./in-memory"; | ||
| export * from "./interfaces"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/event-bus/connectors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| __exportStar(require("./in-memory"), exports); | ||
| __exportStar(require("./interfaces"), exports); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/event-bus/connectors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B"} |
| export interface IListenerConnector { | ||
| onMessage(handler: (message: ReceivedMessage) => Promise<void>): void; | ||
| status: "STARTED" | "STOPPED"; | ||
| start(): Promise<void>; | ||
| stop(): Promise<void>; | ||
| onError(handler: (error: unknown) => void): void; | ||
| } | ||
| export interface IPublisherConnector { | ||
| publish(name: string, message: string, options?: { | ||
| orderingKey?: string; | ||
| }): Promise<void>; | ||
| status: "STARTED" | "STOPPED"; | ||
| start(): Promise<void>; | ||
| stop(): Promise<void>; | ||
| onError(handler: (error: unknown) => void): void; | ||
| } | ||
| export interface ReceivedMessage { | ||
| name: string; | ||
| content: string; | ||
| ack(): Promise<void>; | ||
| nack(): Promise<void>; | ||
| } | ||
| //# sourceMappingURL=interfaces.d.ts.map |
| {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/event-bus/connectors/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrE,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAC,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAC,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=interfaces.js.map |
| {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/event-bus/connectors/interfaces.ts"],"names":[],"mappings":""} |
| import { IListenerConnector } from "./connectors/interfaces"; | ||
| import { EventHandler, IDomainEventBusListener } from "./interfaces"; | ||
| import { DomainEventInterface } from "../domainEvent"; | ||
| export declare class DomainEventBusListener<Event extends DomainEventInterface> implements IDomainEventBusListener<Event> { | ||
| #private; | ||
| constructor(params: { | ||
| listenerConnector: IListenerConnector; | ||
| options: { | ||
| validator: (event: unknown) => Event; | ||
| }; | ||
| }); | ||
| listenTo<EventName extends Event["name"]>(eventName: EventName | '*', handler: EventHandler<Extract<Event, { | ||
| name: EventName; | ||
| }>>): void; | ||
| start(): Promise<void>; | ||
| stop(): Promise<void>; | ||
| status(): "STARTED" | "STOPPED"; | ||
| onError(handler: (error: unknown) => void): void; | ||
| } | ||
| //# sourceMappingURL=listener.d.ts.map |
| {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/event-bus/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAkB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItD,qBAAa,sBAAsB,CAAC,KAAK,SAAS,oBAAoB,CACpE,YAAW,uBAAuB,CAAC,KAAK,CAAC;;gBAM7B,MAAM,EAAE;QAClB,iBAAiB,EAAE,kBAAkB,CAAC;QACtC,OAAO,EAAE;YAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;SAAE,CAAA;KACnD;IAkBD,QAAQ,CAAC,SAAS,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC,GAAG,IAAI;IAIhI,KAAK;IAoCL,IAAI;IAIV,MAAM;IAIN,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAIjD"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.DomainEventBusListener = void 0; | ||
| const node_events_1 = require("node:events"); | ||
| const validateMetadata_1 = require("./validateMetadata"); | ||
| class DomainEventBusListener { | ||
| #listenerConnector; | ||
| #eventHandlersMap; | ||
| #eventEmitter; | ||
| #validator; | ||
| constructor(params) { | ||
| const { listenerConnector, options } = params; | ||
| if (!listenerConnector) { | ||
| throw new Error("[DomainEventBusListener] Must have a listener connector"); | ||
| } | ||
| this.#listenerConnector = listenerConnector; | ||
| this.#eventHandlersMap = new Map(); | ||
| this.#eventEmitter = new node_events_1.EventEmitter({ | ||
| captureRejections: true | ||
| }); | ||
| this.#validator = options.validator; | ||
| } | ||
| listenTo(eventName, handler) { | ||
| this.#eventHandlersMap.set(eventName, handler); | ||
| } | ||
| async start() { | ||
| if (this.#eventHandlersMap.size === 0) { | ||
| throw new Error("[DomainEventBusListener]: Cannot start the listener if you have no listener registered. Use listenTo() before start()"); | ||
| } | ||
| this.#listenerConnector.onMessage(async (message) => { | ||
| const eventHandler = this.#eventHandlersMap.get(message.name) ?? | ||
| this.#eventHandlersMap.get("*"); | ||
| if (!eventHandler) { | ||
| this.#eventEmitter.emit("error", new Error("[DomainEventBusListener]: No event handler found")); | ||
| await message.nack(); | ||
| return; | ||
| } | ||
| const parsedMessage = JSON.parse(message.content); | ||
| const { event, metadata } = parsedMessage; | ||
| let eventToHandle = event; | ||
| eventToHandle = this.#validator(event); | ||
| const validatedMetadata = (0, validateMetadata_1.validateMetadata)(metadata); | ||
| try { | ||
| await eventHandler(eventToHandle, validatedMetadata); | ||
| await message.ack(); | ||
| } | ||
| catch { | ||
| await message.nack(); | ||
| } | ||
| }); | ||
| await this.#listenerConnector.start(); | ||
| } | ||
| async stop() { | ||
| await this.#listenerConnector.stop(); | ||
| } | ||
| status() { | ||
| return this.#listenerConnector.status; | ||
| } | ||
| onError(handler) { | ||
| this.#listenerConnector.onError(handler); | ||
| this.#eventEmitter.on("error", handler); | ||
| } | ||
| } | ||
| exports.DomainEventBusListener = DomainEventBusListener; | ||
| //# sourceMappingURL=listener.js.map |
| {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/event-bus/listener.ts"],"names":[],"mappings":";;;AAGA,6CAA2C;AAC3C,yDAAsD;AAEtD,MAAa,sBAAsB;IAEjC,kBAAkB,CAAoB;IACtC,iBAAiB,CAAgD;IACjE,aAAa,CAAe;IAC5B,UAAU,CAA6B;IAEvC,YAAY,MAGX;QACC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAE9C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAA4C,CAAA;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAA;IACrC,CAAC;IAED,QAAQ,CAAkC,SAAyB,EAAE,OAA0D;QAC7H,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,OAA8B,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,uHAAuH,CAAC,CAAA;QAC1I,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,OAAwB,EAAC,EAAE;YAClE,MAAM,YAAY,GAChB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBACxC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBAChG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAM;YACR,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;YAE1C,IAAI,aAAa,GAAG,KAAK,CAAC;YAExB,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,QAAQ,CAAC,CAAA;YAEpD,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;gBACrD,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;CACF;AAhFD,wDAgFC"} |
| import { IPublisherConnector } from "./connectors/interfaces"; | ||
| import { IDomainEventBusPublisher } from "./interfaces"; | ||
| import { DomainEventInterface } from "../domainEvent"; | ||
| export declare class DomainEventBusPublisher<Event extends DomainEventInterface> implements IDomainEventBusPublisher<Event> { | ||
| #private; | ||
| constructor(params: { | ||
| publisherConnector: IPublisherConnector; | ||
| options?: { | ||
| validator?: (event: unknown) => Event; | ||
| }; | ||
| }); | ||
| publish(event: Event, metadata: { | ||
| id: string; | ||
| offset?: number; | ||
| createdAt: string; | ||
| }, options?: { | ||
| orderingKey?: string; | ||
| }): Promise<void>; | ||
| start(): Promise<void>; | ||
| stop(): Promise<void>; | ||
| status(): "STARTED" | "STOPPED"; | ||
| onError(handler: (error: unknown) => void): void; | ||
| } | ||
| //# sourceMappingURL=publisher.d.ts.map |
| {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/event-bus/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,qBAAa,uBAAuB,CAAC,KAAK,SAAS,oBAAoB,CACrE,YAAW,wBAAwB,CAAC,KAAK,CAAC;;gBAK9B,MAAM,EAAE;QAClB,kBAAkB,EAAE,mBAAmB,CAAC;QACxC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;SAAE,CAAA;KACrD;IAgBK,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;QACpC,EAAE,EAAC,MAAM,CAAC;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,OAAO,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB;IAkBG,KAAK;IAIL,IAAI;IAIV,MAAM;IAIN,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAGjD"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.DomainEventBusPublisher = void 0; | ||
| const validateMetadata_1 = require("./validateMetadata"); | ||
| class DomainEventBusPublisher { | ||
| #publisherConnector; | ||
| #validator; | ||
| constructor(params) { | ||
| const { publisherConnector, options } = params; | ||
| if (!publisherConnector) { | ||
| throw new Error("[DomainEventBusPublisher] Must have a publisher connector"); | ||
| } | ||
| this.#publisherConnector = publisherConnector; | ||
| if (options?.validator) { | ||
| this.#validator = options.validator; | ||
| } | ||
| } | ||
| async publish(event, metadata, options) { | ||
| const validatedMetadata = (0, validateMetadata_1.validateMetadata)(metadata); | ||
| let eventToPublish = event; | ||
| if (this.#validator) { | ||
| eventToPublish = this.#validator(event); | ||
| } | ||
| const message = { | ||
| event: eventToPublish, | ||
| metadata: validatedMetadata, | ||
| }; | ||
| await this.#publisherConnector.publish(event.name, JSON.stringify(message), options); | ||
| } | ||
| async start() { | ||
| await this.#publisherConnector.start(); | ||
| } | ||
| async stop() { | ||
| await this.#publisherConnector.stop(); | ||
| } | ||
| status() { | ||
| return this.#publisherConnector.status; | ||
| } | ||
| onError(handler) { | ||
| this.#publisherConnector.onError(handler); | ||
| } | ||
| } | ||
| exports.DomainEventBusPublisher = DomainEventBusPublisher; | ||
| //# sourceMappingURL=publisher.js.map |
| {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/event-bus/publisher.ts"],"names":[],"mappings":";;;AAGA,yDAAsD;AAEtD,MAAa,uBAAuB;IAGlC,mBAAmB,CAAsB;IACzC,UAAU,CAA8B;IAExC,YAAY,MAGX;QACC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAE/C,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAE9C,IAAG,OAAO,EAAE,SAAS,EAAC,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAA;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAY,EAAE,QAI3B,EAAE,OAEA;QAED,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,QAAQ,CAAC,CAAC;QAErD,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC;QAED,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,iBAAiB;SAC5B,CAAA;QAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF;AAhED,0DAgEC"} |
| import { EventMetadata } from "../repository"; | ||
| export declare function validateMetadata(metadata: unknown): EventMetadata; | ||
| //# sourceMappingURL=validateMetadata.d.ts.map |
| {"version":3,"file":"validateMetadata.d.ts","sourceRoot":"","sources":["../../src/event-bus/validateMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,CAqCjE"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.validateMetadata = validateMetadata; | ||
| function validateMetadata(metadata) { | ||
| if (!metadata) { | ||
| throw new Error("Null or undefined event metadata"); | ||
| } | ||
| if (typeof metadata !== 'object') { | ||
| throw new Error("Invalid Metadata"); | ||
| } | ||
| const typedMetadata = metadata; | ||
| if (typeof typedMetadata.id !== 'string') { | ||
| throw new Error("Invalid Metadata: id is not a string"); | ||
| } | ||
| if (typedMetadata.id.length === 0) { | ||
| throw new Error("Invalid Metadata: id is an empty string"); | ||
| } | ||
| if (typeof typedMetadata.createdAt !== "string") { | ||
| throw new Error("Invalid Metadata: createdAt is not a string"); | ||
| } | ||
| if (!isExactISODateTime(typedMetadata.createdAt)) { | ||
| throw new Error("Invalid Metadata: createdAt is not a valid ISO date time string"); | ||
| } | ||
| if (typedMetadata.offset !== undefined) { | ||
| if (typeof typedMetadata.offset !== "number") { | ||
| throw new Error("Invalid Metadata: offset is neither a number or undefined"); | ||
| } | ||
| if (!Number.isFinite(typedMetadata.offset)) { | ||
| throw new Error("Invalid Metadata: offset must be a finite number"); | ||
| } | ||
| } | ||
| return typedMetadata; | ||
| } | ||
| function isExactISODateTime(value) { | ||
| const match = value.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|([+-]\d{2}:\d{2}))$/); | ||
| if (!match) | ||
| return false; | ||
| const [_, y, m, d, h, min, s] = match; | ||
| const date = new Date(value); | ||
| return (!isNaN(date.getTime()) && | ||
| date.getUTCFullYear() === Number(y) && | ||
| date.getUTCMonth() + 1 === Number(m) && | ||
| date.getUTCDate() === Number(d) && | ||
| date.getUTCHours() === Number(h) && | ||
| date.getUTCMinutes() === Number(min) && | ||
| date.getUTCSeconds() === Number(s)); | ||
| } | ||
| //# sourceMappingURL=validateMetadata.js.map |
| {"version":3,"file":"validateMetadata.js","sourceRoot":"","sources":["../../src/event-bus/validateMetadata.ts"],"names":[],"mappings":";;AAEA,4CAqCC;AArCD,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,IAAG,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAG,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,aAAa,GAAG,QAAyB,CAAC;IAEhD,IAAI,OAAO,aAAa,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,OAAO,aAAa,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAGD,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CACvB,gFAAgF,CACjF,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAEtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7B,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CACnC,CAAC;AACJ,CAAC"} |
@@ -19,3 +19,9 @@ export interface DomainEventInterface { | ||
| get payload(): Payload; | ||
| toJSON(): { | ||
| entityId: string; | ||
| name: Name; | ||
| version: Version; | ||
| payload: Payload; | ||
| }; | ||
| } | ||
| //# sourceMappingURL=domainEvent.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"domainEvent.d.ts","sourceRoot":"","sources":["../src/domainEvent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,CAAE,YAAW,oBAAoB;;gBAMhG,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAQxF,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;CACF"} | ||
| {"version":3,"file":"domainEvent.d.ts","sourceRoot":"","sources":["../src/domainEvent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,OAAO,CAAE,YAAW,oBAAoB;;gBAMhG,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAQxF,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,MAAM,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;CAQ/E"} |
@@ -28,4 +28,12 @@ "use strict"; | ||
| } | ||
| toJSON() { | ||
| return { | ||
| entityId: this.#entityId, | ||
| name: this.#name, | ||
| version: this.#version, | ||
| payload: this.payload, | ||
| }; | ||
| } | ||
| } | ||
| exports.DomainEvent = DomainEvent; | ||
| //# sourceMappingURL=domainEvent.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"domainEvent.js","sourceRoot":"","sources":["../src/domainEvent.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IACtB,SAAS,CAAS;IAClB,KAAK,CAAO;IACZ,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAElB,YAAY,MAA4E;QACtF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC;IACnF,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;CACF;AA7BD,kCA6BC"} | ||
| {"version":3,"file":"domainEvent.js","sourceRoot":"","sources":["../src/domainEvent.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IACtB,SAAS,CAAS;IAClB,KAAK,CAAO;IACZ,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAElB,YAAY,MAA4E;QACtF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC;IACnF,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAtCD,kCAsCC"} |
@@ -1,2 +0,5 @@ | ||
| export {}; | ||
| export * from "./listener"; | ||
| export * from "./publisher"; | ||
| export * from "./interfaces"; | ||
| export * from "./connectors"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":""} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| __exportStar(require("./listener"), exports); | ||
| __exportStar(require("./publisher"), exports); | ||
| __exportStar(require("./interfaces"), exports); | ||
| __exportStar(require("./connectors"), exports); | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":""} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B"} |
@@ -1,2 +0,16 @@ | ||
| export {}; | ||
| import { DomainEventInterface } from "../domainEvent"; | ||
| import { EventMetadata } from "../repository"; | ||
| export interface IDomainEventBusPublisher<Event extends DomainEventInterface> { | ||
| start(): void | Promise<void>; | ||
| stop(): void | Promise<void>; | ||
| publish(event: Event, metadata: EventMetadata): Promise<void>; | ||
| } | ||
| export interface IDomainEventBusListener<Event extends DomainEventInterface> { | ||
| start(): void | Promise<void>; | ||
| stop(): void | Promise<void>; | ||
| listenTo<EventName extends Event["name"]>(eventName: EventName | '*', handler: EventHandler<Extract<Event, { | ||
| name: EventName; | ||
| }>>): void; | ||
| } | ||
| export type EventHandler<Event extends DomainEventInterface> = (event: Event, metadata: EventMetadata) => void | Promise<void>; | ||
| //# sourceMappingURL=interfaces.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/event-bus/interfaces.ts"],"names":[],"mappings":""} | ||
| {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/event-bus/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,wBAAwB,CAAC,KAAK,SAAS,oBAAoB;IAC1E,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,SAAS,oBAAoB;IACzE,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,QAAQ,CAAC,SAAS,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC,GAAG,IAAI,CAAA;CACvI;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,oBAAoB,IAAI,CAC7D,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,KACpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"} |
+1
-0
@@ -7,4 +7,5 @@ export * from "./domainError"; | ||
| export * from "./domainInvariant"; | ||
| export * from "./event-bus"; | ||
| export * from "./inMemoryRepository"; | ||
| export * from "./switchGuard"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAE5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"} |
+1
-0
@@ -23,4 +23,5 @@ "use strict"; | ||
| __exportStar(require("./domainInvariant"), exports); | ||
| __exportStar(require("./event-bus"), exports); | ||
| __exportStar(require("./inMemoryRepository"), exports); | ||
| __exportStar(require("./switchGuard"), exports); | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,oDAAkC;AAElC,uDAAqC;AACrC,gDAA8B"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,oDAAkC;AAClC,8CAA4B;AAE5B,uDAAqC;AACrC,gDAA8B"} |
@@ -25,4 +25,5 @@ import { Result } from "../result"; | ||
| }): Promise<Result<EventWithMetadata[], Error>>; | ||
| getEventsAfter(entityId: string, eventId: string, limit?: number): Promise<Result<EventWithMetadata[], Error>>; | ||
| on(handler: (entityId: string) => void): void; | ||
| } | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inMemoryRepository/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,MAAM,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9D,qBAAa,kBAAkB,CAC7B,MAAM,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAC5D,YAAW,UAAU,CAAC,MAAM,CAAC;;gBAO3B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,MAAM;IAKxE,SAAS,CAAC,QAAQ,CAAC,KAAK,+CAAsD;IAC9E,SAAS,CAAC,QAAQ,CAAC,UAAU,mCAA0C;IAEjE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAKlD,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IA8B/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;IAU/D,IAAI,CAAC,MAAM,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CACT,MAAM,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,KAAK,CAAC,CACjE;IAqBD,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;IAa9C,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAG9C"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inMemoryRepository/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,MAAM,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG9D,qBAAa,kBAAkB,CAC7B,MAAM,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAC5D,YAAW,UAAU,CAAC,MAAM,CAAC;;gBAO3B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,MAAM;IAKxE,SAAS,CAAC,QAAQ,CAAC,KAAK,+CAAsD;IAC9E,SAAS,CAAC,QAAQ,CAAC,UAAU,mCAA0C;IAEjE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAKlD,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IA+B/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;IAU/D,IAAI,CAAC,MAAM,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CACT,MAAM,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,KAAK,CAAC,CACjE;IAqBD,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;IAa9C,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;IAiB9C,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAG9C"} |
@@ -6,2 +6,3 @@ "use strict"; | ||
| const result_1 = require("../result"); | ||
| const node_crypto_1 = require("node:crypto"); | ||
| class InMemoryRepository { | ||
@@ -27,6 +28,7 @@ #mapper; | ||
| } | ||
| const integrationEvents = domainEvents.map((event, index) => { | ||
| const eventsWithMetadata = domainEvents.map((event, index) => { | ||
| return { | ||
| event, | ||
| metadata: { | ||
| id: (0, node_crypto_1.randomUUID)(), | ||
| createdAt: new Date().toISOString(), | ||
@@ -37,3 +39,3 @@ offset: events.length + index, | ||
| }); | ||
| events.push(...integrationEvents); | ||
| events.push(...eventsWithMetadata); | ||
| this.eventStore.set(entity.id(), events); | ||
@@ -68,2 +70,11 @@ this.#emitter.emit("domainEventsSaved", entity.id()); | ||
| } | ||
| getEventsAfter(entityId, eventId, limit = 50) { | ||
| const events = this.eventStore.get(entityId) || []; | ||
| const foundPrecedingEventIndex = events.findIndex(event => event.metadata.id === eventId); | ||
| if (foundPrecedingEventIndex === -1) { | ||
| throw new Error("Unknown event id"); | ||
| } | ||
| const paginatedEvents = events.slice(foundPrecedingEventIndex, foundPrecedingEventIndex + limit); | ||
| return Promise.resolve((0, result_1.ok)(paginatedEvents)); | ||
| } | ||
| on(handler) { | ||
@@ -70,0 +81,0 @@ this.#emitter.on("domainEventsSaved", handler); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inMemoryRepository/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inMemoryRepository/index.ts"],"names":[],"mappings":"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"} |
@@ -6,7 +6,9 @@ import { Result } from "./result/index"; | ||
| event: DomainEventInterface; | ||
| metadata: { | ||
| offset: number; | ||
| createdAt: string; | ||
| }; | ||
| metadata: EventMetadata; | ||
| } | ||
| export interface EventMetadata { | ||
| id: string; | ||
| offset?: number; | ||
| createdAt: string; | ||
| } | ||
| export interface Repository<Entity extends DomainEntity<ReturnType<Entity["readState"]>>> { | ||
@@ -28,4 +30,5 @@ save(entity: Entity): Promise<Result<void, Error>>; | ||
| }): Promise<Result<EventWithMetadata[], Error>>; | ||
| getEventsAfter(entityId: string, eventId: string, limit: number): Promise<Result<EventWithMetadata[], Error>>; | ||
| on(handler: (entityId: string) => void): void; | ||
| } | ||
| //# sourceMappingURL=repository.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAA;CACF;AAED,MAAM,WAAW,UAAU,CACzB,MAAM,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnD,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,IAAI,CAAC,MAAM,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAE9E,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAE/C,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/C"} | ||
| {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,UAAU,CACzB,MAAM,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnD,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,IAAI,CAAC,MAAM,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAE9E,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAE/C,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAC,KAAK,CAAC,CAAC,CAAC;IAE7G,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/C"} |
+2
-1
| { | ||
| "name": "ontologic", | ||
| "version": "1.1.0", | ||
| "version": "1.2.0", | ||
| "description": "", | ||
@@ -22,2 +22,3 @@ "main": "dist/index.js", | ||
| "@vitest/ui": "4.0.18", | ||
| "prettier": "^3.8.1", | ||
| "typescript": "^5.9.3", | ||
@@ -24,0 +25,0 @@ "vitest": "^4.0.18" |
81044
64.68%111
40.51%1083
70.02%6
20%