@nestjs-transactional/outbox 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -5
- package/dist/api/completed-event-publications.d.ts +2 -2
- package/dist/api/completed-event-publications.js +6 -9
- package/dist/api/completed-event-publications.js.map +1 -1
- package/dist/api/failed-event-publications.d.ts +3 -3
- package/dist/api/failed-event-publications.js +10 -13
- package/dist/api/failed-event-publications.js.map +1 -1
- package/dist/api/incomplete-event-publications.d.ts +3 -3
- package/dist/api/incomplete-event-publications.js +11 -14
- package/dist/api/incomplete-event-publications.js.map +1 -1
- package/dist/decorators/inject-decorators.js +12 -24
- package/dist/decorators/inject-decorators.js.map +1 -1
- package/dist/decorators/outbox-events-handler.decorator.js +6 -11
- package/dist/decorators/outbox-events-handler.decorator.js.map +1 -1
- package/dist/dispatcher/data-source-outbox-publisher.d.ts +2 -2
- package/dist/dispatcher/data-source-outbox-publisher.js +7 -11
- package/dist/dispatcher/data-source-outbox-publisher.js.map +1 -1
- package/dist/dispatcher/event-publication-processor.d.ts +5 -5
- package/dist/dispatcher/event-publication-processor.js +18 -21
- package/dist/dispatcher/event-publication-processor.js.map +1 -1
- package/dist/dispatcher/outbox-event-publisher.js +16 -19
- package/dist/dispatcher/outbox-event-publisher.js.map +1 -1
- package/dist/dispatcher/processor-options.d.ts +1 -1
- package/dist/dispatcher/processor-options.js +5 -8
- package/dist/dispatcher/processor-options.js.map +1 -1
- package/dist/externalization/describe-thrown.d.ts +20 -0
- package/dist/externalization/describe-thrown.js +46 -0
- package/dist/externalization/describe-thrown.js.map +1 -0
- package/dist/externalization/errors.d.ts +1 -1
- package/dist/externalization/errors.js +2 -6
- package/dist/externalization/errors.js.map +1 -1
- package/dist/externalization/event-externalizer.d.ts +1 -1
- package/dist/externalization/event-externalizer.js +1 -4
- package/dist/externalization/event-externalizer.js.map +1 -1
- package/dist/externalization/externalization-registry.d.ts +3 -3
- package/dist/externalization/externalization-registry.js +10 -13
- package/dist/externalization/externalization-registry.js.map +1 -1
- package/dist/externalization/externalized.decorator.js +6 -11
- package/dist/externalization/externalized.decorator.js.map +1 -1
- package/dist/externalization/types.js +1 -2
- package/dist/index.d.ts +43 -40
- package/dist/index.js +41 -61
- package/dist/index.js.map +1 -1
- package/dist/interfaces/outbox-event-handler.interface.js +1 -2
- package/dist/module/outbox-processing.module.d.ts +1 -1
- package/dist/module/outbox-processing.module.js +12 -9
- package/dist/module/outbox-processing.module.js.map +1 -1
- package/dist/module/outbox.module.d.ts +15 -8
- package/dist/module/outbox.module.js +179 -145
- package/dist/module/outbox.module.js.map +1 -1
- package/dist/recovery/outbox-cleanup-scheduler.d.ts +56 -0
- package/dist/recovery/outbox-cleanup-scheduler.js +136 -0
- package/dist/recovery/outbox-cleanup-scheduler.js.map +1 -0
- package/dist/recovery/outbox-retry-scheduler.d.ts +2 -2
- package/dist/recovery/outbox-retry-scheduler.js +11 -14
- package/dist/recovery/outbox-retry-scheduler.js.map +1 -1
- package/dist/recovery/staleness-monitor.d.ts +2 -2
- package/dist/recovery/staleness-monitor.js +14 -17
- package/dist/recovery/staleness-monitor.js.map +1 -1
- package/dist/recovery/startup-recovery.d.ts +1 -1
- package/dist/recovery/startup-recovery.js +11 -14
- package/dist/recovery/startup-recovery.js.map +1 -1
- package/dist/registry/event-publication-registry.d.ts +4 -4
- package/dist/registry/event-publication-registry.js +17 -20
- package/dist/registry/event-publication-registry.js.map +1 -1
- package/dist/registry/listener-registry.js +6 -9
- package/dist/registry/listener-registry.js.map +1 -1
- package/dist/registry/multi-ds-listener-registrar.d.ts +1 -1
- package/dist/registry/multi-ds-listener-registrar.js +15 -18
- package/dist/registry/multi-ds-listener-registrar.js.map +1 -1
- package/dist/registry/outbox-listener-scanner.d.ts +1 -1
- package/dist/registry/outbox-listener-scanner.js +23 -27
- package/dist/registry/outbox-listener-scanner.js.map +1 -1
- package/dist/repository/event-publication-repository.d.ts +14 -3
- package/dist/repository/event-publication-repository.js +1 -4
- package/dist/repository/event-publication-repository.js.map +1 -1
- package/dist/serialization/event-serializer.js +1 -4
- package/dist/serialization/event-serializer.js.map +1 -1
- package/dist/serialization/event-type-registry.js +5 -8
- package/dist/serialization/event-type-registry.js.map +1 -1
- package/dist/serialization/event-type-resolver.d.ts +1 -1
- package/dist/serialization/event-type-resolver.js +4 -7
- package/dist/serialization/event-type-resolver.js.map +1 -1
- package/dist/serialization/json-event-serializer.d.ts +2 -2
- package/dist/serialization/json-event-serializer.js +10 -13
- package/dist/serialization/json-event-serializer.js.map +1 -1
- package/dist/shutdown/drain.js +2 -6
- package/dist/shutdown/drain.js.map +1 -1
- package/dist/testing/assertable-published-events.d.ts +1 -1
- package/dist/testing/assertable-published-events.js +8 -13
- package/dist/testing/assertable-published-events.js.map +1 -1
- package/dist/testing/in-memory-repository.d.ts +3 -3
- package/dist/testing/in-memory-repository.js +32 -25
- package/dist/testing/in-memory-repository.js.map +1 -1
- package/dist/testing/index.d.ts +3 -3
- package/dist/testing/index.js +3 -19
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/published-events.d.ts +3 -3
- package/dist/testing/published-events.js +11 -14
- package/dist/testing/published-events.js.map +1 -1
- package/dist/tokens/index.d.ts +1 -1
- package/dist/tokens/index.js +1 -13
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/token-utils.js +10 -21
- package/dist/tokens/token-utils.js.map +1 -1
- package/dist/types/cleanup-config.d.ts +59 -0
- package/dist/types/cleanup-config.js +14 -0
- package/dist/types/cleanup-config.js.map +1 -0
- package/dist/types/completion-mode.js +2 -5
- package/dist/types/completion-mode.js.map +1 -1
- package/dist/types/errors.d.ts +1 -1
- package/dist/types/errors.js +7 -16
- package/dist/types/errors.js.map +1 -1
- package/dist/types/event-publication.d.ts +1 -1
- package/dist/types/event-publication.js +1 -2
- package/dist/types/publication-status.js +2 -5
- package/dist/types/publication-status.js.map +1 -1
- package/dist/types/resubmission-options.d.ts +1 -1
- package/dist/types/resubmission-options.js +1 -5
- package/dist/types/resubmission-options.js.map +1 -1
- package/dist/types/retry-config.js +3 -6
- package/dist/types/retry-config.js.map +1 -1
- package/dist/types/staleness-config.js +3 -6
- package/dist/types/staleness-config.js.map +1 -1
- package/package.json +21 -19
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,11 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const errors_1 = require("../types/errors");
|
|
15
|
-
const event_type_registry_1 = require("./event-type-registry");
|
|
10
|
+
import { Injectable } from '@nestjs/common';
|
|
11
|
+
import { DeserializationError, SerializationError } from '../types/errors.js';
|
|
12
|
+
import { EventTypeRegistry } from './event-type-registry.js';
|
|
16
13
|
/**
|
|
17
14
|
* Default JSON-based {@link EventSerializer}. Uses `JSON.stringify` for
|
|
18
15
|
* encoding and `JSON.parse` + `Object.create` for decoding, consulting
|
|
@@ -31,13 +28,13 @@ let JsonEventSerializer = class JsonEventSerializer {
|
|
|
31
28
|
}
|
|
32
29
|
serialize(event) {
|
|
33
30
|
if (!event || typeof event !== 'object') {
|
|
34
|
-
throw new
|
|
31
|
+
throw new SerializationError(`Cannot serialize non-object: ${typeof event}`);
|
|
35
32
|
}
|
|
36
33
|
try {
|
|
37
34
|
return JSON.stringify(event);
|
|
38
35
|
}
|
|
39
36
|
catch (err) {
|
|
40
|
-
throw new
|
|
37
|
+
throw new SerializationError(`Failed to serialize event: ${err.message}`);
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
40
|
deserialize(serialized, eventType) {
|
|
@@ -47,7 +44,7 @@ let JsonEventSerializer = class JsonEventSerializer {
|
|
|
47
44
|
data = JSON.parse(serialized);
|
|
48
45
|
}
|
|
49
46
|
catch (err) {
|
|
50
|
-
throw new
|
|
47
|
+
throw new DeserializationError(`Failed to deserialize event '${eventType}': ${err.message}`);
|
|
51
48
|
}
|
|
52
49
|
if (!EventClass) {
|
|
53
50
|
return data;
|
|
@@ -56,9 +53,9 @@ let JsonEventSerializer = class JsonEventSerializer {
|
|
|
56
53
|
return Object.assign(Object.create(prototype), data);
|
|
57
54
|
}
|
|
58
55
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
(
|
|
62
|
-
__metadata("design:paramtypes", [event_type_registry_1.EventTypeRegistry])
|
|
56
|
+
JsonEventSerializer = __decorate([
|
|
57
|
+
Injectable(),
|
|
58
|
+
__metadata("design:paramtypes", [EventTypeRegistry])
|
|
63
59
|
], JsonEventSerializer);
|
|
60
|
+
export { JsonEventSerializer };
|
|
64
61
|
//# sourceMappingURL=json-event-serializer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-event-serializer.js","sourceRoot":"","sources":["../../src/serialization/json-event-serializer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-event-serializer.js","sourceRoot":"","sources":["../../src/serialization/json-event-serializer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;;;;;GAUG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACD;IAA7B,YAA6B,QAA2B;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;IAAG,CAAC;IAE5D,SAAS,CAAC,KAAc;QACtB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,kBAAkB,CAAC,gCAAgC,OAAO,KAAK,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,8BAA+B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,WAAW,CAAC,UAAkB,EAAE,SAAiB;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,CAC5B,gCAAgC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACxE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAW,UAAU,CAAC,SAAmB,CAAC;QACzD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAW,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;CACF,CAAA;AAjCY,mBAAmB;IAD/B,UAAU,EAAE;qCAE4B,iBAAiB;GAD7C,mBAAmB,CAiC/B"}
|
package/dist/shutdown/drain.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_DRAIN_TIMEOUT_MS = void 0;
|
|
4
|
-
exports.drainWithTimeout = drainWithTimeout;
|
|
5
1
|
/**
|
|
6
2
|
* Default drain budget for the outbox background workers, in
|
|
7
3
|
* milliseconds.
|
|
@@ -12,7 +8,7 @@ exports.drainWithTimeout = drainWithTimeout;
|
|
|
12
8
|
* connection pool, flushing logs) needs room after the drain. 10s
|
|
13
9
|
* leaves that margin.
|
|
14
10
|
*/
|
|
15
|
-
|
|
11
|
+
export const DEFAULT_DRAIN_TIMEOUT_MS = 10_000;
|
|
16
12
|
/**
|
|
17
13
|
* Await `inFlight`, giving up after `timeoutMs`.
|
|
18
14
|
*
|
|
@@ -32,7 +28,7 @@ exports.DEFAULT_DRAIN_TIMEOUT_MS = 10_000;
|
|
|
32
28
|
* `checkStaleness` already swallow their own failures, and a drain that
|
|
33
29
|
* threw would turn an orderly shutdown into an unhandled rejection.
|
|
34
30
|
*/
|
|
35
|
-
async function drainWithTimeout(inFlight, timeoutMs) {
|
|
31
|
+
export async function drainWithTimeout(inFlight, timeoutMs) {
|
|
36
32
|
if (timeoutMs <= 0) {
|
|
37
33
|
return false;
|
|
38
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/shutdown/drain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/shutdown/drain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA0B,EAC1B,SAAiB;IAEjB,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,EAAE;QAC7C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QACpD,kEAAkE;QAClE,iEAAiE;QACjE,QAAQ;QACR,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Type } from '@nestjs/common';
|
|
2
|
-
import { PublishedEvents, type PublishedEventsView } from './published-events';
|
|
2
|
+
import { PublishedEvents, type PublishedEventsView } from './published-events.js';
|
|
3
3
|
/**
|
|
4
4
|
* Thrown when an assertion made against the published-events view does
|
|
5
5
|
* not hold. A separate class (instead of a plain `Error`) so tests can
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,23 +7,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const published_events_1 = require("./published-events");
|
|
10
|
+
import { Injectable } from '@nestjs/common';
|
|
11
|
+
import { PublishedEvents } from './published-events.js';
|
|
15
12
|
/**
|
|
16
13
|
* Thrown when an assertion made against the published-events view does
|
|
17
14
|
* not hold. A separate class (instead of a plain `Error`) so tests can
|
|
18
15
|
* pattern-match with `rejects.toBeInstanceOf(PublishedEventsAssertionError)`
|
|
19
16
|
* when they want to assert on failure modes.
|
|
20
17
|
*/
|
|
21
|
-
class PublishedEventsAssertionError extends Error {
|
|
18
|
+
export class PublishedEventsAssertionError extends Error {
|
|
22
19
|
constructor(message) {
|
|
23
20
|
super(message);
|
|
24
21
|
this.name = 'PublishedEventsAssertionError';
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
|
-
exports.PublishedEventsAssertionError = PublishedEventsAssertionError;
|
|
28
24
|
/**
|
|
29
25
|
* Jest-friendly fluent assertions over {@link PublishedEvents}. Inspired
|
|
30
26
|
* by Spring Modulith's `AssertablePublishedEvents`. Designed to read
|
|
@@ -71,17 +67,17 @@ let AssertablePublishedEvents = class AssertablePublishedEvents {
|
|
|
71
67
|
}
|
|
72
68
|
}
|
|
73
69
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
(
|
|
77
|
-
__metadata("design:paramtypes", [published_events_1.PublishedEvents])
|
|
70
|
+
AssertablePublishedEvents = __decorate([
|
|
71
|
+
Injectable(),
|
|
72
|
+
__metadata("design:paramtypes", [PublishedEvents])
|
|
78
73
|
], AssertablePublishedEvents);
|
|
74
|
+
export { AssertablePublishedEvents };
|
|
79
75
|
/**
|
|
80
76
|
* Materialised, filtered view returned by
|
|
81
77
|
* {@link AssertablePublishedEvents.contains}. Further filtering /
|
|
82
78
|
* sizing runs in memory — no additional repository reads.
|
|
83
79
|
*/
|
|
84
|
-
class AssertionView {
|
|
80
|
+
export class AssertionView {
|
|
85
81
|
view;
|
|
86
82
|
events;
|
|
87
83
|
eventType;
|
|
@@ -120,5 +116,4 @@ class AssertionView {
|
|
|
120
116
|
return [...this.events];
|
|
121
117
|
}
|
|
122
118
|
}
|
|
123
|
-
exports.AssertionView = AssertionView;
|
|
124
119
|
//# sourceMappingURL=assertable-published-events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertable-published-events.js","sourceRoot":"","sources":["../../src/testing/assertable-published-events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assertable-published-events.js","sourceRoot":"","sources":["../../src/testing/assertable-published-events.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAA4B,MAAM,uBAAuB,CAAC;AAElF;;;;;GAKG;AACH,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACP;IAA7B,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAExD;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAmB,SAAkB;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,6BAA6B,CACrC,uCAAuC,SAAS,CAAC,IAAI,kBAAkB,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,aAAa,CAAI,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAmB,SAAkB;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,6BAA6B,CACrC,8BAA8B,SAAS,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,EAAE,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAnCY,yBAAyB;IADrC,UAAU,EAAE;qCAE0B,eAAe;GADzC,yBAAyB,CAmCrC;;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAEL;IACA;IACA;IAHnB,YACmB,IAA4B,EAC5B,MAAoB,EACpB,SAAkB;QAFlB,SAAI,GAAJ,IAAI,CAAwB;QAC5B,WAAM,GAAN,MAAM,CAAc;QACpB,cAAS,GAAT,SAAS,CAAS;IAClC,CAAC;IAEJ;;;;;;OAMG;IACH,QAAQ,CAAI,MAAuB,EAAE,QAAW;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC;QAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,6BAA6B,CACrC,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,yCAAyC,CACpG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,aAAa,CAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,QAAgB;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,6BAA6B,CACrC,YAAY,QAAQ,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAC9F,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kFAAkF;IAClF,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TransactionManager } from '@nestjs-transactional/core';
|
|
2
|
-
import type { EventPublicationRepository, FindCompletedOptions, FindFailedOptions, UpdateStatusOptions } from '../repository/event-publication-repository';
|
|
3
|
-
import type { EventPublication, NewEventPublication } from '../types/event-publication';
|
|
4
|
-
import { PublicationStatus } from '../types/publication-status';
|
|
2
|
+
import type { EventPublicationRepository, FindCompletedOptions, FindFailedOptions, UpdateStatusOptions } from '../repository/event-publication-repository.js';
|
|
3
|
+
import type { EventPublication, NewEventPublication } from '../types/event-publication.js';
|
|
4
|
+
import { PublicationStatus } from '../types/publication-status.js';
|
|
5
5
|
/**
|
|
6
6
|
* In-memory reference implementation of {@link EventPublicationRepository}.
|
|
7
7
|
*
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,19 +10,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.InMemoryEventPublicationRepository = void 0;
|
|
16
13
|
/* eslint-disable @typescript-eslint/require-await --
|
|
17
14
|
* This in-memory reference implementation has synchronous method
|
|
18
15
|
* bodies but must return Promises per the EventPublicationRepository
|
|
19
16
|
* SPI contract. Real persistence backends (TypeORM, Prisma, ...) will
|
|
20
17
|
* have awaits throughout.
|
|
21
18
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
import { randomUUID } from 'node:crypto';
|
|
20
|
+
import { Injectable, Optional } from '@nestjs/common';
|
|
21
|
+
import { IllegalTransactionStateError, TransactionManager } from '@nestjs-transactional/core';
|
|
22
|
+
import { PublicationNotFoundError } from '../types/errors.js';
|
|
23
|
+
import { PublicationStatus } from '../types/publication-status.js';
|
|
27
24
|
/**
|
|
28
25
|
* In-memory reference implementation of {@link EventPublicationRepository}.
|
|
29
26
|
*
|
|
@@ -52,12 +49,12 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
52
49
|
const created = [];
|
|
53
50
|
for (const input of inputs) {
|
|
54
51
|
const publication = {
|
|
55
|
-
id:
|
|
52
|
+
id: randomUUID(),
|
|
56
53
|
listenerId: input.listenerId,
|
|
57
54
|
eventType: input.eventType,
|
|
58
55
|
serializedEvent: input.serializedEvent,
|
|
59
56
|
publicationDate: input.publicationDate ?? new Date(),
|
|
60
|
-
status:
|
|
57
|
+
status: PublicationStatus.PUBLISHED,
|
|
61
58
|
completionDate: null,
|
|
62
59
|
lastResubmissionDate: null,
|
|
63
60
|
completionAttempts: 0,
|
|
@@ -79,7 +76,7 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
79
76
|
async updateStatus(id, status, options = {}) {
|
|
80
77
|
const existing = this.publications.get(id);
|
|
81
78
|
if (!existing) {
|
|
82
|
-
throw new
|
|
79
|
+
throw new PublicationNotFoundError(id);
|
|
83
80
|
}
|
|
84
81
|
const updated = {
|
|
85
82
|
...existing,
|
|
@@ -101,27 +98,37 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
101
98
|
if (!existing) {
|
|
102
99
|
return false;
|
|
103
100
|
}
|
|
104
|
-
if (existing.status !==
|
|
105
|
-
existing.status !==
|
|
101
|
+
if (existing.status !== PublicationStatus.PUBLISHED &&
|
|
102
|
+
existing.status !== PublicationStatus.RESUBMITTED) {
|
|
106
103
|
return false;
|
|
107
104
|
}
|
|
108
|
-
await this.updateStatus(id,
|
|
105
|
+
await this.updateStatus(id, PublicationStatus.PROCESSING, { incrementAttempts: true });
|
|
109
106
|
return true;
|
|
110
107
|
}
|
|
111
108
|
async findReadyForProcessing(limit) {
|
|
112
109
|
return Array.from(this.publications.values())
|
|
113
|
-
.filter((p) => p.status ===
|
|
110
|
+
.filter((p) => p.status === PublicationStatus.PUBLISHED || p.status === PublicationStatus.RESUBMITTED)
|
|
114
111
|
.slice(0, limit);
|
|
115
112
|
}
|
|
116
113
|
async findStale(beforeDate, statuses) {
|
|
117
114
|
return Array.from(this.publications.values()).filter((p) => statuses.includes(p.status) && p.publicationDate < beforeDate);
|
|
118
115
|
}
|
|
119
116
|
async findCompleted(options) {
|
|
120
|
-
let result = Array.from(this.publications.values()).filter((p) => p.status ===
|
|
117
|
+
let result = Array.from(this.publications.values()).filter((p) => p.status === PublicationStatus.COMPLETED);
|
|
121
118
|
const olderThan = options?.olderThan;
|
|
122
119
|
if (olderThan) {
|
|
123
120
|
result = result.filter((p) => p.completionDate !== null && p.completionDate < olderThan);
|
|
124
121
|
}
|
|
122
|
+
// Oldest first, per the SPI contract. Insertion order happened to be
|
|
123
|
+
// close enough until `limit` made the order a correctness property
|
|
124
|
+
// for the retention job. A publication still in `COMPLETED` without a
|
|
125
|
+
// completion date cannot be ordered, so it sorts last rather than
|
|
126
|
+
// being dropped.
|
|
127
|
+
result = [...result].sort((a, b) => {
|
|
128
|
+
const left = a.completionDate?.getTime() ?? Number.POSITIVE_INFINITY;
|
|
129
|
+
const right = b.completionDate?.getTime() ?? Number.POSITIVE_INFINITY;
|
|
130
|
+
return left - right;
|
|
131
|
+
});
|
|
125
132
|
const limit = options?.limit;
|
|
126
133
|
if (limit !== undefined) {
|
|
127
134
|
result = result.slice(0, limit);
|
|
@@ -129,10 +136,10 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
129
136
|
return result;
|
|
130
137
|
}
|
|
131
138
|
async findIncomplete() {
|
|
132
|
-
return Array.from(this.publications.values()).filter((p) => p.status !==
|
|
139
|
+
return Array.from(this.publications.values()).filter((p) => p.status !== PublicationStatus.COMPLETED);
|
|
133
140
|
}
|
|
134
141
|
async findFailed(options) {
|
|
135
|
-
let result = Array.from(this.publications.values()).filter((p) => p.status ===
|
|
142
|
+
let result = Array.from(this.publications.values()).filter((p) => p.status === PublicationStatus.FAILED);
|
|
136
143
|
const minAge = options?.minAge;
|
|
137
144
|
if (minAge) {
|
|
138
145
|
const threshold = new Date(Date.now() - minAge);
|
|
@@ -147,7 +154,7 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
147
154
|
async deleteCompleted(olderThan) {
|
|
148
155
|
const deleted = [];
|
|
149
156
|
for (const [id, p] of this.publications.entries()) {
|
|
150
|
-
if (p.status !==
|
|
157
|
+
if (p.status !== PublicationStatus.COMPLETED) {
|
|
151
158
|
continue;
|
|
152
159
|
}
|
|
153
160
|
if (olderThan && (p.completionDate === null || p.completionDate >= olderThan)) {
|
|
@@ -213,17 +220,17 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
213
220
|
});
|
|
214
221
|
}
|
|
215
222
|
catch (err) {
|
|
216
|
-
if (err instanceof
|
|
223
|
+
if (err instanceof IllegalTransactionStateError) {
|
|
217
224
|
return;
|
|
218
225
|
}
|
|
219
226
|
throw err;
|
|
220
227
|
}
|
|
221
228
|
}
|
|
222
229
|
};
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
(0,
|
|
226
|
-
|
|
227
|
-
__metadata("design:paramtypes", [core_1.TransactionManager])
|
|
230
|
+
InMemoryEventPublicationRepository = __decorate([
|
|
231
|
+
Injectable(),
|
|
232
|
+
__param(0, Optional()),
|
|
233
|
+
__metadata("design:paramtypes", [TransactionManager])
|
|
228
234
|
], InMemoryEventPublicationRepository);
|
|
235
|
+
export { InMemoryEventPublicationRepository };
|
|
229
236
|
//# sourceMappingURL=in-memory-repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-repository.js","sourceRoot":"","sources":["../../src/testing/in-memory-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"in-memory-repository.js","sourceRoot":"","sources":["../../src/testing/in-memory-repository.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './in-memory-repository';
|
|
2
|
-
export * from './published-events';
|
|
3
|
-
export * from './assertable-published-events';
|
|
1
|
+
export * from './in-memory-repository.js';
|
|
2
|
+
export * from './published-events.js';
|
|
3
|
+
export * from './assertable-published-events.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/testing/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./in-memory-repository"), exports);
|
|
18
|
-
__exportStar(require("./published-events"), exports);
|
|
19
|
-
__exportStar(require("./assertable-published-events"), exports);
|
|
1
|
+
export * from './in-memory-repository.js';
|
|
2
|
+
export * from './published-events.js';
|
|
3
|
+
export * from './assertable-published-events.js';
|
|
20
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Type } from '@nestjs/common';
|
|
2
|
-
import { type EventPublicationRepository } from '../repository/event-publication-repository';
|
|
3
|
-
import { type EventSerializer } from '../serialization/event-serializer';
|
|
4
|
-
import type { EventPublication } from '../types/event-publication';
|
|
2
|
+
import { type EventPublicationRepository } from '../repository/event-publication-repository.js';
|
|
3
|
+
import { type EventSerializer } from '../serialization/event-serializer.js';
|
|
4
|
+
import type { EventPublication } from '../types/event-publication.js';
|
|
5
5
|
/**
|
|
6
6
|
* Test utility for inspecting events that were published through the
|
|
7
7
|
* outbox during a test run.
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,11 +10,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const event_publication_repository_1 = require("../repository/event-publication-repository");
|
|
18
|
-
const event_serializer_1 = require("../serialization/event-serializer");
|
|
13
|
+
import { Inject, Injectable } from '@nestjs/common';
|
|
14
|
+
import { EVENT_PUBLICATION_REPOSITORY, } from '../repository/event-publication-repository.js';
|
|
15
|
+
import { EVENT_SERIALIZER } from '../serialization/event-serializer.js';
|
|
19
16
|
/**
|
|
20
17
|
* Test utility for inspecting events that were published through the
|
|
21
18
|
* outbox during a test run.
|
|
@@ -61,20 +58,20 @@ let PublishedEvents = class PublishedEvents {
|
|
|
61
58
|
return [...incomplete, ...completed];
|
|
62
59
|
}
|
|
63
60
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
(0,
|
|
67
|
-
__param(
|
|
68
|
-
__param(1, (0, common_1.Inject)(event_serializer_1.EVENT_SERIALIZER)),
|
|
61
|
+
PublishedEvents = __decorate([
|
|
62
|
+
Injectable(),
|
|
63
|
+
__param(0, Inject(EVENT_PUBLICATION_REPOSITORY)),
|
|
64
|
+
__param(1, Inject(EVENT_SERIALIZER)),
|
|
69
65
|
__metadata("design:paramtypes", [Object, Object])
|
|
70
66
|
], PublishedEvents);
|
|
67
|
+
export { PublishedEvents };
|
|
71
68
|
/**
|
|
72
69
|
* Fluent filter view returned by {@link PublishedEvents.ofType}. Each
|
|
73
70
|
* `matching(...)` call produces a new view with the extra predicate
|
|
74
71
|
* appended — predicates are conjunctive (all must hold). Materialise
|
|
75
72
|
* the view with `get()` or `count()`.
|
|
76
73
|
*/
|
|
77
|
-
class PublishedEventsView {
|
|
74
|
+
export class PublishedEventsView {
|
|
78
75
|
fetchAll;
|
|
79
76
|
serializer;
|
|
80
77
|
eventType;
|
|
@@ -86,7 +83,8 @@ class PublishedEventsView {
|
|
|
86
83
|
this.predicates = predicates;
|
|
87
84
|
}
|
|
88
85
|
matching(fnOrGetter, expected) {
|
|
89
|
-
//
|
|
86
|
+
// `arguments.length` distinguishes the two overloads reliably,
|
|
87
|
+
// including when `expected` is intentionally passed as `undefined`.
|
|
90
88
|
const argCount = arguments.length;
|
|
91
89
|
const predicate = argCount > 1
|
|
92
90
|
? (event) => fnOrGetter(event) === expected
|
|
@@ -109,5 +107,4 @@ class PublishedEventsView {
|
|
|
109
107
|
return typed.filter((event) => this.predicates.every((pred) => pred(event)));
|
|
110
108
|
}
|
|
111
109
|
}
|
|
112
|
-
exports.PublishedEventsView = PublishedEventsView;
|
|
113
110
|
//# sourceMappingURL=published-events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"published-events.js","sourceRoot":"","sources":["../../src/testing/published-events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"published-events.js","sourceRoot":"","sources":["../../src/testing/published-events.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { getEventExternalizerToken, getEventPublicationProcessorToken, getEventPublicationRegistryToken, getEventPublicationRepositoryToken, getEventTypeRegistryToken, getExternalizationRegistryToken, getOutboxEventSerializerToken, getOutboxListenerRegistryToken, getOutboxPublisherToken, } from './token-utils';
|
|
1
|
+
export { getEventExternalizerToken, getEventPublicationProcessorToken, getEventPublicationRegistryToken, getEventPublicationRepositoryToken, getEventTypeRegistryToken, getExternalizationRegistryToken, getOutboxEventSerializerToken, getOutboxListenerRegistryToken, getOutboxPublisherToken, } from './token-utils.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/tokens/index.js
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOutboxPublisherToken = exports.getOutboxListenerRegistryToken = exports.getOutboxEventSerializerToken = exports.getExternalizationRegistryToken = exports.getEventTypeRegistryToken = exports.getEventPublicationRepositoryToken = exports.getEventPublicationRegistryToken = exports.getEventPublicationProcessorToken = exports.getEventExternalizerToken = void 0;
|
|
4
|
-
var token_utils_1 = require("./token-utils");
|
|
5
|
-
Object.defineProperty(exports, "getEventExternalizerToken", { enumerable: true, get: function () { return token_utils_1.getEventExternalizerToken; } });
|
|
6
|
-
Object.defineProperty(exports, "getEventPublicationProcessorToken", { enumerable: true, get: function () { return token_utils_1.getEventPublicationProcessorToken; } });
|
|
7
|
-
Object.defineProperty(exports, "getEventPublicationRegistryToken", { enumerable: true, get: function () { return token_utils_1.getEventPublicationRegistryToken; } });
|
|
8
|
-
Object.defineProperty(exports, "getEventPublicationRepositoryToken", { enumerable: true, get: function () { return token_utils_1.getEventPublicationRepositoryToken; } });
|
|
9
|
-
Object.defineProperty(exports, "getEventTypeRegistryToken", { enumerable: true, get: function () { return token_utils_1.getEventTypeRegistryToken; } });
|
|
10
|
-
Object.defineProperty(exports, "getExternalizationRegistryToken", { enumerable: true, get: function () { return token_utils_1.getExternalizationRegistryToken; } });
|
|
11
|
-
Object.defineProperty(exports, "getOutboxEventSerializerToken", { enumerable: true, get: function () { return token_utils_1.getOutboxEventSerializerToken; } });
|
|
12
|
-
Object.defineProperty(exports, "getOutboxListenerRegistryToken", { enumerable: true, get: function () { return token_utils_1.getOutboxListenerRegistryToken; } });
|
|
13
|
-
Object.defineProperty(exports, "getOutboxPublisherToken", { enumerable: true, get: function () { return token_utils_1.getOutboxPublisherToken; } });
|
|
1
|
+
export { getEventExternalizerToken, getEventPublicationProcessorToken, getEventPublicationRegistryToken, getEventPublicationRepositoryToken, getEventTypeRegistryToken, getExternalizationRegistryToken, getOutboxEventSerializerToken, getOutboxListenerRegistryToken, getOutboxPublisherToken, } from './token-utils.js';
|
|
14
2
|
//# sourceMappingURL=index.js.map
|
package/dist/tokens/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOutboxPublisherToken = getOutboxPublisherToken;
|
|
4
|
-
exports.getEventTypeRegistryToken = getEventTypeRegistryToken;
|
|
5
|
-
exports.getEventPublicationRegistryToken = getEventPublicationRegistryToken;
|
|
6
|
-
exports.getEventPublicationProcessorToken = getEventPublicationProcessorToken;
|
|
7
|
-
exports.getOutboxListenerRegistryToken = getOutboxListenerRegistryToken;
|
|
8
|
-
exports.getExternalizationRegistryToken = getExternalizationRegistryToken;
|
|
9
|
-
exports.getEventPublicationRepositoryToken = getEventPublicationRepositoryToken;
|
|
10
|
-
exports.getEventExternalizerToken = getEventExternalizerToken;
|
|
11
|
-
exports.getOutboxEventSerializerToken = getOutboxEventSerializerToken;
|
|
12
|
-
const core_1 = require("@nestjs-transactional/core");
|
|
1
|
+
import { DEFAULT_DATA_SOURCE_NAME } from '@nestjs-transactional/core';
|
|
13
2
|
/**
|
|
14
3
|
* Outbox-side token utilities. Mirror the core utilities (ADR-018) —
|
|
15
4
|
* deterministic DI tokens derived from a dataSource name, default
|
|
@@ -26,7 +15,7 @@ const core_1 = require("@nestjs-transactional/core");
|
|
|
26
15
|
* default-injected publisher is the smart facade (DD-024); this
|
|
27
16
|
* token resolves to the underlying per-dataSource publisher.
|
|
28
17
|
*/
|
|
29
|
-
function getOutboxPublisherToken(dataSource =
|
|
18
|
+
export function getOutboxPublisherToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
30
19
|
return `${dataSource}OutboxEventPublisher`;
|
|
31
20
|
}
|
|
32
21
|
/**
|
|
@@ -35,14 +24,14 @@ function getOutboxPublisherToken(dataSource = core_1.DEFAULT_DATA_SOURCE_NAME) {
|
|
|
35
24
|
* the registry bound to the same dataSource — they do not bleed
|
|
36
25
|
* across dataSources.
|
|
37
26
|
*/
|
|
38
|
-
function getEventTypeRegistryToken(dataSource =
|
|
27
|
+
export function getEventTypeRegistryToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
39
28
|
return `${dataSource}EventTypeRegistry`;
|
|
40
29
|
}
|
|
41
30
|
/**
|
|
42
31
|
* DI token for the per-dataSource `EventPublicationRegistry` — the
|
|
43
32
|
* lifecycle coordinator that owns publication state transitions.
|
|
44
33
|
*/
|
|
45
|
-
function getEventPublicationRegistryToken(dataSource =
|
|
34
|
+
export function getEventPublicationRegistryToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
46
35
|
return `${dataSource}EventPublicationRegistry`;
|
|
47
36
|
}
|
|
48
37
|
/**
|
|
@@ -50,7 +39,7 @@ function getEventPublicationRegistryToken(dataSource = core_1.DEFAULT_DATA_SOURC
|
|
|
50
39
|
* the async worker that drains publications and dispatches them to
|
|
51
40
|
* listeners + externalizer.
|
|
52
41
|
*/
|
|
53
|
-
function getEventPublicationProcessorToken(dataSource =
|
|
42
|
+
export function getEventPublicationProcessorToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
54
43
|
return `${dataSource}EventPublicationProcessor`;
|
|
55
44
|
}
|
|
56
45
|
/**
|
|
@@ -59,13 +48,13 @@ function getEventPublicationProcessorToken(dataSource = core_1.DEFAULT_DATA_SOUR
|
|
|
59
48
|
* classes (and, when wired, `@IntegrationEventsHandler` classes
|
|
60
49
|
* routed via the outbox).
|
|
61
50
|
*/
|
|
62
|
-
function getOutboxListenerRegistryToken(dataSource =
|
|
51
|
+
export function getOutboxListenerRegistryToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
63
52
|
return `${dataSource}OutboxListenerRegistry`;
|
|
64
53
|
}
|
|
65
54
|
/**
|
|
66
55
|
* DI token for the per-dataSource `ExternalizationRegistry`.
|
|
67
56
|
*/
|
|
68
|
-
function getExternalizationRegistryToken(dataSource =
|
|
57
|
+
export function getExternalizationRegistryToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
69
58
|
return `${dataSource}ExternalizationRegistry`;
|
|
70
59
|
}
|
|
71
60
|
/**
|
|
@@ -73,7 +62,7 @@ function getExternalizationRegistryToken(dataSource = core_1.DEFAULT_DATA_SOURCE
|
|
|
73
62
|
* Adapter packages (`outbox-typeorm`, future `outbox-prisma`, etc.)
|
|
74
63
|
* register their concrete repository under this token.
|
|
75
64
|
*/
|
|
76
|
-
function getEventPublicationRepositoryToken(dataSource =
|
|
65
|
+
export function getEventPublicationRepositoryToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
77
66
|
return `${dataSource}EventPublicationRepository`;
|
|
78
67
|
}
|
|
79
68
|
/**
|
|
@@ -82,7 +71,7 @@ function getEventPublicationRepositoryToken(dataSource = core_1.DEFAULT_DATA_SOU
|
|
|
82
71
|
* — e.g. the `'billing'` outbox emits to Kafka, the `'audit'` outbox
|
|
83
72
|
* is internal-only and binds no externalizer.
|
|
84
73
|
*/
|
|
85
|
-
function getEventExternalizerToken(dataSource =
|
|
74
|
+
export function getEventExternalizerToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
86
75
|
return `${dataSource}EventExternalizer`;
|
|
87
76
|
}
|
|
88
77
|
/**
|
|
@@ -92,7 +81,7 @@ function getEventExternalizerToken(dataSource = core_1.DEFAULT_DATA_SOURCE_NAME)
|
|
|
92
81
|
* pattern keeps that pluggable without forcing one strategy
|
|
93
82
|
* process-wide.
|
|
94
83
|
*/
|
|
95
|
-
function getOutboxEventSerializerToken(dataSource =
|
|
84
|
+
export function getOutboxEventSerializerToken(dataSource = DEFAULT_DATA_SOURCE_NAME) {
|
|
96
85
|
return `${dataSource}OutboxEventSerializer`;
|
|
97
86
|
}
|
|
98
87
|
//# sourceMappingURL=token-utils.js.map
|