Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

ontologic

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ontologic - npm Package Compare versions

Comparing version
1.5.1
to
1.6.2
+28
dist/corruptedStateError.d.ts
export interface InvariantViolation {
description: string;
}
/**
* Thrown when a `DomainEntity` is found to violate one or more of its invariants.
*
* This is **not** a recoverable domain failure — it signals a programmer error.
* The entity was constructed with valid state and a method mutated it into an
* invalid state, or the state was hydrated from a source that did not respect
* the entity's rules. Either way, the program cannot safely continue manipulating
* the entity. Catch it at the application boundary, log every field, and fail
* the current operation.
*
* Do not return it inside a `Result`. If you find yourself wanting to, the
* underlying failure is probably a domain failure that deserves its own
* `DomainError` subtype rather than an invariant violation.
*/
export declare class CorruptedStateError<State = unknown> extends Error {
name: "CORRUPTED_STATE";
readonly entityId: string;
readonly state: State;
readonly violations: InvariantViolation[];
constructor(params: {
entityId: string;
state: State;
violations: InvariantViolation[];
});
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CorruptedStateError = void 0;
/**
* Thrown when a `DomainEntity` is found to violate one or more of its invariants.
*
* This is **not** a recoverable domain failure — it signals a programmer error.
* The entity was constructed with valid state and a method mutated it into an
* invalid state, or the state was hydrated from a source that did not respect
* the entity's rules. Either way, the program cannot safely continue manipulating
* the entity. Catch it at the application boundary, log every field, and fail
* the current operation.
*
* Do not return it inside a `Result`. If you find yourself wanting to, the
* underlying failure is probably a domain failure that deserves its own
* `DomainError` subtype rather than an invariant violation.
*/
class CorruptedStateError extends Error {
entityId;
state;
violations;
constructor(params) {
const { entityId, state, violations } = params;
const summary = violations.map((v) => `"${v.description}"`).join(", ");
super(`Corrupted state detected on entity "${entityId}". Failed invariants: ${summary}`, { cause: state });
this.name = "CORRUPTED_STATE";
this.entityId = entityId;
this.state = state;
this.violations = violations;
Object.setPrototypeOf(this, CorruptedStateError.prototype);
}
}
exports.CorruptedStateError = CorruptedStateError;
//# sourceMappingURL=corruptedStateError.js.map
{"version":3,"file":"corruptedStateError.js","sourceRoot":"","sources":["../src/corruptedStateError.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;;;GAaG;AACH,MAAa,mBAAqC,SAAQ,KAAK;IAE7C,QAAQ,CAAS;IACjB,KAAK,CAAQ;IACb,UAAU,CAAuB;IAEjD,YAAY,MAIX;QACC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvE,KAAK,CACH,uCAAuC,QAAQ,yBAAyB,OAAO,EAAE,EACjF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;CACF;AA1BD,kDA0BC","sourcesContent":["export interface InvariantViolation {\n description: string;\n}\n\n/**\n * Thrown when a `DomainEntity` is found to violate one or more of its invariants.\n *\n * This is **not** a recoverable domain failure — it signals a programmer error.\n * The entity was constructed with valid state and a method mutated it into an\n * invalid state, or the state was hydrated from a source that did not respect\n * the entity's rules. Either way, the program cannot safely continue manipulating\n * the entity. Catch it at the application boundary, log every field, and fail\n * the current operation.\n *\n * Do not return it inside a `Result`. If you find yourself wanting to, the\n * underlying failure is probably a domain failure that deserves its own\n * `DomainError` subtype rather than an invariant violation.\n */\nexport class CorruptedStateError<State = unknown> extends Error {\n declare public name: \"CORRUPTED_STATE\";\n public readonly entityId: string;\n public readonly state: State;\n public readonly violations: InvariantViolation[];\n\n constructor(params: {\n entityId: string;\n state: State;\n violations: InvariantViolation[];\n }) {\n const { entityId, state, violations } = params;\n const summary = violations.map((v) => `\"${v.description}\"`).join(\", \");\n\n super(\n `Corrupted state detected on entity \"${entityId}\". Failed invariants: ${summary}`,\n { cause: state },\n );\n\n this.name = \"CORRUPTED_STATE\";\n this.entityId = entityId;\n this.state = state;\n this.violations = violations;\n\n Object.setPrototypeOf(this, CorruptedStateError.prototype);\n }\n}\n"]}
+18
-1

@@ -13,5 +13,22 @@ import { DomainInvariant } from "./domainInvariant/interfaces";

readState(): State;
/**
* Returns the entity state without cloning. Invariants are still checked.
*
* Use this on hot paths where the clone cost of `readState()` shows up in
* profiling. The returned value is typed `Readonly<State>` to signal that
* mutation is a bug; that protection is shallow and erased at runtime, so
* callers MUST NOT mutate the returned object or any of its nested objects.
*/
unsafeReadState(): Readonly<State>;
/**
* Returns the entity state with no defensive copy and no invariant check.
*
* The cheapest possible accessor. Bypasses every safety the entity offers.
* Reserved for callers who can prove (by construction or by audit) that the
* state is valid and will not be mutated. Mutating the returned object
* silently corrupts the entity.
*/
unsafeRawState(): State;
addInvariant(invariant: DomainInvariant<State>): void;
private checkInvariants;
}
//# sourceMappingURL=domainEntity.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DomainEntity = void 0;
const corruptedStateError_1 = require("./corruptedStateError");
class DomainEntity {

@@ -21,2 +22,25 @@ #id;

}
/**
* Returns the entity state without cloning. Invariants are still checked.
*
* Use this on hot paths where the clone cost of `readState()` shows up in
* profiling. The returned value is typed `Readonly<State>` to signal that
* mutation is a bug; that protection is shallow and erased at runtime, so
* callers MUST NOT mutate the returned object or any of its nested objects.
*/
unsafeReadState() {
this.checkInvariants();
return this.state;
}
/**
* Returns the entity state with no defensive copy and no invariant check.
*
* The cheapest possible accessor. Bypasses every safety the entity offers.
* Reserved for callers who can prove (by construction or by audit) that the
* state is valid and will not be mutated. Mutating the returned object
* silently corrupts the entity.
*/
unsafeRawState() {
return this.state;
}
addInvariant(invariant) {

@@ -26,6 +50,11 @@ this.#invariants.push(invariant);

checkInvariants() {
const isValid = this.#invariants.every((invariant) => invariant.complyWith(this.state).isCompliant);
if (!isValid) {
throw new Error("Corrupted state detected", {
cause: this.state,
const violations = this.#invariants
.map((invariant) => invariant.complyWith(this.state))
.filter((result) => !result.isCompliant)
.map(({ description }) => ({ description }));
if (violations.length > 0) {
throw new corruptedStateError_1.CorruptedStateError({
entityId: this.#id,
state: this.state,
violations,
});

@@ -32,0 +61,0 @@ }

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"domainEntity.js","sourceRoot":"","sources":["../src/domainEntity.ts"],"names":[],"mappings":";;;AAQA,MAAa,YAAY;IACvB,GAAG,CAAS;IACZ,WAAW,CAA2B;IAC5B,KAAK,CAAQ;IAEvB,YAAY,EAAU,EAAE,KAAY,EAAE,UAAqC;QACzE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,uCAAuC;QAC5E,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,EAAE;QACA,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,YAAY,CAAC,SAAiC;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEO,eAAe;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CACpC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAC5D,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AApCD,oCAoCC"}
{"version":3,"file":"domainEntity.js","sourceRoot":"","sources":["../src/domainEntity.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAS5D,MAAa,YAAY;IACvB,GAAG,CAAS;IACZ,WAAW,CAA2B;IAC5B,KAAK,CAAQ;IAEvB,YAAY,EAAU,EAAE,KAAY,EAAE,UAAqC;QACzE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,uCAAuC;QAC5E,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,EAAE;QACA,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,eAAe;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,YAAY,CAAC,SAAiC;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEO,eAAe;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;aAChC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;aACvC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAE/C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,yCAAmB,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG;gBAClB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAhED,oCAgEC","sourcesContent":["import { CorruptedStateError } from \"./corruptedStateError\";\nimport { DomainInvariant } from \"./domainInvariant/interfaces\";\n\nexport interface IDomainEntity {\n id(): string;\n readState(): unknown;\n addInvariant(invariant: DomainInvariant<unknown>): void;\n}\n\nexport class DomainEntity<State> implements IDomainEntity {\n #id: string;\n #invariants: DomainInvariant<State>[];\n protected state: State;\n\n constructor(id: string, state: State, invariants?: DomainInvariant<State>[]) {\n this.#id = id;\n this.state = structuredClone(state); // TODO: Verify it's JSON compatible ??\n this.#invariants = invariants || [];\n this.checkInvariants();\n }\n\n id(): string {\n return this.#id;\n }\n\n readState(): State {\n this.checkInvariants();\n return structuredClone(this.state);\n }\n\n /**\n * Returns the entity state without cloning. Invariants are still checked.\n *\n * Use this on hot paths where the clone cost of `readState()` shows up in\n * profiling. The returned value is typed `Readonly<State>` to signal that\n * mutation is a bug; that protection is shallow and erased at runtime, so\n * callers MUST NOT mutate the returned object or any of its nested objects.\n */\n unsafeReadState(): Readonly<State> {\n this.checkInvariants();\n return this.state;\n }\n\n /**\n * Returns the entity state with no defensive copy and no invariant check.\n *\n * The cheapest possible accessor. Bypasses every safety the entity offers.\n * Reserved for callers who can prove (by construction or by audit) that the\n * state is valid and will not be mutated. Mutating the returned object\n * silently corrupts the entity.\n */\n unsafeRawState(): State {\n return this.state;\n }\n\n addInvariant(invariant: DomainInvariant<State>) {\n this.#invariants.push(invariant);\n }\n\n private checkInvariants() {\n const violations = this.#invariants\n .map((invariant) => invariant.complyWith(this.state))\n .filter((result) => !result.isCompliant)\n .map(({ description }) => ({ description }));\n\n if (violations.length > 0) {\n throw new CorruptedStateError({\n entityId: this.#id,\n state: this.state,\n violations,\n });\n }\n }\n}\n"]}

@@ -11,2 +11,1 @@ export declare class DomainError<Name extends string, Context> extends Error {

}
//# sourceMappingURL=domainError.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"domainError.js","sourceRoot":"","sources":["../src/domainError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAA0C,SAAQ,KAAK;IAC3D,OAAO,CAAsB;IAIpC,YAAY,MAKX;QACC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAEjD,KAAK,CAAC,OAAO,EAAE;YACb,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AAtBD,kCAsBC"}
{"version":3,"file":"domainError.js","sourceRoot":"","sources":["../src/domainError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAA0C,SAAQ,KAAK;IAC3D,OAAO,CAAsB;IAIpC,YAAY,MAKX;QACC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAEjD,KAAK,CAAC,OAAO,EAAE;YACb,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AAtBD,kCAsBC","sourcesContent":["export class DomainError<Name extends string, Context> extends Error {\n public context: Context | undefined;\n\n declare public name: Name;\n\n constructor(params: {\n message: string;\n name: Name;\n context?: Context;\n cause?: unknown;\n }) {\n const { message, name, context, cause } = params;\n\n super(message, {\n cause,\n });\n\n this.name = name;\n this.context = context;\n\n Object.setPrototypeOf(this, DomainError.prototype);\n }\n}\n"]}

@@ -26,2 +26,1 @@ export interface DomainEventInterface {

}
//# sourceMappingURL=domainEvent.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"domainEvent.js","sourceRoot":"","sources":["../src/domainEvent.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAKtB,SAAS,CAAS;IAClB,KAAK,CAAO;IACZ,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAElB,YAAY,MAKX;QACC,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;QAMJ,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;AApDD,kCAoDC"}
{"version":3,"file":"domainEvent.js","sourceRoot":"","sources":["../src/domainEvent.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAKtB,SAAS,CAAS;IAClB,KAAK,CAAO;IACZ,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAElB,YAAY,MAKX;QACC,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;QAMJ,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;AApDD,kCAoDC","sourcesContent":["export interface DomainEventInterface {\n name: string;\n version: number;\n entityId: string;\n payload: unknown;\n}\n\nexport class DomainEvent<\n Name extends string,\n Version extends number,\n Payload,\n> implements DomainEventInterface {\n #entityId: string;\n #name: Name;\n #version: Version;\n #payload: Payload;\n\n constructor(params: {\n entityId: string;\n name: Name;\n version: Version;\n payload: Payload;\n }) {\n const { name, version, payload, entityId } = params;\n this.#entityId = entityId;\n this.#name = name;\n this.#version = version;\n this.#payload = structuredClone(payload); // TODO: Verify it's JSON compatible ??\n }\n\n get entityId(): string {\n return this.#entityId;\n }\n\n get name(): Name {\n return this.#name;\n }\n\n get version(): Version {\n return this.#version;\n }\n\n get payload(): Payload {\n return structuredClone(this.#payload);\n }\n\n toJSON(): {\n entityId: string;\n name: Name;\n version: Version;\n payload: Payload;\n } {\n return {\n entityId: this.#entityId,\n name: this.#name,\n version: this.#version,\n payload: this.payload,\n };\n }\n}\n"]}

@@ -12,2 +12,1 @@ import { DomainInvariant, InvariantCheckResult } from "./interfaces";

}
//# sourceMappingURL=composedDomainInvariant.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"composedDomainInvariant.js","sourceRoot":"","sources":["../../src/domainInvariant/composedDomainInvariant.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AACtC,uCAAoC;AACpC,yCAAsC;AACtC,yCAAsC;AACtC,+CAA4C;AAE5C,MAAa,uBAAuB;IAClC,UAAU,CAAyC;IAEnD,YAAY,UAAkD;QAC5D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,SAAiC;QAClC,OAAO,IAAA,OAAE,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACD,OAAO,IAAA,SAAG,EAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,SAAiC;QACtC,OAAO,IAAA,eAAM,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;CACF;AA9BD,0DA8BC"}
{"version":3,"file":"composedDomainInvariant.js","sourceRoot":"","sources":["../../src/domainInvariant/composedDomainInvariant.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AACtC,uCAAoC;AACpC,yCAAsC;AACtC,yCAAsC;AACtC,+CAA4C;AAE5C,MAAa,uBAAuB;IAClC,UAAU,CAAyC;IAEnD,YAAY,UAAkD;QAC5D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,SAAiC;QAClC,OAAO,IAAA,OAAE,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACD,OAAO,IAAA,SAAG,EAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,SAAiC;QACtC,OAAO,IAAA,eAAM,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;CACF;AA9BD,0DA8BC","sourcesContent":["import { DomainInvariant, InvariantCheckResult } from \"./interfaces\";\nimport { and } from \"./operators/and\";\nimport { or } from \"./operators/or\";\nimport { not } from \"./operators/not\";\nimport { xor } from \"./operators/xor\";\nimport { andNot } from \"./operators/andNot\";\n\nexport class ComposedDomainInvariant<State> implements DomainInvariant<State> {\n #validator: (state: State) => InvariantCheckResult;\n\n constructor(complyWith: (state: State) => InvariantCheckResult) {\n this.#validator = complyWith;\n }\n\n complyWith(state: State): InvariantCheckResult {\n return this.#validator(state);\n }\n\n and(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return and(this, invariant);\n }\n\n or(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return or(this, invariant);\n }\n\n not(): DomainInvariant<State> {\n return not(this);\n }\n\n xor(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return xor(this, invariant);\n }\n\n andNot(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return andNot(this, invariant);\n }\n}\n"]}

@@ -12,2 +12,1 @@ import { InvariantCheckResult, DomainInvariant } from "./interfaces";

}
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domainInvariant/index.ts"],"names":[],"mappings":";;;AAEA,yCAAsC;AACtC,uCAAoC;AACpC,yCAAsC;AACtC,yCAAsC;AACtC,+CAA4C;AAE5C,MAAa,mBAAmB;IAC9B,UAAU,CAAyC;IAEnD,YAAY,WAAmB,EAAE,UAAqC;QACpE,IAAI,CAAC,UAAU,GAAG,CAAC,KAAY,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAEtC,OAAO;gBACL,WAAW;gBACX,WAAW;aACZ,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,SAAiC;QAClC,OAAO,IAAA,OAAE,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACD,OAAO,IAAA,SAAG,EAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,SAAiC;QACtC,OAAO,IAAA,eAAM,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;CACF;AArCD,kDAqCC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domainInvariant/index.ts"],"names":[],"mappings":";;;AAEA,yCAAsC;AACtC,uCAAoC;AACpC,yCAAsC;AACtC,yCAAsC;AACtC,+CAA4C;AAE5C,MAAa,mBAAmB;IAC9B,UAAU,CAAyC;IAEnD,YAAY,WAAmB,EAAE,UAAqC;QACpE,IAAI,CAAC,UAAU,GAAG,CAAC,KAAY,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAEtC,OAAO;gBACL,WAAW;gBACX,WAAW;aACZ,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,SAAiC;QAClC,OAAO,IAAA,OAAE,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG;QACD,OAAO,IAAA,SAAG,EAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,SAAiC;QACnC,OAAO,IAAA,SAAG,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,SAAiC;QACtC,OAAO,IAAA,eAAM,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;CACF;AArCD,kDAqCC","sourcesContent":["import { InvariantCheckResult, DomainInvariant } from \"./interfaces\";\n\nimport { and } from \"./operators/and\";\nimport { or } from \"./operators/or\";\nimport { not } from \"./operators/not\";\nimport { xor } from \"./operators/xor\";\nimport { andNot } from \"./operators/andNot\";\n\nexport class BaseDomainInvariant<State> implements DomainInvariant<State> {\n #validator: (state: State) => InvariantCheckResult;\n\n constructor(description: string, complyWith: (state: State) => boolean) {\n this.#validator = (state: State) => {\n const isCompliant = complyWith(state);\n\n return {\n isCompliant,\n description,\n };\n };\n }\n\n complyWith(state: State): InvariantCheckResult {\n return this.#validator(state);\n }\n\n and(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return and(this, invariant);\n }\n\n or(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return or(this, invariant);\n }\n\n not(): DomainInvariant<State> {\n return not(this);\n }\n\n xor(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return xor(this, invariant);\n }\n\n andNot(invariant: DomainInvariant<State>): DomainInvariant<State> {\n return andNot(this, invariant);\n }\n}\n"]}

@@ -14,2 +14,1 @@ export interface DomainInvariant<State> {

}
//# sourceMappingURL=interfaces.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/domainInvariant/interfaces.ts"],"names":[],"mappings":""}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/domainInvariant/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["export interface DomainInvariant<State> {\n complyWith(state: State): InvariantCheckResult;\n and(invariant: DomainInvariant<State>): DomainInvariant<State>;\n or(invariant: DomainInvariant<State>): DomainInvariant<State>;\n not(): DomainInvariant<State>;\n xor(invariant: DomainInvariant<State>): DomainInvariant<State>;\n andNot(invariant: DomainInvariant<State>): DomainInvariant<State>;\n}\n\nexport interface InvariantCheckResult {\n operator?: string;\n isCompliant: boolean;\n description: string;\n}\n"]}
import { DomainInvariant } from "../interfaces";
export declare function and<State>(invariantA: DomainInvariant<State>, invariantB: DomainInvariant<State>): DomainInvariant<State>;
//# sourceMappingURL=and.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"and.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/and.ts"],"names":[],"mappings":";;AAGA,kBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,GAAG,CACjB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;YACvD,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,GAAG;SACnE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC"}
{"version":3,"file":"and.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/and.ts"],"names":[],"mappings":";;AAGA,kBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,GAAG,CACjB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;YACvD,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,GAAG;SACnE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { DomainInvariant, InvariantCheckResult } from \"../interfaces\";\nimport { ComposedDomainInvariant } from \"../composedDomainInvariant\";\n\nexport function and<State>(\n invariantA: DomainInvariant<State>,\n invariantB: DomainInvariant<State>,\n): DomainInvariant<State> {\n const composedComplyWith = (state: State): InvariantCheckResult => {\n const AResult = invariantA.complyWith(state);\n const BResult = invariantB.complyWith(state);\n\n return {\n isCompliant: AResult.isCompliant && BResult.isCompliant,\n operator: \"AND\",\n description: `${AResult.description} AND (${BResult.description})`,\n };\n };\n\n return new ComposedDomainInvariant<State>(composedComplyWith);\n}\n"]}
import { DomainInvariant } from "../interfaces";
export declare function andNot<State>(invariantA: DomainInvariant<State>, invariantB: DomainInvariant<State>): DomainInvariant<State>;
//# sourceMappingURL=andNot.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"andNot.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/andNot.ts"],"names":[],"mappings":";;AAGA,wBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,MAAM,CACpB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW;YACxD,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,aAAa,OAAO,CAAC,WAAW,GAAG;SACvE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC"}
{"version":3,"file":"andNot.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/andNot.ts"],"names":[],"mappings":";;AAGA,wBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,MAAM,CACpB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW;YACxD,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,aAAa,OAAO,CAAC,WAAW,GAAG;SACvE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { DomainInvariant, InvariantCheckResult } from \"../interfaces\";\nimport { ComposedDomainInvariant } from \"../composedDomainInvariant\";\n\nexport function andNot<State>(\n invariantA: DomainInvariant<State>,\n invariantB: DomainInvariant<State>,\n): DomainInvariant<State> {\n const composedComplyWith = (state: State): InvariantCheckResult => {\n const AResult = invariantA.complyWith(state);\n const BResult = invariantB.complyWith(state);\n\n return {\n isCompliant: AResult.isCompliant && !BResult.isCompliant,\n operator: \"AND NOT\",\n description: `${AResult.description} AND NOT (${BResult.description})`,\n };\n };\n\n return new ComposedDomainInvariant<State>(composedComplyWith);\n}\n"]}
import { DomainInvariant } from "../interfaces";
export declare function not<State>(invariant: DomainInvariant<State>): DomainInvariant<State>;
//# sourceMappingURL=not.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"not.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/not.ts"],"names":[],"mappings":";;AAGA,kBAcC;AAhBD,wEAAqE;AAErE,SAAgB,GAAG,CACjB,SAAiC;IAEjC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW;YAChC,WAAW,EAAE,QAAQ,MAAM,CAAC,WAAW,GAAG;SAC3C,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC"}
{"version":3,"file":"not.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/not.ts"],"names":[],"mappings":";;AAGA,kBAcC;AAhBD,wEAAqE;AAErE,SAAgB,GAAG,CACjB,SAAiC;IAEjC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW;YAChC,WAAW,EAAE,QAAQ,MAAM,CAAC,WAAW,GAAG;SAC3C,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { DomainInvariant, InvariantCheckResult } from \"../interfaces\";\nimport { ComposedDomainInvariant } from \"../composedDomainInvariant\";\n\nexport function not<State>(\n invariant: DomainInvariant<State>,\n): DomainInvariant<State> {\n const composedComplyWith = (state: State): InvariantCheckResult => {\n const result = invariant.complyWith(state);\n\n return {\n operator: \"NOT\",\n isCompliant: !result.isCompliant,\n description: `NOT (${result.description})`,\n };\n };\n\n return new ComposedDomainInvariant<State>(composedComplyWith);\n}\n"]}
import { DomainInvariant } from "../interfaces";
export declare function or<State>(invariantA: DomainInvariant<State>, invariantB: DomainInvariant<State>): DomainInvariant<State>;
//# sourceMappingURL=or.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"or.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/or.ts"],"names":[],"mappings":";;AAGA,gBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,EAAE,CAChB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;YACvD,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,QAAQ,OAAO,CAAC,WAAW,GAAG;SAClE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC"}
{"version":3,"file":"or.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/or.ts"],"names":[],"mappings":";;AAGA,gBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,EAAE,CAChB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;YACvD,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,QAAQ,OAAO,CAAC,WAAW,GAAG;SAClE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { DomainInvariant, InvariantCheckResult } from \"../interfaces\";\nimport { ComposedDomainInvariant } from \"../composedDomainInvariant\";\n\nexport function or<State>(\n invariantA: DomainInvariant<State>,\n invariantB: DomainInvariant<State>,\n): DomainInvariant<State> {\n const composedComplyWith = (state: State): InvariantCheckResult => {\n const AResult = invariantA.complyWith(state);\n const BResult = invariantB.complyWith(state);\n\n return {\n isCompliant: AResult.isCompliant || BResult.isCompliant,\n operator: \"OR\",\n description: `${AResult.description} OR (${BResult.description})`,\n };\n };\n\n return new ComposedDomainInvariant<State>(composedComplyWith);\n}\n"]}
import { DomainInvariant } from "../interfaces";
export declare function xor<State>(invariantA: DomainInvariant<State>, invariantB: DomainInvariant<State>): DomainInvariant<State>;
//# sourceMappingURL=xor.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"xor.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/xor.ts"],"names":[],"mappings":";;AAGA,kBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,GAAG,CACjB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW;YACxD,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,GAAG;SACnE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC"}
{"version":3,"file":"xor.js","sourceRoot":"","sources":["../../../src/domainInvariant/operators/xor.ts"],"names":[],"mappings":";;AAGA,kBAgBC;AAlBD,wEAAqE;AAErE,SAAgB,GAAG,CACjB,UAAkC,EAClC,UAAkC;IAElC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAwB,EAAE;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW;YACxD,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,GAAG;SACnE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,iDAAuB,CAAQ,kBAAkB,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { DomainInvariant, InvariantCheckResult } from \"../interfaces\";\nimport { ComposedDomainInvariant } from \"../composedDomainInvariant\";\n\nexport function xor<State>(\n invariantA: DomainInvariant<State>,\n invariantB: DomainInvariant<State>,\n): DomainInvariant<State> {\n const composedComplyWith = (state: State): InvariantCheckResult => {\n const AResult = invariantA.complyWith(state);\n const BResult = invariantB.complyWith(state);\n\n return {\n isCompliant: AResult.isCompliant !== BResult.isCompliant,\n operator: \"XOR\",\n description: `${AResult.description} XOR (${BResult.description})`,\n };\n };\n\n return new ComposedDomainInvariant<State>(composedComplyWith);\n}\n"]}

@@ -9,2 +9,1 @@ import { IListenerConnector, IPublisherConnector } from "../interfaces";

}
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"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;YAClD,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,oCAAyB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,sCAA0B,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;CACF;AAXD,gDAWC"}
{"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;YAClD,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,oCAAyB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,sCAA0B,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;CACF;AAXD,gDAWC","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { InMemoryListenerConnector } from \"./listener\";\nimport { InMemoryPublisherConnector } from \"./publisher\";\nimport { IListenerConnector, IPublisherConnector } from \"../interfaces\";\n\nexport * from \"./listener\";\nexport * from \"./publisher\";\n\nexport class InMemoryConnectors {\n listener: IListenerConnector;\n publisher: IPublisherConnector;\n\n constructor() {\n const eventEmitter: EventEmitter = new EventEmitter({\n captureRejections: true,\n });\n this.listener = new InMemoryListenerConnector(eventEmitter);\n this.publisher = new InMemoryPublisherConnector(eventEmitter);\n }\n}\n"]}

@@ -12,2 +12,1 @@ import { EventEmitter } from "node:events";

}
//# sourceMappingURL=listener.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/listener.ts"],"names":[],"mappings":";;;AAGA,MAAa,yBAAyB;IACpC,OAAO,CAAwB;IAC/B,aAAa,CAAe;IAC5B,QAAQ,CAA+C;IAEvD,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,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,EAAE,CACnB,SAAS,EACT,KAAK,EAAE,OAA0C,EAAE,EAAE;YACnD,MAAM,OAAO,CAAC;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;gBACnB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;aACrB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAEzB,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,OAAiC;QACvC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAzDD,8DAyDC"}
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/listener.ts"],"names":[],"mappings":";;;AAGA,MAAa,yBAAyB;IACpC,OAAO,CAAwB;IAC/B,aAAa,CAAe;IAC5B,QAAQ,CAA+C;IAEvD,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,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,EAAE,CACnB,SAAS,EACT,KAAK,EAAE,OAA0C,EAAE,EAAE;YACnD,MAAM,OAAO,CAAC;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;gBACnB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;aACrB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAEzB,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,OAAiC;QACvC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAzDD,8DAyDC","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { IListenerConnector, ReceivedMessage } from \"../interfaces\";\n\nexport class InMemoryListenerConnector implements IListenerConnector {\n #status: \"STARTED\" | \"STOPPED\";\n #eventEmitter: EventEmitter;\n #handler?: (message: ReceivedMessage) => Promise<void>;\n\n constructor(eventEmitter: EventEmitter) {\n this.#status = \"STOPPED\";\n this.#eventEmitter = eventEmitter;\n }\n\n onMessage(handler: (message: ReceivedMessage) => Promise<void>) {\n this.#handler = handler;\n }\n\n get status(): \"STARTED\" | \"STOPPED\" {\n return this.#status;\n }\n\n start() {\n if (this.#status === \"STARTED\") {\n return Promise.resolve();\n }\n\n if (!this.#handler) {\n throw new Error(\n \"[InMemoryListenerConnector]: Cannot start if no handler has been registered. Use onMessage() before start()\",\n );\n }\n\n const handler = this.#handler;\n\n this.#eventEmitter.on(\n \"message\",\n async (message: { name: string; content: string }) => {\n await handler({\n content: message.content,\n name: message.name,\n ack: async () => {},\n nack: async () => {},\n });\n },\n );\n\n this.#status = \"STARTED\";\n\n return Promise.resolve();\n }\n\n stop() {\n this.#status = \"STOPPED\";\n this.#eventEmitter.removeAllListeners(\"message\");\n return Promise.resolve();\n }\n\n onError(handler: (error: unknown) => void): void {\n this.#eventEmitter.on(\"error\", handler);\n }\n}\n"]}

@@ -12,2 +12,1 @@ import { EventEmitter } from "node:events";

}
//# sourceMappingURL=publisher.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/publisher.ts"],"names":[],"mappings":";;;AAGA,MAAa,0BAA0B;IACrC,OAAO,CAAwB;IAC/B,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,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,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,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AA/BD,gEA+BC"}
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/publisher.ts"],"names":[],"mappings":";;;AAGA,MAAa,0BAA0B;IACrC,OAAO,CAAwB;IAC/B,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,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,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,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AA/BD,gEA+BC","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { IPublisherConnector } from \"../interfaces\";\n\nexport class InMemoryPublisherConnector implements IPublisherConnector {\n #status: \"STARTED\" | \"STOPPED\";\n #eventEmitter: EventEmitter;\n\n constructor(eventEmitter: EventEmitter) {\n this.#status = \"STOPPED\";\n this.#eventEmitter = eventEmitter;\n }\n\n publish(name: string, message: string): Promise<void> {\n this.#eventEmitter.emit(\"message\", { name, content: message });\n return Promise.resolve();\n }\n\n get status(): \"STARTED\" | \"STOPPED\" {\n return this.#status;\n }\n\n start() {\n this.#status = \"STARTED\";\n return Promise.resolve();\n }\n\n stop() {\n this.#status = \"STOPPED\";\n return Promise.resolve();\n }\n\n onError(handler: (error: unknown) => void): void {\n this.#eventEmitter.on(\"error\", handler);\n }\n}\n"]}
export * from "./in-memory";
export * from "./interfaces";
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/event-bus/connectors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/event-bus/connectors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B","sourcesContent":["export * from \"./in-memory\";\nexport * from \"./interfaces\";\n"]}

@@ -23,2 +23,1 @@ export interface IListenerConnector {

}
//# sourceMappingURL=interfaces.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/event-bus/connectors/interfaces.ts"],"names":[],"mappings":""}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/event-bus/connectors/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["export interface IListenerConnector {\n onMessage(handler: (message: ReceivedMessage) => Promise<void>): void;\n status: \"STARTED\" | \"STOPPED\";\n start(): Promise<void>;\n stop(): Promise<void>;\n onError(handler: (error: unknown) => void): void;\n}\n\nexport interface IPublisherConnector {\n publish(\n name: string,\n message: string,\n options?: { orderingKey?: string },\n ): Promise<void>;\n status: \"STARTED\" | \"STOPPED\";\n start(): Promise<void>;\n stop(): Promise<void>;\n onError(handler: (error: unknown) => void): void;\n}\n\nexport interface ReceivedMessage {\n name: string;\n content: string;\n ack(): Promise<void>;\n nack(): Promise<void>;\n}\n"]}

@@ -5,2 +5,1 @@ export * from "./listener";

export * from "./connectors";
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B","sourcesContent":["export * from \"./listener\";\nexport * from \"./publisher\";\nexport * from \"./interfaces\";\nexport * from \"./connectors\";\n"]}

@@ -16,2 +16,1 @@ import { DomainEventInterface } from "../domainEvent";

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.js","sourceRoot":"","sources":["../../src/event-bus/interfaces.ts"],"names":[],"mappings":""}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/event-bus/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { DomainEventInterface } from \"../domainEvent\";\nimport { EventMetadata } from \"../repository\";\n\nexport interface IDomainEventBusPublisher<Event extends DomainEventInterface> {\n start(): void | Promise<void>;\n stop(): void | Promise<void>;\n publish(event: Event, metadata: EventMetadata): Promise<void>;\n}\n\nexport interface IDomainEventBusListener<Event extends DomainEventInterface> {\n start(): void | Promise<void>;\n stop(): void | Promise<void>;\n listenTo<EventName extends Event[\"name\"]>(\n eventName: EventName | \"*\",\n handler: EventHandler<Extract<Event, { name: EventName }>>,\n ): void;\n}\n\nexport type EventHandler<Event extends DomainEventInterface> = (\n event: Event,\n metadata: EventMetadata,\n) => void | Promise<void>;\n"]}

@@ -20,2 +20,1 @@ import { IListenerConnector } from "./connectors/interfaces";

}
//# sourceMappingURL=listener.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/event-bus/listener.ts"],"names":[],"mappings":";;;AAGA,6CAA2C;AAC3C,yDAAsD;AAEtD,MAAa,sBAAsB;IAGjC,kBAAkB,CAAqB;IACvC,iBAAiB,CAAgD;IACjE,aAAa,CAAe;IAC5B,UAAU,CAA4B;IAEtC,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,EAG7B,CAAC;QACJ,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IACtC,CAAC;IAED,QAAQ,CACN,SAA0B,EAC1B,OAA0D;QAE1D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,OAA8B,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE;YACnE,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,CACrB,OAAO,EACP,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAC9D,CAAC;gBACF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO;YACT,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;YAE1B,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEvC,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,QAAQ,CAAC,CAAC;YAErD,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,CAAC;IAC1C,CAAC;CACF;AA5FD,wDA4FC"}
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/event-bus/listener.ts"],"names":[],"mappings":";;;AAGA,6CAA2C;AAC3C,yDAAsD;AAEtD,MAAa,sBAAsB;IAGjC,kBAAkB,CAAqB;IACvC,iBAAiB,CAAgD;IACjE,aAAa,CAAe;IAC5B,UAAU,CAA4B;IAEtC,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,EAG7B,CAAC;QACJ,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IACtC,CAAC;IAED,QAAQ,CACN,SAA0B,EAC1B,OAA0D;QAE1D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,OAA8B,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE;YACnE,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,CACrB,OAAO,EACP,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAC9D,CAAC;gBACF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO;YACT,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;YAE1B,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEvC,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,QAAQ,CAAC,CAAC;YAErD,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,CAAC;IAC1C,CAAC;CACF;AA5FD,wDA4FC","sourcesContent":["import { IListenerConnector, ReceivedMessage } from \"./connectors/interfaces\";\nimport { EventHandler, IDomainEventBusListener } from \"./interfaces\";\nimport { DomainEventInterface } from \"../domainEvent\";\nimport { EventEmitter } from \"node:events\";\nimport { validateMetadata } from \"./validateMetadata\";\n\nexport class DomainEventBusListener<\n Event extends DomainEventInterface,\n> implements IDomainEventBusListener<Event> {\n #listenerConnector: IListenerConnector;\n #eventHandlersMap: Map<Event[\"name\"] | \"*\", EventHandler<Event>>;\n #eventEmitter: EventEmitter;\n #validator: (event: unknown) => Event;\n\n constructor(params: {\n listenerConnector: IListenerConnector;\n options: { validator: (event: unknown) => Event };\n }) {\n const { listenerConnector, options } = params;\n\n if (!listenerConnector) {\n throw new Error(\n \"[DomainEventBusListener] Must have a listener connector\",\n );\n }\n\n this.#listenerConnector = listenerConnector;\n this.#eventHandlersMap = new Map<\n Event[\"name\"] | \"*\",\n EventHandler<Event>\n >();\n this.#eventEmitter = new EventEmitter({\n captureRejections: true,\n });\n\n this.#validator = options.validator;\n }\n\n listenTo<EventName extends Event[\"name\"]>(\n eventName: EventName | \"*\",\n handler: EventHandler<Extract<Event, { name: EventName }>>,\n ): void {\n this.#eventHandlersMap.set(eventName, handler as EventHandler<Event>);\n }\n\n async start() {\n if (this.#eventHandlersMap.size === 0) {\n throw new Error(\n \"[DomainEventBusListener]: Cannot start the listener if you have no listener registered. Use listenTo() before start()\",\n );\n }\n\n this.#listenerConnector.onMessage(async (message: ReceivedMessage) => {\n const eventHandler =\n this.#eventHandlersMap.get(message.name) ??\n this.#eventHandlersMap.get(\"*\");\n\n if (!eventHandler) {\n this.#eventEmitter.emit(\n \"error\",\n new Error(\"[DomainEventBusListener]: No event handler found\"),\n );\n await message.nack();\n return;\n }\n\n const parsedMessage = JSON.parse(message.content);\n const { event, metadata } = parsedMessage;\n\n let eventToHandle = event;\n\n eventToHandle = this.#validator(event);\n\n const validatedMetadata = validateMetadata(metadata);\n\n try {\n await eventHandler(eventToHandle, validatedMetadata);\n await message.ack();\n } catch {\n await message.nack();\n }\n });\n\n await this.#listenerConnector.start();\n }\n\n async stop() {\n await this.#listenerConnector.stop();\n }\n\n status() {\n return this.#listenerConnector.status;\n }\n\n onError(handler: (error: unknown) => void): void {\n this.#listenerConnector.onError(handler);\n this.#eventEmitter.on(\"error\", handler);\n }\n}\n"]}

@@ -24,2 +24,1 @@ import { IPublisherConnector } from "./connectors/interfaces";

}
//# sourceMappingURL=publisher.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/event-bus/publisher.ts"],"names":[],"mappings":";;;AAGA,yDAAsD;AAEtD,MAAa,uBAAuB;IAGlC,mBAAmB,CAAsB;IACzC,UAAU,CAA6B;IAEvC,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,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAY,EACZ,QAIC,EACD,OAEC;QAED,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,QAAQ,CAAC,CAAC;QAErD,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;QAEF,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CACpC,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,OAAO,CACR,CAAC;IACJ,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;AAvED,0DAuEC"}
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/event-bus/publisher.ts"],"names":[],"mappings":";;;AAGA,yDAAsD;AAEtD,MAAa,uBAAuB;IAGlC,mBAAmB,CAAsB;IACzC,UAAU,CAA6B;IAEvC,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,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAY,EACZ,QAIC,EACD,OAEC;QAED,MAAM,iBAAiB,GAAG,IAAA,mCAAgB,EAAC,QAAQ,CAAC,CAAC;QAErD,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;QAEF,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CACpC,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,OAAO,CACR,CAAC;IACJ,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;AAvED,0DAuEC","sourcesContent":["import { IPublisherConnector } from \"./connectors/interfaces\";\nimport { IDomainEventBusPublisher } from \"./interfaces\";\nimport { DomainEventInterface } from \"../domainEvent\";\nimport { validateMetadata } from \"./validateMetadata\";\n\nexport class DomainEventBusPublisher<\n Event extends DomainEventInterface,\n> implements IDomainEventBusPublisher<Event> {\n #publisherConnector: IPublisherConnector;\n #validator?: (event: unknown) => Event;\n\n constructor(params: {\n publisherConnector: IPublisherConnector;\n options?: { validator?: (event: unknown) => Event };\n }) {\n const { publisherConnector, options } = params;\n\n if (!publisherConnector) {\n throw new Error(\n \"[DomainEventBusPublisher] Must have a publisher connector\",\n );\n }\n\n this.#publisherConnector = publisherConnector;\n\n if (options?.validator) {\n this.#validator = options.validator;\n }\n }\n\n async publish(\n event: Event,\n metadata: {\n id: string;\n offset?: number;\n createdAt: string;\n },\n options?: {\n orderingKey?: string;\n },\n ) {\n const validatedMetadata = validateMetadata(metadata);\n\n let eventToPublish = event;\n\n if (this.#validator) {\n eventToPublish = this.#validator(event);\n }\n\n const message = {\n event: eventToPublish,\n metadata: validatedMetadata,\n };\n\n await this.#publisherConnector.publish(\n event.name,\n JSON.stringify(message),\n options,\n );\n }\n\n async start() {\n await this.#publisherConnector.start();\n }\n\n async stop() {\n await this.#publisherConnector.stop();\n }\n\n status() {\n return this.#publisherConnector.status;\n }\n\n onError(handler: (error: unknown) => void): void {\n this.#publisherConnector.onError(handler);\n }\n}\n"]}
import { EventMetadata } from "../repository";
export declare function validateMetadata(metadata: unknown): EventMetadata;
//# sourceMappingURL=validateMetadata.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"validateMetadata.js","sourceRoot":"","sources":["../../src/event-bus/validateMetadata.ts"],"names":[],"mappings":";;AAEA,4CAyCC;AAzCD,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,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,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,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;AAED,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"}
{"version":3,"file":"validateMetadata.js","sourceRoot":"","sources":["../../src/event-bus/validateMetadata.ts"],"names":[],"mappings":";;AAEA,4CAyCC;AAzCD,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,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,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,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;AAED,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","sourcesContent":["import { EventMetadata } from \"../repository\";\n\nexport function validateMetadata(metadata: unknown): EventMetadata {\n if (!metadata) {\n throw new Error(\"Null or undefined event metadata\");\n }\n\n if (typeof metadata !== \"object\") {\n throw new Error(\"Invalid Metadata\");\n }\n\n const typedMetadata = metadata as EventMetadata;\n\n if (typeof typedMetadata.id !== \"string\") {\n throw new Error(\"Invalid Metadata: id is not a string\");\n }\n\n if (typedMetadata.id.length === 0) {\n throw new Error(\"Invalid Metadata: id is an empty string\");\n }\n\n if (typeof typedMetadata.createdAt !== \"string\") {\n throw new Error(\"Invalid Metadata: createdAt is not a string\");\n }\n\n if (!isExactISODateTime(typedMetadata.createdAt)) {\n throw new Error(\n \"Invalid Metadata: createdAt is not a valid ISO date time string\",\n );\n }\n\n if (typedMetadata.offset !== undefined) {\n if (typeof typedMetadata.offset !== \"number\") {\n throw new Error(\n \"Invalid Metadata: offset is neither a number or undefined\",\n );\n }\n if (!Number.isFinite(typedMetadata.offset)) {\n throw new Error(\"Invalid Metadata: offset must be a finite number\");\n }\n }\n\n return typedMetadata;\n}\n\nfunction isExactISODateTime(value: string): boolean {\n const match = value.match(\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(\\.\\d+)?(Z|([+-]\\d{2}:\\d{2}))$/,\n );\n if (!match) return false;\n\n const [_, y, m, d, h, min, s] = match;\n\n const date = new Date(value);\n\n return (\n !isNaN(date.getTime()) &&\n date.getUTCFullYear() === Number(y) &&\n date.getUTCMonth() + 1 === Number(m) &&\n date.getUTCDate() === Number(d) &&\n date.getUTCHours() === Number(h) &&\n date.getUTCMinutes() === Number(min) &&\n date.getUTCSeconds() === Number(s)\n );\n}\n"]}
export * from "./domainError";
export * from "./corruptedStateError";
export * from "./domainEvent";

@@ -12,2 +13,1 @@ export * from "./domainEntity";

export * from "./workflows";
//# sourceMappingURL=index.d.ts.map

@@ -18,2 +18,3 @@ "use strict";

__exportStar(require("./domainError"), exports);
__exportStar(require("./corruptedStateError"), exports);
__exportStar(require("./domainEvent"), exports);

@@ -20,0 +21,0 @@ __exportStar(require("./domainEntity"), exports);

@@ -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;AAClC,8CAA4B;AAC5B,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,8CAA4B"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,wDAAsC;AACtC,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,oDAAkC;AAClC,8CAA4B;AAC5B,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,8CAA4B","sourcesContent":["export * from \"./domainError\";\nexport * from \"./corruptedStateError\";\nexport * from \"./domainEvent\";\nexport * from \"./domainEntity\";\nexport * from \"./repository\";\nexport * from \"./result\";\nexport * from \"./domainInvariant\";\nexport * from \"./event-bus\";\nexport * from \"./messageRelay\";\nexport * from \"./inMemoryRepository\";\nexport * from \"./switchGuard\";\nexport * from \"./workflows\";\n"]}

@@ -28,2 +28,1 @@ import { Result } from "../result";

}
//# sourceMappingURL=index.d.ts.map

@@ -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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","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { ok, Result } from \"../result\";\nimport { DomainEntity } from \"../domainEntity\";\nimport { DomainEventInterface } from \"../domainEvent\";\nimport { EventWithMetadata, Repository } from \"../repository\";\nimport { randomUUID } from \"node:crypto\";\n\nexport class InMemoryRepository<\n Entity extends DomainEntity<ReturnType<Entity[\"readState\"]>>,\n Event extends DomainEventInterface,\n> implements Repository<Entity, Event> {\n #mapper: (id: string, state: ReturnType<Entity[\"readState\"]>) => Entity;\n #emitter = new EventEmitter({\n captureRejections: true,\n });\n\n constructor(\n mapper: (id: string, state: ReturnType<Entity[\"readState\"]>) => Entity,\n ) {\n this.#mapper = mapper;\n }\n\n protected readonly store = new Map<string, ReturnType<Entity[\"readState\"]>>();\n protected readonly eventStore = new Map<string, EventWithMetadata<Event>[]>();\n\n async save(entity: Entity): Promise<Result<void, Error>> {\n this.store.set(entity.id(), entity.readState());\n return Promise.resolve(ok());\n }\n\n async saveWithEvents(\n entity: Entity,\n domainEvents: Event | Event[],\n ): Promise<Result<void, Error>> {\n this.store.set(entity.id(), entity.readState());\n\n const events = this.eventStore.get(entity.id()) || [];\n\n if (!Array.isArray(domainEvents)) {\n domainEvents = [domainEvents];\n }\n\n const eventsWithMetadata = domainEvents.map((event, index) => {\n return {\n event,\n metadata: {\n id: randomUUID() as string,\n createdAt: new Date().toISOString(),\n offset: events.length + index,\n },\n };\n });\n\n events.push(...eventsWithMetadata);\n\n this.eventStore.set(entity.id(), events);\n\n this.#emitter.emit(\"domainEventsSaved\", entity.id());\n\n return Promise.resolve(ok());\n }\n\n getById(id: string): Promise<Result<Entity | undefined, Error>> {\n const state = this.store.get(id);\n\n if (state === undefined) {\n return Promise.resolve(ok(undefined));\n }\n\n return Promise.resolve(ok(this.#mapper(id, state)));\n }\n\n list(params: {\n limit: number;\n offset: number;\n }): Promise<\n Result<{ limit: number; offset: number; data: Entity[] }, Error>\n > {\n const entities: Entity[] = [];\n\n this.store.forEach((state, id) => {\n entities.push(this.#mapper(id, state));\n });\n\n const paginatedEntities = entities.slice(\n params.offset,\n params.offset + params.limit,\n );\n\n return Promise.resolve(\n ok({\n limit: params.limit,\n offset: params.offset,\n data: paginatedEntities,\n }),\n );\n }\n\n getEvents(\n entityId: string,\n options?: { limit: number; offset: number },\n ): Promise<Result<EventWithMetadata<Event>[], Error>> {\n const paginationOptions = options || { limit: 100, offset: 0 };\n\n const events = this.eventStore.get(entityId) || [];\n\n const paginatedEvents = events.slice(\n paginationOptions.offset,\n paginationOptions.offset + paginationOptions.limit,\n );\n\n return Promise.resolve(ok(paginatedEvents));\n }\n\n getEventsAfter(\n entityId: string,\n eventId: string | undefined,\n limit: number = 50,\n ): Promise<Result<EventWithMetadata<Event>[], Error>> {\n const events = this.eventStore.get(entityId) || [];\n\n let foundPrecedingEventIndex = events.findIndex(\n (event) => event.metadata.id === eventId,\n );\n\n if (foundPrecedingEventIndex === -1) {\n foundPrecedingEventIndex = 0;\n }\n\n const paginatedEvents = events.slice(\n foundPrecedingEventIndex,\n foundPrecedingEventIndex + limit,\n );\n\n return Promise.resolve(ok(paginatedEvents));\n }\n\n onChanges(handler: (entityId: string) => void): void {\n this.#emitter.on(\"domainEventsSaved\", handler);\n }\n}\n"]}

@@ -18,2 +18,1 @@ import { DomainEntity } from "../domainEntity";

}
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messageRelay/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAQ3C,wDAAsC;AACtC,+CAA6B;AAE7B,MAAa,YAAY;IAIJ;IAIA;IACA;IACA;IATnB,aAAa,CAAe;IAE5B,YACmB,UAGhB,EACgB,eAA4C,EAC5C,UAAkB,EAClB,SAAwD;QANxD,eAAU,GAAV,UAAU,CAG1B;QACgB,oBAAe,GAAf,eAAe,CAA6B;QAC5C,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAA+C;QAEzE,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC9B,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YAEH,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;gBACjD,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CACjD,QAAQ,EACR,oBAAoB,CACrB,CAAC;YAEF,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,MAAM,CAAC,KAAK,CAAC;YACrB,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;YAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO;gBACT,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;gBAE3C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAE9C,MAAM,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;oBACpD,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gBAChC,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAA+B;QACrC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAvED,oCAuEC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messageRelay/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAQ3C,wDAAsC;AACtC,+CAA6B;AAE7B,MAAa,YAAY;IAIJ;IAIA;IACA;IACA;IATnB,aAAa,CAAe;IAE5B,YACmB,UAGhB,EACgB,eAA4C,EAC5C,UAAkB,EAClB,SAAwD;QANxD,eAAU,GAAV,UAAU,CAG1B;QACgB,oBAAe,GAAf,eAAe,CAA6B;QAC5C,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAA+C;QAEzE,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC9B,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YAEH,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;gBACjD,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CACjD,QAAQ,EACR,oBAAoB,CACrB,CAAC;YAEF,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,MAAM,CAAC,KAAK,CAAC;YACrB,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;YAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO;gBACT,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;gBAE3C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAE9C,MAAM,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;oBACpD,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gBAChC,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAA+B;QACrC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAvED,oCAuEC","sourcesContent":["import { EventEmitter } from \"node:events\";\n\nimport { DomainEntity } from \"../domainEntity\";\nimport { DomainEventInterface } from \"../domainEvent\";\nimport { DomainEventBusPublisher } from \"../event-bus\";\nimport { Repository } from \"../repository\";\nimport { MessageRelayStateRepository } from \"./interfaces\";\n\nexport * from \"./repository/inMemory\";\nexport * from \"./interfaces\";\n\nexport class MessageRelay {\n #eventEmitter: EventEmitter;\n\n constructor(\n private readonly repository: Repository<\n DomainEntity<unknown>,\n DomainEventInterface\n >,\n private readonly stateRepository: MessageRelayStateRepository,\n private readonly entityName: string,\n private readonly publisher: DomainEventBusPublisher<DomainEventInterface>,\n ) {\n this.#eventEmitter = new EventEmitter({\n captureRejections: true,\n });\n }\n\n async handler(entityId: string) {\n try {\n await this.stateRepository.lock({\n entityId,\n entityName: this.entityName,\n });\n\n const lastEventIdPublished =\n await this.stateRepository.getLastEventIdPublished({\n entityId,\n entityName: this.entityName,\n });\n\n const result = await this.repository.getEventsAfter(\n entityId,\n lastEventIdPublished,\n );\n\n if (result.isErr()) {\n throw result.error;\n }\n\n const eventsToPublish = result.value;\n\n for (let i = 0; i < eventsToPublish.length; i++) {\n const eventToPublish = eventsToPublish[i];\n\n if (!eventToPublish) {\n return;\n }\n\n const { event, metadata } = eventToPublish;\n\n await this.publisher.publish(event, metadata);\n\n await this.stateRepository.updateLastEventIdPublished({\n eventId: metadata.id,\n entityId: event.entityId,\n entityName: this.entityName,\n });\n }\n } catch (err: unknown) {\n this.#eventEmitter.emit(\"error\", err);\n } finally {\n await this.stateRepository.unlock({\n entityId,\n entityName: this.entityName,\n });\n }\n }\n\n onError(handler: (err: unknown) => void) {\n this.#eventEmitter.on(\"error\", handler);\n }\n}\n"]}

@@ -20,2 +20,1 @@ export interface MessageRelayStateRepository {

}
//# sourceMappingURL=interfaces.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/messageRelay/interfaces.ts"],"names":[],"mappings":""}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/messageRelay/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["export interface MessageRelayStateRepository {\n lock(params: { entityId: string; entityName: string }): Promise<void>;\n\n unlock(params: { entityId: string; entityName: string }): Promise<void>;\n\n getLastEventIdPublished(params: {\n entityId: string;\n entityName: string;\n }): Promise<string | undefined>;\n\n updateLastEventIdPublished(params: {\n eventId: string;\n entityId: string;\n entityName: string;\n }): Promise<void>;\n}\n"]}

@@ -22,2 +22,1 @@ import { MessageRelayStateRepository } from "../interfaces";

}
//# sourceMappingURL=inMemory.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"inMemory.js","sourceRoot":"","sources":["../../../src/messageRelay/repository/inMemory.ts"],"names":[],"mappings":";;;AAEA,MAAa,mCAAmC;IACtC,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAElD,KAAK,CAAC,IAAI,CAAC,EACT,QAAQ,EACR,UAAU,GAIX;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,KAAK,EAAE,gBAAgB,KAAK,aAAa,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,qDAAqD,GAAG,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,GAAG,CAAC,KAAK,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;YAC9D,gBAAgB,EAAE,aAAa;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EACX,QAAQ,EACR,UAAU,GAIX;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,6DAA6D,GAAG,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,EAC5B,QAAQ,EACR,UAAU,GAIX;QACC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE,kBAAkB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,UAAU,GAKX;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,6DAA6D,GAAG,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AA1ED,kFA0EC;AAWD,SAAS,KAAK,CAAC,QAAgB,EAAE,UAAkB;IACjD,OAAO,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AACrC,CAAC"}
{"version":3,"file":"inMemory.js","sourceRoot":"","sources":["../../../src/messageRelay/repository/inMemory.ts"],"names":[],"mappings":";;;AAEA,MAAa,mCAAmC;IACtC,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAElD,KAAK,CAAC,IAAI,CAAC,EACT,QAAQ,EACR,UAAU,GAIX;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,KAAK,EAAE,gBAAgB,KAAK,aAAa,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,qDAAqD,GAAG,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,GAAG,CAAC,KAAK,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;YAC9D,gBAAgB,EAAE,aAAa;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EACX,QAAQ,EACR,UAAU,GAIX;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,6DAA6D,GAAG,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,EAC5B,QAAQ,EACR,UAAU,GAIX;QACC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE,kBAAkB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,UAAU,GAKX;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,6DAA6D,GAAG,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AA1ED,kFA0EC;AAWD,SAAS,KAAK,CAAC,QAAgB,EAAE,UAAkB;IACjD,OAAO,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AACrC,CAAC","sourcesContent":["import { MessageRelayStateRepository } from \"../interfaces\";\n\nexport class InMemoryMessageRelayStateRepository implements MessageRelayStateRepository {\n private store = new Map<Key, MessageRelayState>();\n\n async lock({\n entityId,\n entityName,\n }: {\n entityId: string;\n entityName: string;\n }) {\n const key = toKey(entityId, entityName);\n const state = this.store.get(key);\n\n if (state?.publishingStatus === \"IN_PROGRESS\") {\n throw new Error(\n `[MESSAGE RELAY REPOSITORY]: Lock already held for ${key}`,\n );\n }\n\n this.store.set(key, {\n ...(state ?? { entityId, entityName, lastEventPublished: \"\" }),\n publishingStatus: \"IN_PROGRESS\",\n });\n }\n\n async unlock({\n entityId,\n entityName,\n }: {\n entityId: string;\n entityName: string;\n }) {\n const key = toKey(entityId, entityName);\n const state = this.store.get(key);\n\n if (!state) {\n throw new Error(\n `[MESSAGE RELAY REPOSITORY]: No publishing state found for ${key}`,\n );\n }\n\n this.store.set(key, { ...state, publishingStatus: \"IDLE\" });\n }\n\n async getLastEventIdPublished({\n entityId,\n entityName,\n }: {\n entityId: string;\n entityName: string;\n }): Promise<string | undefined> {\n return this.store.get(toKey(entityId, entityName))?.lastEventPublished;\n }\n\n async updateLastEventIdPublished({\n eventId,\n entityId,\n entityName,\n }: {\n eventId: string;\n entityId: string;\n entityName: string;\n }) {\n const key = toKey(entityId, entityName);\n const state = this.store.get(key);\n\n if (!state) {\n throw new Error(\n `[MESSAGE RELAY REPOSITORY]: No publishing state found for ${key}`,\n );\n }\n\n this.store.set(key, { ...state, lastEventPublished: eventId });\n }\n}\n\ninterface MessageRelayState {\n entityId: string;\n entityName: string;\n lastEventPublished: string;\n publishingStatus: \"IDLE\" | \"IN_PROGRESS\" | \"FAILED\";\n}\n\ntype Key = `${string}:${string}`;\n\nfunction toKey(entityId: string, entityName: string): Key {\n return `${entityName}:${entityId}`;\n}\n"]}

@@ -32,2 +32,1 @@ import { Result } from "./result/index";

}
//# sourceMappingURL=repository.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":""}
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"","sourcesContent":["import { Result } from \"./result/index\";\n\nimport { DomainEntity } from \"./domainEntity\";\nimport { DomainEventInterface } from \"./domainEvent\";\n\nexport interface EventWithMetadata<Event extends DomainEventInterface> {\n event: Event;\n metadata: EventMetadata;\n}\n\nexport interface EventMetadata {\n id: string;\n offset?: number;\n createdAt: string;\n}\nexport interface Repository<\n Entity extends DomainEntity<ReturnType<Entity[\"readState\"]>>,\n Event extends DomainEventInterface,\n> {\n save(entity: Entity): Promise<Result<void, Error>>;\n\n saveWithEvents(\n entity: Entity,\n domainEvents: DomainEventInterface | DomainEventInterface[],\n ): Promise<Result<void, Error>>;\n\n getById(id: string): Promise<Result<Entity | undefined, Error>>;\n\n list(params: {\n limit: number;\n offset: number;\n }): Promise<Result<{ limit: number; offset: number; data: Entity[] }, Error>>;\n\n getEvents(\n entityId: string,\n options?: { limit: number; offset: number },\n ): Promise<Result<EventWithMetadata<Event>[], Error>>;\n\n getEventsAfter(\n entityId: string,\n eventId: string | undefined,\n limit?: number,\n ): Promise<Result<EventWithMetadata<Event>[], Error>>;\n\n onChanges(handler: (entityId: string) => void): void;\n}\n"]}

@@ -55,2 +55,1 @@ import { ErrorConfig } from "./resultError";

}
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/result/index.ts"],"names":[],"mappings":";;;AAIA,gBAEC;AAKD,kBAEC;AAbD,+CAAyD;AAIzD,SAAgB,EAAE,CAAe,KAAQ;IACvC,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAKD,SAAgB,GAAG,CAAyB,GAAM;IAChD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAuCD,MAAa,EAAE;IACQ;IAArB,YAAqB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEjC,IAAI;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,CAAe;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,IAAI,yBAAW,CAAC,oCAAoC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;CACF;AAlBD,gBAkBC;AAED,MAAa,GAAG;IACO;IAArB,YAAqB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEjC,IAAI;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,MAAoB;QAChC,MAAM,IAAI,yBAAW,CAAC,kCAAkC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB,CAAC,CAAe;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAlBD,kBAkBC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/result/index.ts"],"names":[],"mappings":";;;AAIA,gBAEC;AAKD,kBAEC;AAbD,+CAAyD;AAIzD,SAAgB,EAAE,CAAe,KAAQ;IACvC,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAKD,SAAgB,GAAG,CAAyB,GAAM;IAChD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAuCD,MAAa,EAAE;IACQ;IAArB,YAAqB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEjC,IAAI;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,CAAe;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,IAAI,yBAAW,CAAC,oCAAoC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;CACF;AAlBD,gBAkBC;AAED,MAAa,GAAG;IACO;IAArB,YAAqB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEjC,IAAI;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,MAAoB;QAChC,MAAM,IAAI,yBAAW,CAAC,kCAAkC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB,CAAC,CAAe;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAlBD,kBAkBC","sourcesContent":["import { ErrorConfig, ResultError } from \"./resultError\";\n\nexport function ok<T, E = never>(value: T): Ok<T, E>;\nexport function ok<T extends void = void, E = never>(value: void): Ok<void, E>;\nexport function ok<T, E = never>(value: T): Ok<T, E> {\n return new Ok(value);\n}\n\nexport function err<T = never, E extends string = string>(err: E): Err<T, E>;\nexport function err<T = never, E = unknown>(err: E): Err<T, E>;\nexport function err<T = never, E extends void = void>(err: void): Err<T, void>;\nexport function err<T = never, E = unknown>(err: E): Err<T, E> {\n return new Err(err);\n}\n\nexport type Result<T, E> = Ok<T, E> | Err<T, E>;\n\nexport interface IResult<T, E> {\n /**\n * Used to check if a `Result` is an `OK`\n *\n * @returns `true` if the result is an `OK` variant of Result\n */\n isOk(): this is Ok<T, E>;\n\n /**\n * Used to check if a `Result` is an `Err`\n *\n * @returns `true` if the result is an `Err` variant of Result\n */\n isErr(): this is Err<T, E>;\n\n /**\n * **This method is unsafe, and should only be used in a test environments**\n *\n * Takes a `Result<T, E>` and returns a `T` when the result is an `Ok`, otherwise it throws a custom object.\n *\n * @param config\n */\n _unsafeUnwrap(config?: ErrorConfig): T;\n\n /**\n * **This method is unsafe, and should only be used in a test environments**\n *\n * takes a `Result<T, E>` and returns a `E` when the result is an `Err`,\n * otherwise it throws a custom object.\n *\n * @param config\n */\n _unsafeUnwrapErr(config?: ErrorConfig): E;\n}\n\nexport class Ok<T, E> implements IResult<T, E> {\n constructor(readonly value: T) {}\n\n isOk(): this is Ok<T, E> {\n return true;\n }\n\n isErr(): this is Err<T, E> {\n return !this.isOk();\n }\n\n _unsafeUnwrap(_?: ErrorConfig): T {\n return this.value;\n }\n\n _unsafeUnwrapErr(config?: ErrorConfig): E {\n throw new ResultError(\"Called `_unsafeUnwrapErr` on an Ok\", this, config);\n }\n}\n\nexport class Err<T, E> implements IResult<T, E> {\n constructor(readonly error: E) {}\n\n isOk(): this is Ok<T, E> {\n return false;\n }\n\n isErr(): this is Err<T, E> {\n return !this.isOk();\n }\n\n _unsafeUnwrap(config?: ErrorConfig): T {\n throw new ResultError(\"Called `_unsafeUnwrap` on an Err\", this, config);\n }\n\n _unsafeUnwrapErr(_?: ErrorConfig): E {\n return this.error;\n }\n}\n"]}

@@ -15,2 +15,1 @@ import { Result } from ".";

}
//# sourceMappingURL=resultError.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"resultError.js","sourceRoot":"","sources":["../../src/result/resultError.ts"],"names":[],"mappings":";;;AAMA,MAAM,kBAAkB,GAAgB;IACtC,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF,MAAa,WAAkB,SAAQ,KAAK;IACnC,IAAI,CAQL;IAEN,YACE,OAAe,EACf,MAAoB,EACpB,SAAsB,kBAAkB;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAEhC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YACrC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,gBAAgB,CAAC;QACrD,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AA9BD,kCA8BC"}
{"version":3,"file":"resultError.js","sourceRoot":"","sources":["../../src/result/resultError.ts"],"names":[],"mappings":";;;AAMA,MAAM,kBAAkB,GAAgB;IACtC,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF,MAAa,WAAkB,SAAQ,KAAK;IACnC,IAAI,CAQL;IAEN,YACE,OAAe,EACf,MAAoB,EACpB,SAAsB,kBAAkB;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAEhC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YACrC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,gBAAgB,CAAC;QACrD,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AA9BD,kCA8BC","sourcesContent":["import { Result } from \".\";\n\nexport interface ErrorConfig {\n withStackTrace: boolean;\n}\n\nconst defaultErrorConfig: ErrorConfig = {\n withStackTrace: true,\n};\n\nexport class ResultError<T, E> extends Error {\n public data:\n | {\n type: \"Ok\";\n value: T;\n }\n | {\n type: \"Err\";\n value: E;\n };\n\n constructor(\n message: string,\n result: Result<T, E>,\n config: ErrorConfig = defaultErrorConfig,\n ) {\n super(message);\n\n this.name = \"UnsafeUnwrapError\";\n\n this.data = result.isOk()\n ? { type: \"Ok\", value: result.value }\n : { type: \"Err\", value: result.error };\n\n if (config.withStackTrace) {\n this.stack = new Error().stack || \"No stack found\";\n }\n\n Object.setPrototypeOf(this, ResultError.prototype);\n }\n}\n"]}
export declare function switchGuard(value: never, message?: string): never;
//# sourceMappingURL=switchGuard.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"switchGuard.js","sourceRoot":"","sources":["../src/switchGuard.ts"],"names":[],"mappings":";;AAQA,kCAEC;AAVD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,KAAY,EAAE,OAAgB;IACxD,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,qBAAqB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC"}
{"version":3,"file":"switchGuard.js","sourceRoot":"","sources":["../src/switchGuard.ts"],"names":[],"mappings":";;AAQA,kCAEC;AAVD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,KAAY,EAAE,OAAgB;IACxD,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,qBAAqB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["function safeStringify(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nexport function switchGuard(value: never, message?: string): never {\n throw new Error(message ?? `Unexpected value: ${safeStringify(value)}`);\n}\n"]}

@@ -31,2 +31,1 @@ import { WorkflowState } from "../interfaces";

}
//# sourceMappingURL=graphWorkflow.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"graphWorkflow.js","sourceRoot":"","sources":["../../../src/workflows/graph/graphWorkflow.ts"],"names":[],"mappings":";;;AAEA,+CAAsE;AAGtE,MAAa,aAAa;IACxB,WAAW,CAA0B;IACrC,SAAS,CAAqC;IAC9C,MAAM,CAAuB;IAC7B,iBAAiB,CAKP;IAEV,YAAY,MAMX;QACC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAElC,IAAI,CAAC,MAAM,GAAG;YACZ,EAAE;YACF,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,EAAmB;YACnE,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,OAAoD;QAClE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;QAEnC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,2GAA2G;QAC3G,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED,SAAS,CACP,OAKS;QAET,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM;YACN,QAAQ,EAAE,CAAC,IAAuB,EAAE,EAAE,CACpC,IAAA,yBAAW,EACT,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EACvD,IAAI,CACL;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAvGD,sCAuGC"}
{"version":3,"file":"graphWorkflow.js","sourceRoot":"","sources":["../../../src/workflows/graph/graphWorkflow.ts"],"names":[],"mappings":";;;AAEA,+CAAsE;AAGtE,MAAa,aAAa;IACxB,WAAW,CAA0B;IACrC,SAAS,CAAqC;IAC9C,MAAM,CAAuB;IAC7B,iBAAiB,CAKP;IAEV,YAAY,MAMX;QACC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QAElC,IAAI,CAAC,MAAM,GAAG;YACZ,EAAE;YACF,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,EAAmB;YACnE,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,OAAoD;QAClE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;QAEnC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,2GAA2G;QAC3G,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED,SAAS,CACP,OAKS;QAET,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM;YACN,QAAQ,EAAE,CAAC,IAAuB,EAAE,EAAE,CACpC,IAAA,yBAAW,EACT,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EACvD,IAAI,CACL;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAvGD,sCAuGC","sourcesContent":["import { WorkflowState } from \"../interfaces\";\nimport { WorkflowStateRepository } from \"../repository/interfaces\";\nimport { Graph, renderGraph, RenderTreeOptions } from \"./renderGraph\";\nimport { WorkflowNode } from \"./workflowNode\";\n\nexport class GraphWorkflow<Input, Output> {\n #repository: WorkflowStateRepository;\n #rootNode: WorkflowNode<any, any> | undefined;\n #state: WorkflowState<Input>;\n #onChangesHandler: (\n event:\n | { step: string; status: \"IN_PROGRESS\" }\n | { step: string; status: \"DONE\" }\n | { step: string; status: \"FAILED\"; error: Error },\n ) => void;\n\n constructor(params: {\n id: string;\n input: Input;\n name: string;\n repository: WorkflowStateRepository;\n stepResults?: Map<string, unknown>;\n }) {\n const { id, name, input, repository, stepResults } = params;\n this.#repository = repository;\n this.#onChangesHandler = () => {};\n\n this.#state = {\n id,\n name,\n input,\n status: \"TODO\",\n stepResults: stepResults ? stepResults : new Map<string, unknown>(),\n error: undefined,\n };\n }\n\n get state(): WorkflowState<Input> {\n return this.#state;\n }\n\n protected build(builder: (input: Input) => WorkflowNode<any, Output>): void {\n this.#rootNode = builder(this.#state.input);\n\n this.#rootNode.setContext(this.#state);\n }\n\n async execute() {\n if (!this.#rootNode) {\n return;\n }\n\n this.#state.status = \"IN_PROGRESS\";\n\n await this.#repository.save(this.#state);\n\n const output = await this.#rootNode.execute();\n\n if (this.state.status !== \"FAILED\") {\n this.#state.status = \"DONE\";\n }\n\n await this.#repository.save(this.#state);\n\n // We do this after having saved the state. This way if the onChangesHandler throw we don't lose the state.\n if (this.state.status !== \"FAILED\") {\n this.#onChangesHandler({ step: this.name, status: this.#state.status });\n }\n\n return output as Output;\n }\n\n onChanges(\n handler: (\n event:\n | { step: string; status: \"IN_PROGRESS\" }\n | { step: string; status: \"DONE\" }\n | { step: string; status: \"FAILED\"; error: Error },\n ) => void,\n ) {\n this.#onChangesHandler = handler;\n this.#rootNode?.onChanges(handler);\n }\n\n getGraph(): Graph {\n const child = this.#rootNode?.getGraph();\n\n const childs: Graph[] = [];\n\n if (child) {\n childs.push(child);\n }\n\n return {\n name: this.name,\n status: this.#state.status,\n childs,\n toString: (opts: RenderTreeOptions) =>\n renderGraph(\n { name: this.name, status: this.#state.status, childs },\n opts,\n ),\n };\n }\n\n get name(): string {\n return this.#state.name;\n }\n}\n"]}
export { GraphWorkflow } from "./graphWorkflow";
export { WorkflowNode } from "./workflowNode";
export { type RenderTreeOptions, type Graph } from "./renderGraph";
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/graph/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/graph/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA","sourcesContent":["export { GraphWorkflow } from \"./graphWorkflow\";\nexport { WorkflowNode } from \"./workflowNode\";\nexport { type RenderTreeOptions, type Graph } from \"./renderGraph\";\n"]}

@@ -17,2 +17,1 @@ import { WorkflowStatus } from "../interfaces";

export {};
//# sourceMappingURL=renderGraph.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"renderGraph.js","sourceRoot":"","sources":["../../../src/workflows/graph/renderGraph.ts"],"names":[],"mappings":";;AAwCA,kCAYC;AAhCD,MAAM,UAAU,GAA8B;IAC5C,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAClD,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;CACpD,CAAC;AAEF,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,cAAc,GAAmC;IACrD,IAAI,EAAE,UAAU,EAAE,OAAO;IACzB,WAAW,EAAE,gBAAgB,EAAE,qBAAqB;IACpD,IAAI,EAAE,UAAU,EAAE,QAAQ;IAC1B,MAAM,EAAE,UAAU,EAAE,MAAM;CAC3B,CAAC;AASF,SAAgB,WAAW,CACzB,KAAY,EACZ,UAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAoB;QAChC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACxC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;KAC9B,CAAC;IAEF,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CACjB,KAAY,EACZ,MAAc,EACd,MAAe,EACf,MAAe,EACf,IAAqB;IAErB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;QACrB,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE;QAC7D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAEvC,MAAM,WAAW,GACf,MAAM;QACN,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAExE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,IAAI,CACR,UAAU,CACR,KAAK,EACL,WAAW,EACX,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAC7B,KAAK,EACL,IAAI,CACL,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
{"version":3,"file":"renderGraph.js","sourceRoot":"","sources":["../../../src/workflows/graph/renderGraph.ts"],"names":[],"mappings":";;AAwCA,kCAYC;AAhCD,MAAM,UAAU,GAA8B;IAC5C,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAClD,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;CACpD,CAAC;AAEF,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,cAAc,GAAmC;IACrD,IAAI,EAAE,UAAU,EAAE,OAAO;IACzB,WAAW,EAAE,gBAAgB,EAAE,qBAAqB;IACpD,IAAI,EAAE,UAAU,EAAE,QAAQ;IAC1B,MAAM,EAAE,UAAU,EAAE,MAAM;CAC3B,CAAC;AASF,SAAgB,WAAW,CACzB,KAAY,EACZ,UAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAoB;QAChC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACxC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;KAC9B,CAAC;IAEF,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CACjB,KAAY,EACZ,MAAc,EACd,MAAe,EACf,MAAe,EACf,IAAqB;IAErB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;QACrB,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE;QAC7D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAEvC,MAAM,WAAW,GACf,MAAM;QACN,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAExE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,IAAI,CACR,UAAU,CACR,KAAK,EACL,WAAW,EACX,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAC7B,KAAK,EACL,IAAI,CACL,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { WorkflowStatus } from \"../interfaces\";\n\nexport type Graph = {\n name: string;\n childs: Graph[];\n status: WorkflowStatus;\n toString(options?: RenderTreeOptions): string;\n};\n\ntype TreeStyle = \"thin\" | \"heavy\";\n\nexport type RenderTreeOptions = {\n indent?: number; // characters between sibling columns (min 2, default 4)\n verticalSpace?: boolean; // add a skeleton row before each child (default true)\n style?: TreeStyle; // glyph set (default \"thin\")\n color?: boolean; // colorize node names by status (default false)\n};\n\ntype Glyphs = { tee: string; ell: string; pipe: string; dash: string };\n\nconst GLYPH_SETS: Record<TreeStyle, Glyphs> = {\n thin: { tee: \"├\", ell: \"└\", pipe: \"│\", dash: \"─\" },\n heavy: { tee: \"┣\", ell: \"┗\", pipe: \"┃\", dash: \"━\" },\n};\n\nconst ANSI_RESET = \"\\x1b[0m\";\nconst ANSI_BY_STATUS: Record<WorkflowStatus, string> = {\n TODO: \"\\x1b[90m\", // gray\n IN_PROGRESS: \"\\x1b[38;5;208m\", // orange (256-color)\n DONE: \"\\x1b[32m\", // green\n FAILED: \"\\x1b[31m\", // red\n};\n\ntype ResolvedOptions = {\n indent: number;\n verticalSpace: boolean;\n glyphs: Glyphs;\n color: boolean;\n};\n\nexport function renderGraph(\n graph: Graph,\n options: RenderTreeOptions = {},\n): string {\n const resolved: ResolvedOptions = {\n indent: Math.max(2, options.indent ?? 4),\n verticalSpace: options.verticalSpace ?? true,\n glyphs: GLYPH_SETS[options.style ?? \"thin\"],\n color: options.color ?? false,\n };\n\n return renderTree(graph, \"\", true, true, resolved);\n}\n\nfunction renderTree(\n graph: Graph,\n prefix: string,\n isLast: boolean,\n isRoot: boolean,\n opts: ResolvedOptions,\n): string {\n const { indent, verticalSpace, glyphs } = opts;\n const dashes = glyphs.dash.repeat(indent - 2);\n const branch = isRoot\n ? \"\"\n : (isLast ? glyphs.ell : glyphs.tee) + dashes + \" \";\n const name = opts.color\n ? `${ANSI_BY_STATUS[graph.status]}${graph.name}${ANSI_RESET}`\n : graph.name;\n const lines = [prefix + branch + name];\n\n const childPrefix =\n prefix +\n (isRoot ? \"\" : (isLast ? \" \" : glyphs.pipe) + \" \".repeat(indent - 1));\n\n graph.childs.forEach((child, i) => {\n if (verticalSpace) {\n lines.push(childPrefix + glyphs.pipe);\n }\n lines.push(\n renderTree(\n child,\n childPrefix,\n i === graph.childs.length - 1,\n false,\n opts,\n ),\n );\n });\n\n return lines.join(\"\\n\");\n}\n"]}

@@ -30,2 +30,1 @@ import { WorkflowState } from "../interfaces";

export {};
//# sourceMappingURL=workflowNode.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"workflowNode.js","sourceRoot":"","sources":["../../../src/workflows/graph/workflowNode.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"workflowNode.js","sourceRoot":"","sources":["../../../src/workflows/graph/workflowNode.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { WorkflowState, WorkflowStatus } from \"../interfaces\";\nimport { Graph, renderGraph, RenderTreeOptions } from \"./renderGraph\";\n\ntype ChildrenOutputs<C extends Record<string, WorkflowNode<any, any>>> = {\n [K in keyof C]: C[K] extends WorkflowNode<any, infer O> ? O : never;\n};\n\nexport class WorkflowNode<\n Children extends Record<string, WorkflowNode<any, any>>,\n Output,\n> {\n #name: string;\n #children: Children;\n #handler: (input: ChildrenOutputs<Children>) => Promise<Output>;\n #context: WorkflowState<unknown>;\n #status: WorkflowStatus;\n\n #onChanges: (\n event:\n | { step: string; status: \"IN_PROGRESS\" }\n | { step: string; status: \"DONE\" }\n | { step: string; status: \"FAILED\"; error: Error },\n ) => void;\n\n constructor(params: {\n name: string;\n children: Children;\n handler: (input: ChildrenOutputs<Children>) => Promise<Output>;\n }) {\n this.#name = params.name;\n this.#children = params.children;\n this.#handler = params.handler;\n this.#onChanges = () => {};\n this.#status = \"TODO\";\n this.#context = {\n // Set a default context\n id: randomUUID(),\n name: this.name,\n status: \"TODO\",\n stepResults: new Map<string, unknown>(),\n input: {},\n error: undefined,\n };\n }\n\n onChanges(\n handler: (\n event:\n | { step: string; status: \"IN_PROGRESS\" }\n | { step: string; status: \"DONE\" }\n | { step: string; status: \"FAILED\"; error: Error },\n ) => void,\n ) {\n this.#onChanges = handler;\n\n Object.entries(this.#children).map(async ([_name, child]) => {\n child.onChanges(this.#onChanges);\n });\n }\n\n setContext(context: WorkflowState<unknown>): void {\n this.#context = context;\n\n Object.entries(this.#children).map(async ([_name, child]) => {\n child.setContext(context);\n });\n }\n\n async execute(): Promise<Output> {\n if (this.#context.stepResults.has(this.#name)) {\n this.#status = \"DONE\";\n this.#onChanges({ step: this.#name, status: \"DONE\" });\n return this.#context.stepResults.get(this.#name) as Output;\n }\n\n const entries = await Promise.all(\n Object.entries(this.#children).map(async ([name, child]) => {\n return [name, await child.execute()] as const;\n }),\n );\n\n const input = Object.fromEntries(entries) as ChildrenOutputs<Children>;\n\n this.#status = \"IN_PROGRESS\";\n\n this.#onChanges({ step: this.#name, status: \"IN_PROGRESS\" });\n\n try {\n const output = await this.#handler(input);\n\n this.#context.stepResults.set(this.#name, output);\n this.#status = \"DONE\";\n\n this.#onChanges({ step: this.#name, status: \"DONE\" });\n\n return output;\n } catch (err: unknown) {\n const error: Error = this.#handleError(err);\n throw error;\n }\n }\n\n #handleError(err: unknown): Error {\n let message = \"unknown error\";\n let name = \"Unknown Error\";\n\n if (err instanceof Error) {\n message = err.message;\n name = err.name;\n }\n\n const error = new Error(\n `Step: ${this.#name} failed with: ${name} ${message}`,\n {\n cause: err,\n },\n );\n\n // Mark the workflow as failed\n this.#context.status = \"FAILED\";\n\n // Mark this node as failed\n this.#status = \"FAILED\";\n\n this.#context.error = {\n step: this.#name,\n error: error.message,\n name: error.name,\n };\n\n this.#onChanges({ step: this.#name, status: \"FAILED\", error });\n\n return error;\n }\n\n getGraph(): Graph {\n const childs = Object.values(this.#children).map((child) =>\n child.getGraph(),\n );\n\n return {\n name: this.#name,\n status: this.#status,\n childs,\n toString: (opts?: RenderTreeOptions) =>\n renderGraph({ name: this.#name, status: this.#status, childs }, opts),\n };\n }\n\n get name(): string {\n return this.#name;\n }\n}\n"]}

@@ -5,2 +5,1 @@ export * from "./step";

export * from "./interfaces";
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB;AACxB,+CAA6B;AAC7B,+CAA6B"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB;AACxB,+CAA6B;AAC7B,+CAA6B","sourcesContent":["export * from \"./step\";\nexport * from \"./graph\";\nexport * from \"./repository\";\nexport * from \"./interfaces\";\n"]}

@@ -14,2 +14,1 @@ export interface WorkflowState<Input> {

export type WorkflowStatus = "TODO" | "IN_PROGRESS" | "FAILED" | "DONE";
//# sourceMappingURL=interfaces.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/workflows/interfaces.ts"],"names":[],"mappings":""}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/workflows/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["export interface WorkflowState<Input> {\n id: string;\n name: string;\n input: Input;\n stepResults: Map<string, unknown>;\n error: { step: string; error: string; name: string } | undefined;\n status: WorkflowStatus;\n}\n\nexport type WorkflowStatus = \"TODO\" | \"IN_PROGRESS\" | \"FAILED\" | \"DONE\";\n"]}
export { InMemoryWorkflowStateRepository } from "./inMemoryWorkflowStateRepository";
export { type WorkflowStateRepository } from "./interfaces";
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/repository/index.ts"],"names":[],"mappings":";;;AAAA,qFAAoF;AAA3E,kJAAA,+BAA+B,OAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/repository/index.ts"],"names":[],"mappings":";;;AAAA,qFAAoF;AAA3E,kJAAA,+BAA+B,OAAA","sourcesContent":["export { InMemoryWorkflowStateRepository } from \"./inMemoryWorkflowStateRepository\";\nexport { type WorkflowStateRepository } from \"./interfaces\";\n"]}

@@ -9,2 +9,1 @@ import { WorkflowState } from "../interfaces";

}
//# sourceMappingURL=inMemoryWorkflowStateRepository.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"inMemoryWorkflowStateRepository.js","sourceRoot":"","sources":["../../../src/workflows/repository/inMemoryWorkflowStateRepository.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAC1C,OAAO,CAAsC;IAE7C;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA6B;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;CACF;AAfD,0EAeC"}
{"version":3,"file":"inMemoryWorkflowStateRepository.js","sourceRoot":"","sources":["../../../src/workflows/repository/inMemoryWorkflowStateRepository.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAC1C,OAAO,CAAsC;IAE7C;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA6B;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;CACF;AAfD,0EAeC","sourcesContent":["import { WorkflowState } from \"../interfaces\";\n\nimport { WorkflowStateRepository } from \"./interfaces\";\n\nexport class InMemoryWorkflowStateRepository implements WorkflowStateRepository {\n #states: Map<string, WorkflowState<unknown>>;\n\n constructor() {\n this.#states = new Map<string, WorkflowState<unknown>>();\n }\n\n async save(state: WorkflowState<unknown>): Promise<void> {\n this.#states.set(state.id, structuredClone(state));\n }\n\n async getById(id: string): Promise<WorkflowState<unknown> | undefined> {\n const state = this.#states.get(id);\n return state ? structuredClone(state) : undefined;\n }\n}\n"]}

@@ -6,2 +6,1 @@ import { WorkflowState } from "../interfaces";

}
//# sourceMappingURL=interfaces.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/workflows/repository/interfaces.ts"],"names":[],"mappings":""}
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/workflows/repository/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { WorkflowState } from \"../interfaces\";\n\nexport interface WorkflowStateRepository {\n save: (state: WorkflowState<unknown>) => Promise<void>;\n getById: (id: string) => Promise<WorkflowState<unknown> | undefined>;\n}\n"]}

@@ -43,2 +43,1 @@ import { EventEmitter } from "node:events";

export type PreviousStepHandler<Output> = () => Promise<Output>;
//# sourceMappingURL=composableWorkflowStep.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"composableWorkflowStep.js","sourceRoot":"","sources":["../../../src/workflows/step/composableWorkflowStep.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"composableWorkflowStep.js","sourceRoot":"","sources":["../../../src/workflows/step/composableWorkflowStep.ts"],"names":[],"mappings":";;;AACA,iDAAoE;AAIpE,MAAa,sBAAsB;IACjC,KAAK,CAAS;IACd,QAAQ,CAA6B;IACrC,aAAa,CAA6B;IAC1C,cAAc,CAAyB;IACvC,OAAO,CAAU;IACjB,aAAa,CAAe;IAE5B,YAAY,MAMX;QACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,OAAO,CAAa,MAGnB;QACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAEjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,OAAO,IAAI,sBAAsB,CAAC;YAChC,IAAI;YACJ,OAAO;YACP,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAKjB,MAGD;QACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAElC,OAAO,IAAI,sBAAsB,CAAC;YAChC,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,OAAO,EAAE,KAAK,EAAE,KAAa,EAAuC,EAAE;gBACpE,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAiB,EACpC,QAAQ,EACR,KAAK,EACL,IAAI,CAAC,aAAa,CACnB,CAAC;gBAEF,OAAO,MAAoC,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CACX,UAAkD;QAElD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,aAAa,CAAC;QAE3C,qBAAqB;QACrB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAExE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAErC,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,gDAAgD;YAChD,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,GAAY;QACvB,IAAI,OAAO,GAAG,eAAe,CAAC;QAC9B,IAAI,IAAI,GAAG,eAAe,CAAC;QAE3B,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YACtB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,SAAS,IAAI,CAAC,KAAK,iBAAiB,IAAI,IAAI,OAAO,EAAE,EACrD;YACE,KAAK,EAAE,GAAG;SACX,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC;QAEtC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG;YAC1B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,QAAQ;YAChB,KAAK;SACN,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,SAAS,CACP,OAKS;QAET,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IAClC,CAAC;CACF;AA3KD,wDA2KC","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { aggregateFunction, AggregateOutput } from \"./parallelStep\";\nimport { WorkflowState } from \"../interfaces\";\nimport { WorkflowStateRepository } from \"../repository/interfaces\";\n\nexport class ComposableWorkflowStep<Input, Output> {\n #name: string;\n #handler: StepHandler<Input, Output>;\n #previousStep: PreviousStepHandler<Input>;\n #workflowState: WorkflowState<unknown>;\n #isLast: boolean;\n #eventEmitter: EventEmitter;\n\n constructor(params: {\n name: string;\n handler: StepHandler<Input, Output>;\n previousStep: PreviousStepHandler<Input>;\n workflowState: WorkflowState<unknown>;\n eventEmitter: EventEmitter;\n }) {\n const { name, handler, previousStep, workflowState, eventEmitter } = params;\n this.#name = name;\n this.#handler = handler;\n this.#previousStep = previousStep;\n this.#workflowState = workflowState;\n this.#isLast = true;\n this.#eventEmitter = eventEmitter;\n }\n\n addStep<NextOutput>(params: {\n name: string;\n handler: StepHandler<Output, NextOutput>;\n }): ComposableWorkflowStep<Output, NextOutput> {\n const { name, handler } = params;\n\n this.#isLast = false;\n\n return new ComposableWorkflowStep({\n name,\n handler,\n previousStep: () => this.execute(),\n workflowState: this.#workflowState,\n eventEmitter: this.#eventEmitter,\n });\n }\n\n addStepWithSubtasks<\n const Substasks extends readonly {\n name: string;\n handler: (input: Output) => Promise<unknown>;\n }[],\n >(params: {\n name: string;\n subtasks: Substasks;\n }): ComposableWorkflowStep<Output, AggregateOutput<Substasks>> {\n const { name, subtasks } = params;\n\n return new ComposableWorkflowStep({\n workflowState: this.#workflowState,\n eventEmitter: this.#eventEmitter,\n name: name,\n previousStep: () => this.execute(),\n handler: async (input: Output): Promise<AggregateOutput<Substasks>> => {\n const result = await aggregateFunction(\n subtasks,\n input,\n this.#eventEmitter,\n );\n\n return result as AggregateOutput<Substasks>;\n },\n });\n }\n\n async execute(\n repository?: Pick<WorkflowStateRepository, \"save\">,\n ): Promise<Output> {\n this.#workflowState.status = \"IN_PROGRESS\";\n\n // Save initial state\n if (repository) {\n await repository.save(this.#workflowState);\n }\n\n let result = this.#workflowState.stepResults.get(this.#name);\n\n if (result !== undefined) {\n return result as Output;\n }\n\n const input = await this.#previousStep();\n\n this.#eventEmitter.emit(\"change\", {\n step: this.#name,\n status: \"IN_PROGRESS\",\n });\n\n try {\n const output = await this.#handler(input);\n\n this.#workflowState.stepResults.set(this.#name, output);\n\n if (this.#isLast) {\n this.#workflowState.status = \"DONE\";\n }\n\n this.#eventEmitter.emit(\"change\", { step: this.#name, status: \"DONE\" });\n\n return output;\n } catch (err: unknown) {\n const error = this.#handleError(err);\n\n throw error;\n } finally {\n // Save state from either a success or a failure\n if (repository) {\n await repository.save(this.#workflowState);\n }\n }\n }\n\n #handleError(err: unknown): Error {\n let message = \"unknown error\";\n let name = \"Unknown Error\";\n\n if (err instanceof Error) {\n message = err.message;\n name = err.name;\n }\n\n const error = new Error(\n `Step: ${this.#name} failed with: ${name} ${message}`,\n {\n cause: err,\n },\n );\n\n this.#workflowState.status = \"FAILED\";\n\n this.#workflowState.error = {\n step: this.#name,\n error: error.message,\n name: error.name,\n };\n\n this.#eventEmitter.emit(\"change\", {\n step: this.#name,\n status: \"FAILED\",\n error,\n });\n\n return error;\n }\n\n results(): Map<string, unknown> {\n return this.#workflowState.stepResults;\n }\n\n status() {\n return this.#workflowState.status;\n }\n\n onChanges(\n handler: (\n event:\n | { step: string; status: \"IN_PROGRESS\" }\n | { step: string; status: \"DONE\" }\n | { step: string; status: \"FAILED\"; error: Error },\n ) => void,\n ) {\n this.#eventEmitter.on(\"change\", handler);\n }\n\n get name(): string {\n return this.#workflowState.name;\n }\n}\n\nexport type StepHandler<Input, Output> = (input: Input) => Promise<Output>;\n\nexport type PreviousStepHandler<Output> = () => Promise<Output>;\n"]}
export { WorkflowBuilder, type WorkflowStep } from "./workflow";
export { defineSubTask } from "./parallelStep";
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/step/index.ts"],"names":[],"mappings":";;;AAAA,uCAAgE;AAAvD,2GAAA,eAAe,OAAA;AACxB,+CAA+C;AAAtC,6GAAA,aAAa,OAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workflows/step/index.ts"],"names":[],"mappings":";;;AAAA,uCAAgE;AAAvD,2GAAA,eAAe,OAAA;AACxB,+CAA+C;AAAtC,6GAAA,aAAa,OAAA","sourcesContent":["export { WorkflowBuilder, type WorkflowStep } from \"./workflow\";\nexport { defineSubTask } from \"./parallelStep\";\n"]}

@@ -19,2 +19,1 @@ import { EventEmitter } from "node:events";

}[]>(handlers: H, input: Input, eventEmitter: EventEmitter): Promise<AggregateOutput<H>>;
//# sourceMappingURL=parallelStep.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"parallelStep.js","sourceRoot":"","sources":["../../../src/workflows/step/parallelStep.ts"],"names":[],"mappings":";;AAEA,sCAKC;AAYD,8CAwBC;AAzCD,SAAgB,aAAa,CAAwC,IAGpE;IACC,OAAO,IAAI,CAAC;AACd,CAAC;AAYM,KAAK,UAAU,iBAAiB,CAOrC,QAAW,EACX,KAAY,EACZ,YAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACvC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5D,OAAO,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAuB,CAAC;AAC3D,CAAC"}
{"version":3,"file":"parallelStep.js","sourceRoot":"","sources":["../../../src/workflows/step/parallelStep.ts"],"names":[],"mappings":";;AAEA,sCAKC;AAYD,8CAwBC;AAzCD,SAAgB,aAAa,CAAwC,IAGpE;IACC,OAAO,IAAI,CAAC;AACd,CAAC;AAYM,KAAK,UAAU,iBAAiB,CAOrC,QAAW,EACX,KAAY,EACZ,YAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACvC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5D,OAAO,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAuB,CAAC;AAC3D,CAAC","sourcesContent":["import { EventEmitter } from \"node:events\";\n\nexport function defineSubTask<const N extends string, Input, Output>(task: {\n name: N;\n handler: (input: Input) => Promise<Output>;\n}): { name: N; handler: (input: Input) => Promise<Output> } {\n return task;\n}\n\nexport type AggregateOutput<\n H extends readonly { name: string; handler: (input: any) => Promise<any> }[],\n> = {\n [E in H[number] as E[\"name\"]]: E[\"handler\"] extends (\n input: any,\n ) => Promise<infer O>\n ? O\n : never;\n};\n\nexport async function aggregateFunction<\n Input,\n const H extends readonly {\n name: string;\n handler: (input: Input) => Promise<unknown>;\n }[],\n>(\n handlers: H,\n input: Input,\n eventEmitter: EventEmitter,\n): Promise<AggregateOutput<H>> {\n const entries = await Promise.all(\n handlers.map(async ({ name, handler }) => {\n eventEmitter.emit(\"change\", { step: name, status: \"START\" });\n\n const result = await handler(input);\n\n eventEmitter.emit(\"change\", { step: name, status: \"DONE\" });\n\n return [name, result] as const;\n }),\n );\n\n return Object.fromEntries(entries) as AggregateOutput<H>;\n}\n"]}

@@ -36,2 +36,1 @@ import { ComposableWorkflowStep, StepHandler } from "./composableWorkflowStep";

}
//# sourceMappingURL=workflow.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/workflows/step/workflow.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,qEAA+E;AAC/E,iDAAoE;AAQpE,MAAa,eAAe;IAC1B,MAAM,CAAuB;IAC7B,aAAa,CAAe;IAE5B,YAAY,MAKX;QACC,MAAM,KAAK,GAAyB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC5B,CAAC,CAAC,MAAM,CAAC,UAAU;gBACnB,CAAC,CAAC,IAAI,GAAG,EAAmB;YAC9B,KAAK,EAAE,SAAS;SACjB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,IAAiC;QAEjC,OAAO,IAAI,+CAAsB,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAKjB,MAGD;QACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAElC,OAAO,IAAI,+CAAsB,CAAC;YAChC,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClE,OAAO,EAAE,KAAK,EAAE,KAAY,EAAuC,EAAE;gBACnE,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAiB,EACpC,QAAQ,EACR,KAAK,EACL,IAAI,CAAC,aAAa,CACnB,CAAC;gBACF,OAAO,MAAoC,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CACP,OAKS;QAET,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAhFD,0CAgFC"}
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/workflows/step/workflow.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,qEAA+E;AAC/E,iDAAoE;AAQpE,MAAa,eAAe;IAC1B,MAAM,CAAuB;IAC7B,aAAa,CAAe;IAE5B,YAAY,MAKX;QACC,MAAM,KAAK,GAAyB;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,UAAU;gBAC5B,CAAC,CAAC,MAAM,CAAC,UAAU;gBACnB,CAAC,CAAC,IAAI,GAAG,EAAmB;YAC9B,KAAK,EAAE,SAAS;SACjB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAY,CAAC;YACpC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,IAAiC;QAEjC,OAAO,IAAI,+CAAsB,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAKjB,MAGD;QACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAElC,OAAO,IAAI,+CAAsB,CAAC;YAChC,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClE,OAAO,EAAE,KAAK,EAAE,KAAY,EAAuC,EAAE;gBACnE,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAiB,EACpC,QAAQ,EACR,KAAK,EACL,IAAI,CAAC,aAAa,CACnB,CAAC;gBACF,OAAO,MAAoC,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CACP,OAKS;QAET,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAhFD,0CAgFC","sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { ComposableWorkflowStep, StepHandler } from \"./composableWorkflowStep\";\nimport { aggregateFunction, AggregateOutput } from \"./parallelStep\";\nimport { WorkflowState } from \"../interfaces\";\n\nexport interface WorkflowStep<Input, Output> {\n name: string;\n handler: StepHandler<Input, Output>;\n}\n\nexport class WorkflowBuilder<Input> {\n #state: WorkflowState<Input>;\n #eventEmitter: EventEmitter;\n\n constructor(params: {\n id: string;\n name: string;\n input: Input;\n stepResult?: Map<string, unknown>;\n }) {\n const state: WorkflowState<Input> = {\n status: \"TODO\",\n name: params.name,\n id: params.id,\n input: params.input,\n stepResults: params.stepResult\n ? params.stepResult\n : new Map<string, unknown>(),\n error: undefined,\n };\n\n this.#state = state;\n this.#eventEmitter = new EventEmitter({\n captureRejections: true,\n });\n }\n\n addStep<Output>(\n step: WorkflowStep<Input, Output>,\n ): ComposableWorkflowStep<Input, Output> {\n return new ComposableWorkflowStep({\n name: step.name,\n handler: step.handler,\n workflowState: this.#state,\n eventEmitter: this.#eventEmitter,\n previousStep: async () => await Promise.resolve(this.#state.input),\n });\n }\n\n addStepWithSubtasks<\n const Substasks extends readonly {\n name: string;\n handler: (input: Input) => Promise<unknown>;\n }[],\n >(params: {\n name: string;\n subtasks: Substasks;\n }): ComposableWorkflowStep<Input, AggregateOutput<Substasks>> {\n const { name, subtasks } = params;\n\n return new ComposableWorkflowStep({\n workflowState: this.#state,\n eventEmitter: this.#eventEmitter,\n name: name,\n previousStep: async () => await Promise.resolve(this.#state.input),\n handler: async (input: Input): Promise<AggregateOutput<Substasks>> => {\n const result = await aggregateFunction(\n subtasks,\n input,\n this.#eventEmitter,\n );\n return result as AggregateOutput<Substasks>;\n },\n });\n }\n\n onChanges(\n handler: (\n event:\n | { step: string; status: \"IN_PROGRESS\" }\n | { step: string; status: \"DONE\" }\n | { step: string; status: \"FAILED\"; error: Error },\n ) => void,\n ) {\n this.#eventEmitter.on(\"change\", handler);\n }\n\n get name(): string {\n return this.#state.name;\n }\n}\n"]}
{
"name": "ontologic",
"version": "1.5.1",
"version": "1.6.2",
"description": "Model What Matters: Domain Entities, Invariant, Domain Events, and much more.",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

{"version":3,"file":"domainEntity.d.ts","sourceRoot":"","sources":["../src/domainEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,EAAE,IAAI,MAAM,CAAC;IACb,SAAS,IAAI,OAAO,CAAC;IACrB,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACzD;AAED,qBAAa,YAAY,CAAC,KAAK,CAAE,YAAW,aAAa;;IAGvD,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;gBAEX,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE;IAO3E,EAAE,IAAI,MAAM;IAIZ,SAAS,IAAI,KAAK;IAKlB,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC;IAI9C,OAAO,CAAC,eAAe;CAWxB"}
{"version":3,"file":"domainError.d.ts","sourceRoot":"","sources":["../src/domainError.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,CAAE,SAAQ,KAAK;IAC3D,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAErB,IAAI,EAAE,IAAI,CAAC;gBAEd,MAAM,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CAYF"}
{"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,CACtB,IAAI,SAAS,MAAM,EACnB,OAAO,SAAS,MAAM,EACtB,OAAO,CACP,YAAW,oBAAoB;;gBAMnB,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB;IAQD,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;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,IAAI,CAAC;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB;CAQF"}
{"version":3,"file":"composedDomainInvariant.d.ts","sourceRoot":"","sources":["../../src/domainInvariant/composedDomainInvariant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAOrE,qBAAa,uBAAuB,CAAC,KAAK,CAAE,YAAW,eAAe,CAAC,KAAK,CAAC;;gBAG/D,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,oBAAoB;IAI9D,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB;IAI9C,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAI9D,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAI7D,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;IAI7B,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAI9D,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;CAGlE"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domainInvariant/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQrE,qBAAa,mBAAmB,CAAC,KAAK,CAAE,YAAW,eAAe,CAAC,KAAK,CAAC;;gBAG3D,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO;IAWtE,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB;IAI9C,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAI9D,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAI7D,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;IAI7B,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAI9D,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;CAGlE"}
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/domainInvariant/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB,CAAC;IAC/C,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/D,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9D,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB"}
{"version":3,"file":"and.d.ts","sourceRoot":"","sources":["../../../src/domainInvariant/operators/and.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAGtE,wBAAgB,GAAG,CAAC,KAAK,EACvB,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,EAClC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,GACjC,eAAe,CAAC,KAAK,CAAC,CAaxB"}
{"version":3,"file":"andNot.d.ts","sourceRoot":"","sources":["../../../src/domainInvariant/operators/andNot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAGtE,wBAAgB,MAAM,CAAC,KAAK,EAC1B,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,EAClC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,GACjC,eAAe,CAAC,KAAK,CAAC,CAaxB"}
{"version":3,"file":"not.d.ts","sourceRoot":"","sources":["../../../src/domainInvariant/operators/not.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAGtE,wBAAgB,GAAG,CAAC,KAAK,EACvB,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAChC,eAAe,CAAC,KAAK,CAAC,CAYxB"}
{"version":3,"file":"or.d.ts","sourceRoot":"","sources":["../../../src/domainInvariant/operators/or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAGtE,wBAAgB,EAAE,CAAC,KAAK,EACtB,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,EAClC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,GACjC,eAAe,CAAC,KAAK,CAAC,CAaxB"}
{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../../src/domainInvariant/operators/xor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAGtE,wBAAgB,GAAG,CAAC,KAAK,EACvB,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,EAClC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,GACjC,eAAe,CAAC,KAAK,CAAC,CAaxB"}
{"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;;CAShC"}
{"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;;gBAKtD,YAAY,EAAE,YAAY;IAKtC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC;IAI9D,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,KAAK;IA8BL,IAAI;IAMJ,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAGjD"}
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/event-bus/connectors/in-memory/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,0BAA2B,YAAW,mBAAmB;;gBAIxD,YAAY,EAAE,YAAY;IAKtC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,KAAK;IAKL,IAAI;IAKJ,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAGjD"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/event-bus/connectors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
{"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,CAAC;IACtE,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CAClD;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"}
{"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"}
{"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,CAAC;IAC9B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,SAAS,oBAAoB;IACzE,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,SAAS,KAAK,CAAC,MAAM,CAAC,EACtC,SAAS,EAAE,SAAS,GAAG,GAAG,EAC1B,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC,GACzD,IAAI,CAAC;CACT;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"}
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/event-bus/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAmB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItD,qBAAa,sBAAsB,CACjC,KAAK,SAAS,oBAAoB,CAClC,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,CAAA;SAAE,CAAC;KACnD;IAqBD,QAAQ,CAAC,SAAS,SAAS,KAAK,CAAC,MAAM,CAAC,EACtC,SAAS,EAAE,SAAS,GAAG,GAAG,EAC1B,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC,GACzD,IAAI;IAID,KAAK;IAyCL,IAAI;IAIV,MAAM;IAIN,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAIjD"}
{"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,CAClC,KAAK,SAAS,oBAAoB,CAClC,YAAW,wBAAwB,CAAC,KAAK,CAAC;;gBAI9B,MAAM,EAAE;QAClB,kBAAkB,EAAE,mBAAmB,CAAC;QACxC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAA;SAAE,CAAC;KACrD;IAgBK,OAAO,CACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,EACD,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAsBG,KAAK;IAIL,IAAI;IAIV,MAAM;IAIN,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAGjD"}
{"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,CAyCjE"}
{"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;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
{"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,EAC5D,KAAK,SAAS,oBAAoB,CAClC,YAAW,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;;gBAOlC,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,0CAAiD;IAExE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAKlD,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,KAAK,GAAG,KAAK,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IA6B/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,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAarD,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAmBrD,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAGrD"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messageRelay/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAE7B,qBAAa,YAAY;;IAIrB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAI3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBANT,UAAU,EAAE,UAAU,CACrC,YAAY,CAAC,OAAO,CAAC,EACrB,oBAAoB,CACrB,EACgB,eAAe,EAAE,2BAA2B,EAC5C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,uBAAuB,CAAC,oBAAoB,CAAC;IAOrE,OAAO,CAAC,QAAQ,EAAE,MAAM;IAmD9B,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI;CAGxC"}
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/messageRelay/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE,uBAAuB,CAAC,MAAM,EAAE;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEhC,0BAA0B,CAAC,MAAM,EAAE;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB"}
{"version":3,"file":"inMemory.d.ts","sourceRoot":"","sources":["../../../src/messageRelay/repository/inMemory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,qBAAa,mCAAoC,YAAW,2BAA2B;IACrF,OAAO,CAAC,KAAK,CAAqC;IAE5C,IAAI,CAAC,EACT,QAAQ,EACR,UAAU,GACX,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB;IAgBK,MAAM,CAAC,EACX,QAAQ,EACR,UAAU,GACX,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB;IAaK,uBAAuB,CAAC,EAC5B,QAAQ,EACR,UAAU,GACX,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIzB,0BAA0B,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,UAAU,GACX,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB;CAYF"}
{"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,CAAC,KAAK,SAAS,oBAAoB;IACnE,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;CACzB;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,EAC5D,KAAK,SAAS,oBAAoB;IAElC,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,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtD,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtD,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACtD"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/result/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,eAAe,CAAC;AAEzD,wBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,wBAAgB,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAK/E,wBAAgB,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,wBAAgB,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,wBAAgB,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAK/E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B;;;;OAIG;IACH,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzB;;;;OAIG;IACH,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3B;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;CAC3C;AAED,qBAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAE7B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAIxB,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1B,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC;IAIjC,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;CAG1C;AAED,qBAAa,GAAG,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAE7B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAIxB,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1B,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;IAItC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC;CAGrC"}
{"version":3,"file":"resultError.d.ts","sourceRoot":"","sources":["../../src/result/resultError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB;AAMD,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,KAAK;IACnC,IAAI,EACP;QACE,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,CAAC,CAAC;KACV,GACD;QACE,IAAI,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,CAAC,CAAC;KACV,CAAC;gBAGJ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,MAAM,GAAE,WAAgC;CAgB3C"}
{"version":3,"file":"switchGuard.d.ts","sourceRoot":"","sources":["../src/switchGuard.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAEjE"}
{"version":3,"file":"graphWorkflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/graph/graphWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAkC,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,qBAAa,aAAa,CAAC,KAAK,EAAE,MAAM;;gBAW1B,MAAM,EAAE;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,uBAAuB,CAAC;QACpC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC;IAeD,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAEhC;IAED,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI;IAMrE,OAAO;IAyBb,SAAS,CACP,OAAO,EAAE,CACP,KAAK,EACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,GACvC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAChC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KACjD,IAAI;IAMX,QAAQ,IAAI,KAAK;IAqBjB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflows/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC"}
{"version":3,"file":"renderGraph.d.ts","sourceRoot":"","sources":["../../../src/workflows/graph/renderGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;CAC/C,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAElC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAwBF,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CASR"}
{"version":3,"file":"workflowNode.d.ts","sourceRoot":"","sources":["../../../src/workflows/graph/workflowNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAkB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAkC,MAAM,eAAe,CAAC;AAEtE,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI;KACtE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACpE,CAAC;AAEF,qBAAa,YAAY,CACvB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACvD,MAAM;;gBAeM,MAAM,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,QAAQ,CAAC;QACnB,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAChE;IAiBD,SAAS,CACP,OAAO,EAAE,CACP,KAAK,EACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,GACvC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAChC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KACjD,IAAI;IASX,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;IAQ3C,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAmEhC,QAAQ,IAAI,KAAK;IAcjB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/workflows/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa,CAAC,KAAK;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACjE,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflows/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
{"version":3,"file":"inMemoryWorkflowStateRepository.d.ts","sourceRoot":"","sources":["../../../src/workflows/repository/inMemoryWorkflowStateRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,qBAAa,+BAAgC,YAAW,uBAAuB;;;IAOvE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CAIvE"}
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/workflows/repository/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;CACtE"}
{"version":3,"file":"composableWorkflowStep.d.ts","sourceRoot":"","sources":["../../../src/workflows/step/composableWorkflowStep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAqB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,qBAAa,sBAAsB,CAAC,KAAK,EAAE,MAAM;;gBAQnC,MAAM,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,YAAY,EAAE,YAAY,CAAC;KAC5B;IAUD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC1C,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,CAAC;IAc9C,mBAAmB,CACjB,KAAK,CAAC,SAAS,SAAS,SAAS;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC9C,EAAE,EACH,MAAM,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,SAAS,CAAC;KACrB,GAAG,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAoBxD,OAAO,CACX,UAAU,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC;IA8ElB,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAI/B,MAAM;IAIN,SAAS,CACP,OAAO,EAAE,CACP,KAAK,EACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,GACvC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAChC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KACjD,IAAI;IAKX,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/workflows/step/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
{"version":3,"file":"parallelStep.d.ts","sourceRoot":"","sources":["../../../src/workflows/step/parallelStep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACzE,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAE1D;AAED,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE,EAAE,IAC1E;KACD,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAClD,KAAK,EAAE,GAAG,KACP,OAAO,CAAC,MAAM,CAAC,CAAC,GACjB,CAAC,GACD,KAAK;CACV,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,KAAK,EACL,KAAK,CAAC,CAAC,SAAS,SAAS;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C,EAAE,EAEH,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAc7B"}
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/workflows/step/workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAqB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGpE,MAAM,WAAW,YAAY,CAAC,KAAK,EAAE,MAAM;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,qBAAa,eAAe,CAAC,KAAK;;gBAIpB,MAAM,EAAE;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,KAAK,CAAC;QACb,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC;IAkBD,OAAO,CAAC,MAAM,EACZ,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAChC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;IAUxC,mBAAmB,CACjB,KAAK,CAAC,SAAS,SAAS,SAAS;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7C,EAAE,EACH,MAAM,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,SAAS,CAAC;KACrB,GAAG,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAmB7D,SAAS,CACP,OAAO,EAAE,CACP,KAAK,EACD;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,GACvC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAChC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KACjD,IAAI;IAKX,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}