@nestjs-transactional/outbox 1.1.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 +14 -0
- 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.js +1 -4
- package/dist/externalization/describe-thrown.js.map +1 -1
- 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 -43
- package/dist/index.js +39 -65
- 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 +6 -9
- package/dist/module/outbox-processing.module.js.map +1 -1
- package/dist/module/outbox.module.d.ts +10 -10
- package/dist/module/outbox.module.js +145 -148
- package/dist/module/outbox.module.js.map +1 -1
- package/dist/recovery/outbox-cleanup-scheduler.d.ts +2 -2
- package/dist/recovery/outbox-cleanup-scheduler.js +7 -10
- package/dist/recovery/outbox-cleanup-scheduler.js.map +1 -1
- 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 +2 -2
- 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 +22 -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 +9 -13
- 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.js +3 -6
- package/dist/types/cleanup-config.js.map +1 -1
- 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 +13 -12
|
@@ -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,23 +98,23 @@ 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);
|
|
@@ -139,10 +136,10 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
139
136
|
return result;
|
|
140
137
|
}
|
|
141
138
|
async findIncomplete() {
|
|
142
|
-
return Array.from(this.publications.values()).filter((p) => p.status !==
|
|
139
|
+
return Array.from(this.publications.values()).filter((p) => p.status !== PublicationStatus.COMPLETED);
|
|
143
140
|
}
|
|
144
141
|
async findFailed(options) {
|
|
145
|
-
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);
|
|
146
143
|
const minAge = options?.minAge;
|
|
147
144
|
if (minAge) {
|
|
148
145
|
const threshold = new Date(Date.now() - minAge);
|
|
@@ -157,7 +154,7 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
157
154
|
async deleteCompleted(olderThan) {
|
|
158
155
|
const deleted = [];
|
|
159
156
|
for (const [id, p] of this.publications.entries()) {
|
|
160
|
-
if (p.status !==
|
|
157
|
+
if (p.status !== PublicationStatus.COMPLETED) {
|
|
161
158
|
continue;
|
|
162
159
|
}
|
|
163
160
|
if (olderThan && (p.completionDate === null || p.completionDate >= olderThan)) {
|
|
@@ -223,17 +220,17 @@ let InMemoryEventPublicationRepository = class InMemoryEventPublicationRepositor
|
|
|
223
220
|
});
|
|
224
221
|
}
|
|
225
222
|
catch (err) {
|
|
226
|
-
if (err instanceof
|
|
223
|
+
if (err instanceof IllegalTransactionStateError) {
|
|
227
224
|
return;
|
|
228
225
|
}
|
|
229
226
|
throw err;
|
|
230
227
|
}
|
|
231
228
|
}
|
|
232
229
|
};
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
(0,
|
|
236
|
-
|
|
237
|
-
__metadata("design:paramtypes", [core_1.TransactionManager])
|
|
230
|
+
InMemoryEventPublicationRepository = __decorate([
|
|
231
|
+
Injectable(),
|
|
232
|
+
__param(0, Optional()),
|
|
233
|
+
__metadata("design:paramtypes", [TransactionManager])
|
|
238
234
|
], InMemoryEventPublicationRepository);
|
|
235
|
+
export { InMemoryEventPublicationRepository };
|
|
239
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":";;;;;;;;;;;;AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAQ9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AAEI,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAK1B;IAJF,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEpE,YAEmB,kBAAuC;QAAvC,uBAAkB,GAAlB,kBAAkB,CAAqB;IACvD,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAqB;gBACpC,EAAE,EAAE,UAAU,EAAE;gBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI,IAAI,EAAE;gBACpD,MAAM,EAAE,iBAAiB,CAAC,SAAS;gBACnC,cAAc,EAAE,IAAI;gBACpB,oBAAoB,EAAE,IAAI;gBAC1B,kBAAkB,EAAE,CAAC;gBACrB,aAAa,EAAE,IAAI;aACpB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACtB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,MAAyB,EACzB,UAA+B,EAAE;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,GAAG,QAAQ;YACX,MAAM;YACN,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc;YACjE,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa;YAC9D,kBAAkB,EAAE,OAAO,CAAC,iBAAiB;gBAC3C,CAAC,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC;gBACjC,CAAC,CAAC,QAAQ,CAAC,kBAAkB;YAC/B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,QAAQ,CAAC,oBAAoB;SACpF,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,QAAQ,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS;YAC/C,QAAQ,CAAC,MAAM,KAAK,iBAAiB,CAAC,WAAW,EACjD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,iBAAiB,CAAC,UAAU,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,KAAa;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;aAC1C,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,WAAW,CACzF;aACA,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAgB,EAAE,QAA6B;QAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,GAAG,UAAU,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAChD,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,CAChD,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;QACrC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;QAC3F,CAAC;QAED,qEAAqE;QACrE,mEAAmE;QACnE,sEAAsE;QACtE,kEAAkE;QAClE,iBAAiB;QACjB,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,iBAAiB,CAAC;YACrE,MAAM,KAAK,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,iBAAiB,CAAC;YACtE,OAAO,IAAI,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,CAChD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA2B;QAC1C,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,CAC7C,CAAC;QAEF,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC/B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;YAChD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;QACzC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,IAAI,WAAW,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAgB;QACpC,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAC7C,SAAS;YACX,CAAC;YACD,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,SAAS,CAAC,EAAE,CAAC;gBAC9E,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;gBACtB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;oBAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gDAAgD;IAEhD,0EAA0E;IAC1E,KAAK;QACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,gEAAgE;IAChE,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,qCAAqC;IACrC,KAAK;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,IAAgB;QACpC,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,KAAK,IAAI,EAAE;gBACvD,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,4BAA4B,EAAE,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAA;AA7OY,kCAAkC;IAD9C,UAAU,EAAE;IAKR,WAAA,QAAQ,EAAE,CAAA;qCAC2B,kBAAkB;GAL/C,kCAAkC,CA6O9C"}
|
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;
|
|
@@ -110,5 +107,4 @@ class PublishedEventsView {
|
|
|
110
107
|
return typed.filter((event) => this.predicates.every((pred) => pred(event)));
|
|
111
108
|
}
|
|
112
109
|
}
|
|
113
|
-
exports.PublishedEventsView = PublishedEventsView;
|
|
114
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../src/tokens/token-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../src/tokens/token-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,aAAqB,wBAAwB;IACnF,OAAO,GAAG,UAAU,sBAAsB,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,aAAqB,wBAAwB;IACrF,OAAO,GAAG,UAAU,mBAAmB,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,aAAqB,wBAAwB;IAE7C,OAAO,GAAG,UAAU,0BAA0B,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAC/C,aAAqB,wBAAwB;IAE7C,OAAO,GAAG,UAAU,2BAA2B,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,aAAqB,wBAAwB;IAE7C,OAAO,GAAG,UAAU,wBAAwB,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAC7C,aAAqB,wBAAwB;IAE7C,OAAO,GAAG,UAAU,yBAAyB,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAChD,aAAqB,wBAAwB;IAE7C,OAAO,GAAG,UAAU,4BAA4B,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,aAAqB,wBAAwB;IACrF,OAAO,GAAG,UAAU,mBAAmB,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,aAAqB,wBAAwB;IAE7C,OAAO,GAAG,UAAU,uBAAuB,CAAC;AAC9C,CAAC"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_CLEANUP_CONFIG = void 0;
|
|
4
|
-
const drain_1 = require("../shutdown/drain");
|
|
1
|
+
import { DEFAULT_DRAIN_TIMEOUT_MS } from '../shutdown/drain.js';
|
|
5
2
|
/**
|
|
6
3
|
* Cleanup off; every other value is what it would use if switched on.
|
|
7
4
|
* Seven days of retention is a starting point rather than a
|
|
8
5
|
* recommendation: the right window depends on what the audit trail is
|
|
9
6
|
* for in a given deployment.
|
|
10
7
|
*/
|
|
11
|
-
|
|
8
|
+
export const DEFAULT_CLEANUP_CONFIG = {
|
|
12
9
|
interval: 0,
|
|
13
10
|
retention: 7 * 24 * 60 * 60 * 1000,
|
|
14
11
|
batchSize: 500,
|
|
15
|
-
shutdownTimeout:
|
|
12
|
+
shutdownTimeout: DEFAULT_DRAIN_TIMEOUT_MS,
|
|
16
13
|
};
|
|
17
14
|
//# sourceMappingURL=cleanup-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup-config.js","sourceRoot":"","sources":["../../src/types/cleanup-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cleanup-config.js","sourceRoot":"","sources":["../../src/types/cleanup-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAsDhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAwB;IACzD,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAClC,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,wBAAwB;CAC1C,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CompletionMode = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Behavior when a publication is successfully completed.
|
|
6
3
|
*
|
|
@@ -11,10 +8,10 @@ exports.CompletionMode = void 0;
|
|
|
11
8
|
* - `ARCHIVE`: move the record to an archive table, keeping it for
|
|
12
9
|
* inspection without weighing down the hot queue.
|
|
13
10
|
*/
|
|
14
|
-
var CompletionMode;
|
|
11
|
+
export var CompletionMode;
|
|
15
12
|
(function (CompletionMode) {
|
|
16
13
|
CompletionMode["UPDATE"] = "UPDATE";
|
|
17
14
|
CompletionMode["DELETE"] = "DELETE";
|
|
18
15
|
CompletionMode["ARCHIVE"] = "ARCHIVE";
|
|
19
|
-
})(CompletionMode || (
|
|
16
|
+
})(CompletionMode || (CompletionMode = {}));
|
|
20
17
|
//# sourceMappingURL=completion-mode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-mode.js","sourceRoot":"","sources":["../../src/types/completion-mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion-mode.js","sourceRoot":"","sources":["../../src/types/completion-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;AACrB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
|
package/dist/types/errors.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TransactionError } from '@nestjs-transactional/core';
|
|
2
|
-
import type { PublicationStatus } from './publication-status';
|
|
2
|
+
import type { PublicationStatus } from './publication-status.js';
|
|
3
3
|
/**
|
|
4
4
|
* Base class for errors raised by `@nestjs-transactional/outbox`.
|
|
5
5
|
* Subclass for any specific failure mode so that callers can match on
|
package/dist/types/errors.js
CHANGED
|
@@ -1,64 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DuplicateListenerIdError = exports.DeserializationError = exports.SerializationError = exports.InvalidPublicationTransitionError = exports.PublicationNotFoundError = exports.OutboxError = void 0;
|
|
4
|
-
const core_1 = require("@nestjs-transactional/core");
|
|
1
|
+
import { TransactionError } from '@nestjs-transactional/core';
|
|
5
2
|
/**
|
|
6
3
|
* Base class for errors raised by `@nestjs-transactional/outbox`.
|
|
7
4
|
* Subclass for any specific failure mode so that callers can match on
|
|
8
5
|
* `code` without relying on string parsing.
|
|
9
6
|
*/
|
|
10
|
-
class OutboxError extends
|
|
7
|
+
export class OutboxError extends TransactionError {
|
|
11
8
|
code = 'OUTBOX_ERROR';
|
|
12
9
|
}
|
|
13
|
-
exports.OutboxError = OutboxError;
|
|
14
10
|
/**
|
|
15
11
|
* Raised when a lookup by publication ID finds no matching record.
|
|
16
12
|
*/
|
|
17
|
-
class PublicationNotFoundError extends OutboxError {
|
|
13
|
+
export class PublicationNotFoundError extends OutboxError {
|
|
18
14
|
code = 'PUBLICATION_NOT_FOUND';
|
|
19
15
|
constructor(id) {
|
|
20
16
|
super(`Publication not found: ${id}`);
|
|
21
17
|
}
|
|
22
18
|
}
|
|
23
|
-
exports.PublicationNotFoundError = PublicationNotFoundError;
|
|
24
19
|
/**
|
|
25
20
|
* Raised when the registry is asked to move a publication to a state
|
|
26
21
|
* that is not reachable from its current one — e.g. `COMPLETED` →
|
|
27
22
|
* `PROCESSING`.
|
|
28
23
|
*/
|
|
29
|
-
class InvalidPublicationTransitionError extends OutboxError {
|
|
24
|
+
export class InvalidPublicationTransitionError extends OutboxError {
|
|
30
25
|
code = 'INVALID_PUBLICATION_TRANSITION';
|
|
31
26
|
constructor(from, to) {
|
|
32
27
|
super(`Invalid publication state transition: ${from} → ${to}`);
|
|
33
28
|
}
|
|
34
29
|
}
|
|
35
|
-
exports.InvalidPublicationTransitionError = InvalidPublicationTransitionError;
|
|
36
30
|
/**
|
|
37
31
|
* Raised when the serializer cannot encode an event payload — typically
|
|
38
32
|
* because the payload contains non-plain values (functions, cycles, ...).
|
|
39
33
|
*/
|
|
40
|
-
class SerializationError extends OutboxError {
|
|
34
|
+
export class SerializationError extends OutboxError {
|
|
41
35
|
code = 'SERIALIZATION_ERROR';
|
|
42
36
|
}
|
|
43
|
-
exports.SerializationError = SerializationError;
|
|
44
37
|
/**
|
|
45
38
|
* Raised when the serializer cannot decode a stored event payload —
|
|
46
39
|
* typically because the schema has drifted or the type is unregistered.
|
|
47
40
|
*/
|
|
48
|
-
class DeserializationError extends OutboxError {
|
|
41
|
+
export class DeserializationError extends OutboxError {
|
|
49
42
|
code = 'DESERIALIZATION_ERROR';
|
|
50
43
|
}
|
|
51
|
-
exports.DeserializationError = DeserializationError;
|
|
52
44
|
/**
|
|
53
45
|
* Raised when two listeners are registered with the same id. Listener
|
|
54
46
|
* ids must be globally unique because they are stored on each
|
|
55
47
|
* `EventPublication` row and drive retry / resume resolution.
|
|
56
48
|
*/
|
|
57
|
-
class DuplicateListenerIdError extends OutboxError {
|
|
49
|
+
export class DuplicateListenerIdError extends OutboxError {
|
|
58
50
|
code = 'DUPLICATE_LISTENER_ID';
|
|
59
51
|
constructor(id) {
|
|
60
52
|
super(`Listener with id '${id}' is already registered`);
|
|
61
53
|
}
|
|
62
54
|
}
|
|
63
|
-
exports.DuplicateListenerIdError = DuplicateListenerIdError;
|
|
64
55
|
//# sourceMappingURL=errors.js.map
|
package/dist/types/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAI9D;;;;GAIG;AACH,MAAM,OAAO,WAAY,SAAQ,gBAAgB;IACtC,IAAI,GAAW,cAAc,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IAC9C,IAAI,GAAG,uBAAuB,CAAC;IAExC,YAAY,EAAU;QACpB,KAAK,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iCAAkC,SAAQ,WAAW;IACvD,IAAI,GAAG,gCAAgC,CAAC;IAEjD,YAAY,IAAuB,EAAE,EAAqB;QACxD,KAAK,CAAC,yCAAyC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACxC,IAAI,GAAG,qBAAqB,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAC1C,IAAI,GAAG,uBAAuB,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IAC9C,IAAI,GAAG,uBAAuB,CAAC;IAExC,YAAY,EAAU;QACpB,KAAK,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PublicationStatus = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Lifecycle state of an {@link EventPublication}.
|
|
6
3
|
*
|
|
@@ -14,7 +11,7 @@ exports.PublicationStatus = void 0;
|
|
|
14
11
|
*
|
|
15
12
|
* PUBLISHED → PROCESSING → FAILED → RESUBMITTED → PROCESSING → COMPLETED
|
|
16
13
|
*/
|
|
17
|
-
var PublicationStatus;
|
|
14
|
+
export var PublicationStatus;
|
|
18
15
|
(function (PublicationStatus) {
|
|
19
16
|
/** Created, waiting to be picked up by a listener. */
|
|
20
17
|
PublicationStatus["PUBLISHED"] = "PUBLISHED";
|
|
@@ -26,5 +23,5 @@ var PublicationStatus;
|
|
|
26
23
|
PublicationStatus["FAILED"] = "FAILED";
|
|
27
24
|
/** Previously FAILED, now queued for retry. */
|
|
28
25
|
PublicationStatus["RESUBMITTED"] = "RESUBMITTED";
|
|
29
|
-
})(PublicationStatus || (
|
|
26
|
+
})(PublicationStatus || (PublicationStatus = {}));
|
|
30
27
|
//# sourceMappingURL=publication-status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publication-status.js","sourceRoot":"","sources":["../../src/types/publication-status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publication-status.js","sourceRoot":"","sources":["../../src/types/publication-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAN,IAAY,iBAWX;AAXD,WAAY,iBAAiB;IAC3B,sDAAsD;IACtD,4CAAuB,CAAA;IACvB,8DAA8D;IAC9D,8CAAyB,CAAA;IACzB,sCAAsC;IACtC,4CAAuB,CAAA;IACvB,mCAAmC;IACnC,sCAAiB,CAAA;IACjB,+CAA+C;IAC/C,gDAA2B,CAAA;AAC7B,CAAC,EAXW,iBAAiB,KAAjB,iBAAiB,QAW5B"}
|