@nestjs-transactional/outbox 1.0.0-alpha.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/LICENSE +21 -0
- package/README.md +396 -0
- package/dist/api/completed-event-publications.d.ts +31 -0
- package/dist/api/completed-event-publications.js +58 -0
- package/dist/api/completed-event-publications.js.map +1 -0
- package/dist/api/failed-event-publications.d.ts +36 -0
- package/dist/api/failed-event-publications.js +75 -0
- package/dist/api/failed-event-publications.js.map +1 -0
- package/dist/api/incomplete-event-publications.d.ts +28 -0
- package/dist/api/incomplete-event-publications.js +72 -0
- package/dist/api/incomplete-event-publications.js.map +1 -0
- package/dist/decorators/inject-decorators.d.ts +85 -0
- package/dist/decorators/inject-decorators.js +100 -0
- package/dist/decorators/inject-decorators.js.map +1 -0
- package/dist/decorators/outbox-events-handler.decorator.d.ts +97 -0
- package/dist/decorators/outbox-events-handler.decorator.js +58 -0
- package/dist/decorators/outbox-events-handler.decorator.js.map +1 -0
- package/dist/dispatcher/data-source-outbox-publisher.d.ts +69 -0
- package/dist/dispatcher/data-source-outbox-publisher.js +127 -0
- package/dist/dispatcher/data-source-outbox-publisher.js.map +1 -0
- package/dist/dispatcher/event-publication-processor.d.ts +69 -0
- package/dist/dispatcher/event-publication-processor.js +192 -0
- package/dist/dispatcher/event-publication-processor.js.map +1 -0
- package/dist/dispatcher/outbox-event-publisher.d.ts +129 -0
- package/dist/dispatcher/outbox-event-publisher.js +172 -0
- package/dist/dispatcher/outbox-event-publisher.js.map +1 -0
- package/dist/dispatcher/processor-options.d.ts +24 -0
- package/dist/dispatcher/processor-options.js +15 -0
- package/dist/dispatcher/processor-options.js.map +1 -0
- package/dist/externalization/errors.d.ts +21 -0
- package/dist/externalization/errors.js +30 -0
- package/dist/externalization/errors.js.map +1 -0
- package/dist/externalization/event-externalizer.d.ts +49 -0
- package/dist/externalization/event-externalizer.js +14 -0
- package/dist/externalization/event-externalizer.js.map +1 -0
- package/dist/externalization/externalization-registry.d.ts +56 -0
- package/dist/externalization/externalization-registry.js +103 -0
- package/dist/externalization/externalization-registry.js.map +1 -0
- package/dist/externalization/externalized.decorator.d.ts +121 -0
- package/dist/externalization/externalized.decorator.js +87 -0
- package/dist/externalization/externalized.decorator.js.map +1 -0
- package/dist/externalization/types.d.ts +39 -0
- package/dist/externalization/types.js +3 -0
- package/dist/externalization/types.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/outbox-event-handler.interface.d.ts +32 -0
- package/dist/interfaces/outbox-event-handler.interface.js +3 -0
- package/dist/interfaces/outbox-event-handler.interface.js.map +1 -0
- package/dist/module/outbox-processing.module.d.ts +29 -0
- package/dist/module/outbox-processing.module.js +66 -0
- package/dist/module/outbox-processing.module.js.map +1 -0
- package/dist/module/outbox.module.d.ts +196 -0
- package/dist/module/outbox.module.js +604 -0
- package/dist/module/outbox.module.js.map +1 -0
- package/dist/recovery/staleness-monitor.d.ts +39 -0
- package/dist/recovery/staleness-monitor.js +118 -0
- package/dist/recovery/staleness-monitor.js.map +1 -0
- package/dist/recovery/startup-recovery.d.ts +37 -0
- package/dist/recovery/startup-recovery.js +55 -0
- package/dist/recovery/startup-recovery.js.map +1 -0
- package/dist/registry/event-publication-registry.d.ts +70 -0
- package/dist/registry/event-publication-registry.js +138 -0
- package/dist/registry/event-publication-registry.js.map +1 -0
- package/dist/registry/listener-registry.d.ts +52 -0
- package/dist/registry/listener-registry.js +67 -0
- package/dist/registry/listener-registry.js.map +1 -0
- package/dist/registry/multi-ds-listener-registrar.d.ts +78 -0
- package/dist/registry/multi-ds-listener-registrar.js +112 -0
- package/dist/registry/multi-ds-listener-registrar.js.map +1 -0
- package/dist/registry/outbox-listener-scanner.d.ts +66 -0
- package/dist/registry/outbox-listener-scanner.js +192 -0
- package/dist/registry/outbox-listener-scanner.js.map +1 -0
- package/dist/repository/event-publication-repository.d.ts +112 -0
- package/dist/repository/event-publication-repository.js +6 -0
- package/dist/repository/event-publication-repository.js.map +1 -0
- package/dist/serialization/event-serializer.d.ts +28 -0
- package/dist/serialization/event-serializer.js +6 -0
- package/dist/serialization/event-serializer.js.map +1 -0
- package/dist/serialization/event-type-registry.d.ts +41 -0
- package/dist/serialization/event-type-registry.js +79 -0
- package/dist/serialization/event-type-registry.js.map +1 -0
- package/dist/serialization/event-type-resolver.d.ts +43 -0
- package/dist/serialization/event-type-resolver.js +66 -0
- package/dist/serialization/event-type-resolver.js.map +1 -0
- package/dist/serialization/json-event-serializer.d.ts +20 -0
- package/dist/serialization/json-event-serializer.js +64 -0
- package/dist/serialization/json-event-serializer.js.map +1 -0
- package/dist/testing/assertable-published-events.d.ts +71 -0
- package/dist/testing/assertable-published-events.js +124 -0
- package/dist/testing/assertable-published-events.js.map +1 -0
- package/dist/testing/in-memory-repository.d.ts +52 -0
- package/dist/testing/in-memory-repository.js +230 -0
- package/dist/testing/in-memory-repository.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.js +20 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/published-events.d.ts +62 -0
- package/dist/testing/published-events.js +110 -0
- package/dist/testing/published-events.js.map +1 -0
- package/dist/tokens/index.d.ts +2 -0
- package/dist/tokens/index.js +14 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/token-utils.d.ts +68 -0
- package/dist/tokens/token-utils.js +98 -0
- package/dist/tokens/token-utils.js.map +1 -0
- package/dist/types/completion-mode.d.ts +16 -0
- package/dist/types/completion-mode.js +20 -0
- package/dist/types/completion-mode.js.map +1 -0
- package/dist/types/errors.d.ts +50 -0
- package/dist/types/errors.js +64 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/event-publication.d.ts +47 -0
- package/dist/types/event-publication.js +3 -0
- package/dist/types/event-publication.js.map +1 -0
- package/dist/types/publication-status.d.ts +26 -0
- package/dist/types/publication-status.js +30 -0
- package/dist/types/publication-status.js.map +1 -0
- package/dist/types/resubmission-options.d.ts +37 -0
- package/dist/types/resubmission-options.js +62 -0
- package/dist/types/resubmission-options.js.map +1 -0
- package/dist/types/staleness-config.d.ts +18 -0
- package/dist/types/staleness-config.js +10 -0
- package/dist/types/staleness-config.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,604 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var OutboxModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.OutboxModule = exports.OUTBOX_PROCESSING_BUNDLE = exports.OUTBOX_STALENESS_CONFIG = exports.OUTBOX_PROCESSOR_OPTIONS = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const core_1 = require("@nestjs/core");
|
|
13
|
+
const core_2 = require("@nestjs-transactional/core");
|
|
14
|
+
const completed_event_publications_1 = require("../api/completed-event-publications");
|
|
15
|
+
const failed_event_publications_1 = require("../api/failed-event-publications");
|
|
16
|
+
const incomplete_event_publications_1 = require("../api/incomplete-event-publications");
|
|
17
|
+
const data_source_outbox_publisher_1 = require("../dispatcher/data-source-outbox-publisher");
|
|
18
|
+
const event_publication_processor_1 = require("../dispatcher/event-publication-processor");
|
|
19
|
+
const outbox_event_publisher_1 = require("../dispatcher/outbox-event-publisher");
|
|
20
|
+
const processor_options_1 = require("../dispatcher/processor-options");
|
|
21
|
+
const event_externalizer_1 = require("../externalization/event-externalizer");
|
|
22
|
+
const externalization_registry_1 = require("../externalization/externalization-registry");
|
|
23
|
+
const staleness_monitor_1 = require("../recovery/staleness-monitor");
|
|
24
|
+
const startup_recovery_1 = require("../recovery/startup-recovery");
|
|
25
|
+
const event_publication_registry_1 = require("../registry/event-publication-registry");
|
|
26
|
+
const listener_registry_1 = require("../registry/listener-registry");
|
|
27
|
+
const multi_ds_listener_registrar_1 = require("../registry/multi-ds-listener-registrar");
|
|
28
|
+
const outbox_listener_scanner_1 = require("../registry/outbox-listener-scanner");
|
|
29
|
+
const event_publication_repository_1 = require("../repository/event-publication-repository");
|
|
30
|
+
const event_serializer_1 = require("../serialization/event-serializer");
|
|
31
|
+
const event_type_registry_1 = require("../serialization/event-type-registry");
|
|
32
|
+
const json_event_serializer_1 = require("../serialization/json-event-serializer");
|
|
33
|
+
const in_memory_repository_1 = require("../testing/in-memory-repository");
|
|
34
|
+
const token_utils_1 = require("../tokens/token-utils");
|
|
35
|
+
const staleness_config_1 = require("../types/staleness-config");
|
|
36
|
+
const DEFAULT_DATA_SOURCE = 'default';
|
|
37
|
+
/** DI token carrying the resolved {@link EventPublicationProcessorOptions}. */
|
|
38
|
+
exports.OUTBOX_PROCESSOR_OPTIONS = Symbol('OUTBOX_PROCESSOR_OPTIONS');
|
|
39
|
+
/** DI token carrying the resolved {@link StalenessConfig}. */
|
|
40
|
+
exports.OUTBOX_STALENESS_CONFIG = Symbol('OUTBOX_STALENESS_CONFIG');
|
|
41
|
+
/**
|
|
42
|
+
* Bundle of per-dataSource processors and monitors that
|
|
43
|
+
* {@link OutboxProcessingModule} reads on bootstrap to start every
|
|
44
|
+
* configured outbox loop. Provided by `forRoot` so the processing
|
|
45
|
+
* module needs no per-dataSource configuration of its own.
|
|
46
|
+
*/
|
|
47
|
+
exports.OUTBOX_PROCESSING_BUNDLE = Symbol('OUTBOX_PROCESSING_BUNDLE');
|
|
48
|
+
const ASYNC_OPTIONS_TOKEN = (ds) => Symbol(`OUTBOX_ASYNC_OPTIONS[${ds}]`);
|
|
49
|
+
function resolveProcessorOptions(processor, completionMode) {
|
|
50
|
+
return {
|
|
51
|
+
...processor_options_1.DEFAULT_PROCESSOR_OPTIONS,
|
|
52
|
+
...processor,
|
|
53
|
+
completionMode: completionMode ?? processor?.completionMode ?? processor_options_1.DEFAULT_PROCESSOR_OPTIONS.completionMode,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function resolveStalenessConfig(staleness) {
|
|
57
|
+
return { ...staleness_config_1.DEFAULT_STALENESS_CONFIG, ...staleness };
|
|
58
|
+
}
|
|
59
|
+
function resolveRecoveryOptions(republishOnStartup, startupBatchSize) {
|
|
60
|
+
return {
|
|
61
|
+
republishOnStartup: republishOnStartup ?? false,
|
|
62
|
+
startupBatchSize,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Re-bind a Provider's `provide` field to a per-dataSource token.
|
|
67
|
+
* Users supply repository / serializer providers with whatever
|
|
68
|
+
* `provide` value they want (typically the historical singleton
|
|
69
|
+
* tokens) — the module owns the actual token routing per-dataSource
|
|
70
|
+
* and overwrites `provide` here.
|
|
71
|
+
*/
|
|
72
|
+
function reBindProvider(provider, token) {
|
|
73
|
+
if (typeof provider === 'function') {
|
|
74
|
+
return { provide: token, useClass: provider };
|
|
75
|
+
}
|
|
76
|
+
return { ...provider, provide: token };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* NestJS module that wires the Event Publication Registry. ADR-019
|
|
80
|
+
* shape — multi-dataSource deployments call {@link forRoot} once per
|
|
81
|
+
* dataSource. The first call registers process-wide singletons (smart
|
|
82
|
+
* facade, listener scanner, processing bundle); subsequent calls only
|
|
83
|
+
* register per-dataSource providers. Default-DS class-token aliases
|
|
84
|
+
* are registered by whichever call has `dataSource: 'default'` (or
|
|
85
|
+
* `dataSource` omitted).
|
|
86
|
+
*
|
|
87
|
+
* Cross-call state lives in {@link registrations} — a static class
|
|
88
|
+
* storage keyed by dataSource name. Mirrors `@nestjs/typeorm`'s
|
|
89
|
+
* `EntitiesMetadataStorage` pattern.
|
|
90
|
+
*
|
|
91
|
+
* Does NOT start the processor or staleness monitor automatically —
|
|
92
|
+
* import {@link OutboxProcessingModule} in the worker process to
|
|
93
|
+
* auto-start every registered per-dataSource loop on
|
|
94
|
+
* `OnApplicationBootstrap`.
|
|
95
|
+
*
|
|
96
|
+
* Requires `TransactionalModule.forRoot({ isGlobal: true })` registered
|
|
97
|
+
* earlier in the module tree so the per-DS publisher can find the
|
|
98
|
+
* `TransactionManager` via the global DI scope.
|
|
99
|
+
*/
|
|
100
|
+
let OutboxModule = class OutboxModule {
|
|
101
|
+
static { OutboxModule_1 = this; }
|
|
102
|
+
/**
|
|
103
|
+
* @internal
|
|
104
|
+
* Process-wide registry of every dataSource that has called
|
|
105
|
+
* {@link forRoot} or {@link forRootAsync}. Singleton factories
|
|
106
|
+
* (smart facade, processing bundle) close over this Map and
|
|
107
|
+
* enumerate it at injection time, after every `forRoot` has been
|
|
108
|
+
* evaluated synchronously.
|
|
109
|
+
*
|
|
110
|
+
* Tests that build multiple modules sequentially MUST call
|
|
111
|
+
* {@link resetForTesting} between cases — otherwise residual
|
|
112
|
+
* registrations from earlier tests collide with later ones.
|
|
113
|
+
*/
|
|
114
|
+
static registrations = new Map();
|
|
115
|
+
/**
|
|
116
|
+
* Test-only — drop every registration so a subsequent `forRoot`
|
|
117
|
+
* starts from a clean slate. Mirrors the cleanup pattern used with
|
|
118
|
+
* `EntitiesMetadataStorage` in `@nestjs/typeorm` test suites.
|
|
119
|
+
*
|
|
120
|
+
* Production code should never call this. Calling at runtime
|
|
121
|
+
* after the module has been initialised would NOT clear the
|
|
122
|
+
* provider tree NestJS already built — it only clears the
|
|
123
|
+
* registration record that drives subsequent `forRoot` calls.
|
|
124
|
+
*
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
static resetForTesting() {
|
|
128
|
+
this.registrations.clear();
|
|
129
|
+
}
|
|
130
|
+
static forRoot(options = {}) {
|
|
131
|
+
const ds = options.dataSource ?? DEFAULT_DATA_SOURCE;
|
|
132
|
+
if (this.registrations.has(ds)) {
|
|
133
|
+
throw new Error(`OutboxModule.forRoot('${ds}') called twice — dataSource names must be unique. ` +
|
|
134
|
+
`If this is a test, call OutboxModule.resetForTesting() between cases.`);
|
|
135
|
+
}
|
|
136
|
+
const isFirstRegistration = this.registrations.size === 0;
|
|
137
|
+
const processorOpts = resolveProcessorOptions(options.processor, options.completionMode);
|
|
138
|
+
const stalenessCfg = resolveStalenessConfig(options.staleness);
|
|
139
|
+
const recoveryOpts = resolveRecoveryOptions(options.republishOnStartup, options.startupBatchSize);
|
|
140
|
+
this.registrations.set(ds, {
|
|
141
|
+
dataSource: ds,
|
|
142
|
+
processorOptions: processorOpts,
|
|
143
|
+
stalenessConfig: stalenessCfg,
|
|
144
|
+
recoveryOptions: recoveryOpts,
|
|
145
|
+
});
|
|
146
|
+
const providers = [
|
|
147
|
+
...buildPerDataSourceProviders(ds, options.repository, options.serializer, processorOpts, stalenessCfg, recoveryOpts),
|
|
148
|
+
];
|
|
149
|
+
const exportTokens = [...perDataSourceExports(ds)];
|
|
150
|
+
if (ds === DEFAULT_DATA_SOURCE) {
|
|
151
|
+
providers.push(...buildDefaultDataSourceAliases());
|
|
152
|
+
providers.push(failed_event_publications_1.FailedEventPublications, incomplete_event_publications_1.IncompleteEventPublications, completed_event_publications_1.CompletedEventPublications, startup_recovery_1.StartupRecoveryService);
|
|
153
|
+
exportTokens.push(...defaultDataSourceAliasTokens());
|
|
154
|
+
exportTokens.push(failed_event_publications_1.FailedEventPublications, incomplete_event_publications_1.IncompleteEventPublications, completed_event_publications_1.CompletedEventPublications, startup_recovery_1.StartupRecoveryService);
|
|
155
|
+
}
|
|
156
|
+
if (isFirstRegistration) {
|
|
157
|
+
// Process-wide singletons. Their factories close over this
|
|
158
|
+
// class's `registrations` Map and read it at injection time —
|
|
159
|
+
// by then every other forRoot has already pushed its record in
|
|
160
|
+
// (forRoot bodies run synchronously at module-definition time).
|
|
161
|
+
providers.push(...buildFacadePublisherProvider(OutboxModule_1));
|
|
162
|
+
providers.push(buildProcessingBundleProvider(OutboxModule_1));
|
|
163
|
+
providers.push(outbox_listener_scanner_1.OutboxListenerScanner);
|
|
164
|
+
providers.push(...buildMultiDsRegistrarProviders());
|
|
165
|
+
exportTokens.push(outbox_event_publisher_1.OutboxEventPublisher);
|
|
166
|
+
exportTokens.push(exports.OUTBOX_PROCESSING_BUNDLE);
|
|
167
|
+
exportTokens.push(multi_ds_listener_registrar_1.MultiDsOutboxListenerRegistrar);
|
|
168
|
+
exportTokens.push(multi_ds_listener_registrar_1.OUTBOX_LISTENER_REGISTRAR_TOKEN);
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
module: OutboxModule_1,
|
|
172
|
+
global: options.isGlobal ?? true,
|
|
173
|
+
imports: [core_1.DiscoveryModule],
|
|
174
|
+
providers,
|
|
175
|
+
exports: exportTokens,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Asynchronous registration of one dataSource's outbox stack.
|
|
180
|
+
* Symmetric with {@link forRoot} — call once per dataSource;
|
|
181
|
+
* provider-valued fields (`serializer`, `repository`) stay static
|
|
182
|
+
* because providers must be known at module-definition time, while
|
|
183
|
+
* `processor` / `staleness` / etc. resolve via the async factory.
|
|
184
|
+
*/
|
|
185
|
+
static forRootAsync(options) {
|
|
186
|
+
const ds = options.dataSource ?? DEFAULT_DATA_SOURCE;
|
|
187
|
+
if (this.registrations.has(ds)) {
|
|
188
|
+
throw new Error(`OutboxModule.forRootAsync('${ds}') called twice — dataSource names must be unique. ` +
|
|
189
|
+
`If this is a test, call OutboxModule.resetForTesting() between cases.`);
|
|
190
|
+
}
|
|
191
|
+
const isFirstRegistration = this.registrations.size === 0;
|
|
192
|
+
// Stub the registration record with defaults — async factory hasn't
|
|
193
|
+
// run yet, so concrete options are filled in by per-DS factory
|
|
194
|
+
// providers below. Singletons that read the Map at injection time
|
|
195
|
+
// only consume `dataSource`, so this stub is sufficient.
|
|
196
|
+
this.registrations.set(ds, {
|
|
197
|
+
dataSource: ds,
|
|
198
|
+
processorOptions: resolveProcessorOptions(undefined, undefined),
|
|
199
|
+
stalenessConfig: resolveStalenessConfig(undefined),
|
|
200
|
+
recoveryOptions: resolveRecoveryOptions(undefined, undefined),
|
|
201
|
+
});
|
|
202
|
+
const asyncToken = ASYNC_OPTIONS_TOKEN(ds);
|
|
203
|
+
const asyncOptionsProvider = {
|
|
204
|
+
provide: asyncToken,
|
|
205
|
+
useFactory: options.useFactory,
|
|
206
|
+
inject: options.inject ? [...options.inject] : undefined,
|
|
207
|
+
};
|
|
208
|
+
const eventTypeRegistryToken = (0, token_utils_1.getEventTypeRegistryToken)(ds);
|
|
209
|
+
const repositoryToken = (0, token_utils_1.getEventPublicationRepositoryToken)(ds);
|
|
210
|
+
const serializerToken = (0, token_utils_1.getOutboxEventSerializerToken)(ds);
|
|
211
|
+
const listenerRegistryToken = (0, token_utils_1.getOutboxListenerRegistryToken)(ds);
|
|
212
|
+
const publicationRegistryToken = (0, token_utils_1.getEventPublicationRegistryToken)(ds);
|
|
213
|
+
const externalizationRegistryToken = (0, token_utils_1.getExternalizationRegistryToken)(ds);
|
|
214
|
+
const processorToken = (0, token_utils_1.getEventPublicationProcessorToken)(ds);
|
|
215
|
+
const publisherToken = (0, token_utils_1.getOutboxPublisherToken)(ds);
|
|
216
|
+
const stalenessToken = perDsStalenessMonitorToken(ds);
|
|
217
|
+
const recoveryToken = perDsStartupRecoveryToken(ds);
|
|
218
|
+
const processorOptionsToken = perDsProcessorOptionsToken(ds);
|
|
219
|
+
const stalenessConfigToken = perDsStalenessConfigToken(ds);
|
|
220
|
+
const recoveryOptionsToken = perDsRecoveryOptionsToken(ds);
|
|
221
|
+
const providers = [
|
|
222
|
+
asyncOptionsProvider,
|
|
223
|
+
{ provide: eventTypeRegistryToken, useFactory: () => new event_type_registry_1.EventTypeRegistry() },
|
|
224
|
+
options.repository
|
|
225
|
+
? reBindProvider(options.repository, repositoryToken)
|
|
226
|
+
: { provide: repositoryToken, useClass: in_memory_repository_1.InMemoryEventPublicationRepository },
|
|
227
|
+
options.serializer
|
|
228
|
+
? reBindProvider(options.serializer, serializerToken)
|
|
229
|
+
: {
|
|
230
|
+
provide: serializerToken,
|
|
231
|
+
useFactory: (registry) => new json_event_serializer_1.JsonEventSerializer(registry),
|
|
232
|
+
inject: [eventTypeRegistryToken],
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
provide: listenerRegistryToken,
|
|
236
|
+
useFactory: () => new listener_registry_1.OutboxListenerRegistry(),
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
provide: publicationRegistryToken,
|
|
240
|
+
useFactory: (repo, serializer) => new event_publication_registry_1.EventPublicationRegistry(repo, serializer),
|
|
241
|
+
inject: [repositoryToken, serializerToken],
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
provide: externalizationRegistryToken,
|
|
245
|
+
useFactory: (etr) => new externalization_registry_1.ExternalizationRegistry(etr),
|
|
246
|
+
inject: [eventTypeRegistryToken],
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
provide: processorOptionsToken,
|
|
250
|
+
useFactory: (opts) => resolveProcessorOptions(opts.processor, opts.completionMode),
|
|
251
|
+
inject: [asyncToken],
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
provide: processorToken,
|
|
255
|
+
useFactory: (registry, listeners, opts, externalizer, externalizationRegistry) => new event_publication_processor_1.EventPublicationProcessor(registry, listeners, opts, externalizer, externalizationRegistry),
|
|
256
|
+
inject: [
|
|
257
|
+
publicationRegistryToken,
|
|
258
|
+
listenerRegistryToken,
|
|
259
|
+
processorOptionsToken,
|
|
260
|
+
{ token: event_externalizer_1.EVENT_EXTERNALIZER, optional: true },
|
|
261
|
+
externalizationRegistryToken,
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
provide: stalenessConfigToken,
|
|
266
|
+
useFactory: (opts) => resolveStalenessConfig(opts.staleness),
|
|
267
|
+
inject: [asyncToken],
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
provide: stalenessToken,
|
|
271
|
+
useFactory: (repo, cfg) => new staleness_monitor_1.StalenessMonitor(repo, cfg),
|
|
272
|
+
inject: [repositoryToken, stalenessConfigToken],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
provide: recoveryOptionsToken,
|
|
276
|
+
useFactory: (opts) => resolveRecoveryOptions(opts.republishOnStartup, opts.startupBatchSize),
|
|
277
|
+
inject: [asyncToken],
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
provide: publisherToken,
|
|
281
|
+
useFactory: (publicationRegistry, listenerRegistry) => new data_source_outbox_publisher_1.DataSourceOutboxPublisher(ds, publicationRegistry, listenerRegistry),
|
|
282
|
+
inject: [publicationRegistryToken, listenerRegistryToken],
|
|
283
|
+
},
|
|
284
|
+
];
|
|
285
|
+
const exportTokens = [...perDataSourceExports(ds)];
|
|
286
|
+
if (ds === DEFAULT_DATA_SOURCE) {
|
|
287
|
+
providers.push({ provide: recoveryToken, useExisting: startup_recovery_1.StartupRecoveryService }, ...buildDefaultDataSourceAliases(), failed_event_publications_1.FailedEventPublications, incomplete_event_publications_1.IncompleteEventPublications, completed_event_publications_1.CompletedEventPublications, startup_recovery_1.StartupRecoveryService);
|
|
288
|
+
exportTokens.push(...defaultDataSourceAliasTokens());
|
|
289
|
+
exportTokens.push(failed_event_publications_1.FailedEventPublications, incomplete_event_publications_1.IncompleteEventPublications, completed_event_publications_1.CompletedEventPublications, startup_recovery_1.StartupRecoveryService);
|
|
290
|
+
}
|
|
291
|
+
if (isFirstRegistration) {
|
|
292
|
+
providers.push(...buildFacadePublisherProvider(OutboxModule_1));
|
|
293
|
+
providers.push(buildProcessingBundleProvider(OutboxModule_1));
|
|
294
|
+
providers.push(outbox_listener_scanner_1.OutboxListenerScanner);
|
|
295
|
+
providers.push(...buildMultiDsRegistrarProviders());
|
|
296
|
+
exportTokens.push(outbox_event_publisher_1.OutboxEventPublisher);
|
|
297
|
+
exportTokens.push(exports.OUTBOX_PROCESSING_BUNDLE);
|
|
298
|
+
exportTokens.push(multi_ds_listener_registrar_1.MultiDsOutboxListenerRegistrar);
|
|
299
|
+
exportTokens.push(multi_ds_listener_registrar_1.OUTBOX_LISTENER_REGISTRAR_TOKEN);
|
|
300
|
+
}
|
|
301
|
+
return {
|
|
302
|
+
module: OutboxModule_1,
|
|
303
|
+
global: options.isGlobal ?? true,
|
|
304
|
+
imports: [core_1.DiscoveryModule, ...(options.imports ?? [])],
|
|
305
|
+
providers,
|
|
306
|
+
exports: exportTokens,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Register event classes that the outbox should know about — typed
|
|
311
|
+
* inputs to the per-dataSource `EventTypeRegistry` so the JSON
|
|
312
|
+
* serializer can revive stored payloads back into class instances,
|
|
313
|
+
* and so externalization mappings (`@Externalized`) can be picked
|
|
314
|
+
* up by the registry scan.
|
|
315
|
+
*
|
|
316
|
+
* @param eventTypes Event classes to register. Empty array is a
|
|
317
|
+
* no-op (matches `TypeOrmModule.forFeature([])`).
|
|
318
|
+
* @param options Optional per-call options. `dataSource` defaults
|
|
319
|
+
* to `'default'` — single-dataSource consumers omit it.
|
|
320
|
+
*
|
|
321
|
+
* @example Single-dataSource
|
|
322
|
+
* ```ts
|
|
323
|
+
* OutboxModule.forFeature([OrderPlacedEvent, OrderShippedEvent])
|
|
324
|
+
* ```
|
|
325
|
+
*
|
|
326
|
+
* @example Multi-dataSource
|
|
327
|
+
* ```ts
|
|
328
|
+
* OutboxModule.forFeature([BillingEvent], { dataSource: 'billing' })
|
|
329
|
+
* OutboxModule.forFeature([InventoryEvent], { dataSource: 'inventory' })
|
|
330
|
+
* ```
|
|
331
|
+
*
|
|
332
|
+
* Multiple `forFeature` calls accumulate into the per-dataSource
|
|
333
|
+
* registry. Duplicate registrations (same event class, same
|
|
334
|
+
* dataSource) throw at bootstrap with a clear message.
|
|
335
|
+
*/
|
|
336
|
+
static forFeature(eventTypes, options = {}) {
|
|
337
|
+
const dataSource = options.dataSource ?? DEFAULT_DATA_SOURCE;
|
|
338
|
+
// Symbol() (not Symbol.for) — each forFeature call gets a unique
|
|
339
|
+
// token so multiple imports in the same or different modules
|
|
340
|
+
// don't collide. The factory runs eagerly (singleton scope) for
|
|
341
|
+
// its side effect: registering the listed event classes with the
|
|
342
|
+
// per-dataSource EventTypeRegistry.
|
|
343
|
+
const featureToken = Symbol(`OUTBOX_FEATURE_REGISTRATION[${dataSource}]`);
|
|
344
|
+
return {
|
|
345
|
+
module: OutboxModule_1,
|
|
346
|
+
providers: [
|
|
347
|
+
{
|
|
348
|
+
provide: featureToken,
|
|
349
|
+
useFactory: (registry) => {
|
|
350
|
+
for (const eventType of eventTypes) {
|
|
351
|
+
registry.register(eventType);
|
|
352
|
+
}
|
|
353
|
+
return true;
|
|
354
|
+
},
|
|
355
|
+
inject: [(0, token_utils_1.getEventTypeRegistryToken)(dataSource)],
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
exports.OutboxModule = OutboxModule;
|
|
362
|
+
exports.OutboxModule = OutboxModule = OutboxModule_1 = __decorate([
|
|
363
|
+
(0, common_1.Module)({})
|
|
364
|
+
], OutboxModule);
|
|
365
|
+
// ---------------------------------------------------------------------------
|
|
366
|
+
// Per-dataSource provider helpers
|
|
367
|
+
// ---------------------------------------------------------------------------
|
|
368
|
+
function perDsStalenessMonitorToken(ds) {
|
|
369
|
+
return `${ds}StalenessMonitor`;
|
|
370
|
+
}
|
|
371
|
+
function perDsStartupRecoveryToken(ds) {
|
|
372
|
+
return `${ds}StartupRecoveryService`;
|
|
373
|
+
}
|
|
374
|
+
function perDsProcessorOptionsToken(ds) {
|
|
375
|
+
return `${ds}ProcessorOptions`;
|
|
376
|
+
}
|
|
377
|
+
function perDsStalenessConfigToken(ds) {
|
|
378
|
+
return `${ds}StalenessConfig`;
|
|
379
|
+
}
|
|
380
|
+
function perDsRecoveryOptionsToken(ds) {
|
|
381
|
+
return `${ds}RecoveryOptions`;
|
|
382
|
+
}
|
|
383
|
+
function buildPerDataSourceProviders(ds, repository, serializer, processorOpts, stalenessCfg, recoveryOpts) {
|
|
384
|
+
const eventTypeRegistryToken = (0, token_utils_1.getEventTypeRegistryToken)(ds);
|
|
385
|
+
const repositoryToken = (0, token_utils_1.getEventPublicationRepositoryToken)(ds);
|
|
386
|
+
const serializerToken = (0, token_utils_1.getOutboxEventSerializerToken)(ds);
|
|
387
|
+
const listenerRegistryToken = (0, token_utils_1.getOutboxListenerRegistryToken)(ds);
|
|
388
|
+
const publicationRegistryToken = (0, token_utils_1.getEventPublicationRegistryToken)(ds);
|
|
389
|
+
const externalizationRegistryToken = (0, token_utils_1.getExternalizationRegistryToken)(ds);
|
|
390
|
+
const processorToken = (0, token_utils_1.getEventPublicationProcessorToken)(ds);
|
|
391
|
+
const publisherToken = (0, token_utils_1.getOutboxPublisherToken)(ds);
|
|
392
|
+
const stalenessToken = perDsStalenessMonitorToken(ds);
|
|
393
|
+
const recoveryToken = perDsStartupRecoveryToken(ds);
|
|
394
|
+
const processorOptionsToken = perDsProcessorOptionsToken(ds);
|
|
395
|
+
const stalenessConfigToken = perDsStalenessConfigToken(ds);
|
|
396
|
+
const recoveryOptionsToken = perDsRecoveryOptionsToken(ds);
|
|
397
|
+
return [
|
|
398
|
+
{ provide: eventTypeRegistryToken, useFactory: () => new event_type_registry_1.EventTypeRegistry() },
|
|
399
|
+
repository
|
|
400
|
+
? reBindProvider(repository, repositoryToken)
|
|
401
|
+
: { provide: repositoryToken, useClass: in_memory_repository_1.InMemoryEventPublicationRepository },
|
|
402
|
+
serializer
|
|
403
|
+
? reBindProvider(serializer, serializerToken)
|
|
404
|
+
: {
|
|
405
|
+
provide: serializerToken,
|
|
406
|
+
useFactory: (registry) => new json_event_serializer_1.JsonEventSerializer(registry),
|
|
407
|
+
inject: [eventTypeRegistryToken],
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
provide: listenerRegistryToken,
|
|
411
|
+
useFactory: () => new listener_registry_1.OutboxListenerRegistry(),
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
provide: publicationRegistryToken,
|
|
415
|
+
useFactory: (repo, s) => new event_publication_registry_1.EventPublicationRegistry(repo, s),
|
|
416
|
+
inject: [repositoryToken, serializerToken],
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
provide: externalizationRegistryToken,
|
|
420
|
+
useFactory: (etr) => new externalization_registry_1.ExternalizationRegistry(etr),
|
|
421
|
+
inject: [eventTypeRegistryToken],
|
|
422
|
+
},
|
|
423
|
+
{ provide: processorOptionsToken, useValue: processorOpts },
|
|
424
|
+
{
|
|
425
|
+
provide: processorToken,
|
|
426
|
+
useFactory: (registry, listeners, opts, externalizer, externalizationRegistry) => new event_publication_processor_1.EventPublicationProcessor(registry, listeners, opts, externalizer, externalizationRegistry),
|
|
427
|
+
inject: [
|
|
428
|
+
publicationRegistryToken,
|
|
429
|
+
listenerRegistryToken,
|
|
430
|
+
processorOptionsToken,
|
|
431
|
+
{ token: event_externalizer_1.EVENT_EXTERNALIZER, optional: true },
|
|
432
|
+
externalizationRegistryToken,
|
|
433
|
+
],
|
|
434
|
+
},
|
|
435
|
+
{ provide: stalenessConfigToken, useValue: stalenessCfg },
|
|
436
|
+
{
|
|
437
|
+
provide: stalenessToken,
|
|
438
|
+
useFactory: (repo, cfg) => new staleness_monitor_1.StalenessMonitor(repo, cfg),
|
|
439
|
+
inject: [repositoryToken, stalenessConfigToken],
|
|
440
|
+
},
|
|
441
|
+
{ provide: recoveryOptionsToken, useValue: recoveryOpts },
|
|
442
|
+
// StartupRecoveryService for non-default dataSources alias to the
|
|
443
|
+
// class-token instance registered by the default-DS forRoot. The
|
|
444
|
+
// class-token instance reads IncompleteEventPublications +
|
|
445
|
+
// OUTBOX_RECOVERY_OPTIONS — both bound to the default-DS
|
|
446
|
+
// repository. For multi-DS recovery to fire per-dataSource we'd
|
|
447
|
+
// need a per-DS StartupRecoveryService class; deferred to a later
|
|
448
|
+
// phase when multi-DS recovery is exercised. Today's behaviour:
|
|
449
|
+
// recovery runs on the default-DS only.
|
|
450
|
+
{ provide: recoveryToken, useExisting: startup_recovery_1.StartupRecoveryService },
|
|
451
|
+
{
|
|
452
|
+
provide: publisherToken,
|
|
453
|
+
useFactory: (publicationRegistry, listenerRegistry) => new data_source_outbox_publisher_1.DataSourceOutboxPublisher(ds, publicationRegistry, listenerRegistry),
|
|
454
|
+
inject: [publicationRegistryToken, listenerRegistryToken],
|
|
455
|
+
},
|
|
456
|
+
];
|
|
457
|
+
}
|
|
458
|
+
function perDataSourceExports(ds) {
|
|
459
|
+
return [
|
|
460
|
+
(0, token_utils_1.getEventTypeRegistryToken)(ds),
|
|
461
|
+
(0, token_utils_1.getEventPublicationRepositoryToken)(ds),
|
|
462
|
+
(0, token_utils_1.getOutboxEventSerializerToken)(ds),
|
|
463
|
+
(0, token_utils_1.getOutboxListenerRegistryToken)(ds),
|
|
464
|
+
(0, token_utils_1.getEventPublicationRegistryToken)(ds),
|
|
465
|
+
(0, token_utils_1.getExternalizationRegistryToken)(ds),
|
|
466
|
+
(0, token_utils_1.getEventPublicationProcessorToken)(ds),
|
|
467
|
+
(0, token_utils_1.getOutboxPublisherToken)(ds),
|
|
468
|
+
];
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Class-token / singleton-token aliases for the `'default'` dataSource.
|
|
472
|
+
* Registered only when the default DS itself is registered via a
|
|
473
|
+
* `forRoot`/`forRootAsync` call. Preserves the historical contract
|
|
474
|
+
* where `module.get(EventPublicationRegistry)` and
|
|
475
|
+
* `@Inject(EVENT_PUBLICATION_REPOSITORY)` resolve to the
|
|
476
|
+
* single-dataSource instance.
|
|
477
|
+
*/
|
|
478
|
+
function buildDefaultDataSourceAliases() {
|
|
479
|
+
const ds = DEFAULT_DATA_SOURCE;
|
|
480
|
+
return [
|
|
481
|
+
{ provide: event_type_registry_1.EVENT_TYPE_REGISTRY, useExisting: (0, token_utils_1.getEventTypeRegistryToken)(ds) },
|
|
482
|
+
{ provide: event_type_registry_1.EventTypeRegistry, useExisting: (0, token_utils_1.getEventTypeRegistryToken)(ds) },
|
|
483
|
+
{ provide: event_serializer_1.EVENT_SERIALIZER, useExisting: (0, token_utils_1.getOutboxEventSerializerToken)(ds) },
|
|
484
|
+
{ provide: event_publication_repository_1.EVENT_PUBLICATION_REPOSITORY, useExisting: (0, token_utils_1.getEventPublicationRepositoryToken)(ds) },
|
|
485
|
+
{ provide: listener_registry_1.OutboxListenerRegistry, useExisting: (0, token_utils_1.getOutboxListenerRegistryToken)(ds) },
|
|
486
|
+
{ provide: event_publication_registry_1.EventPublicationRegistry, useExisting: (0, token_utils_1.getEventPublicationRegistryToken)(ds) },
|
|
487
|
+
{ provide: externalization_registry_1.ExternalizationRegistry, useExisting: (0, token_utils_1.getExternalizationRegistryToken)(ds) },
|
|
488
|
+
{ provide: event_publication_processor_1.EventPublicationProcessor, useExisting: (0, token_utils_1.getEventPublicationProcessorToken)(ds) },
|
|
489
|
+
{ provide: staleness_monitor_1.StalenessMonitor, useExisting: perDsStalenessMonitorToken(ds) },
|
|
490
|
+
{ provide: exports.OUTBOX_PROCESSOR_OPTIONS, useExisting: perDsProcessorOptionsToken(ds) },
|
|
491
|
+
{ provide: exports.OUTBOX_STALENESS_CONFIG, useExisting: perDsStalenessConfigToken(ds) },
|
|
492
|
+
{ provide: startup_recovery_1.OUTBOX_RECOVERY_OPTIONS, useExisting: perDsRecoveryOptionsToken(ds) },
|
|
493
|
+
];
|
|
494
|
+
}
|
|
495
|
+
function defaultDataSourceAliasTokens() {
|
|
496
|
+
return [
|
|
497
|
+
event_type_registry_1.EVENT_TYPE_REGISTRY,
|
|
498
|
+
event_type_registry_1.EventTypeRegistry,
|
|
499
|
+
event_serializer_1.EVENT_SERIALIZER,
|
|
500
|
+
event_publication_repository_1.EVENT_PUBLICATION_REPOSITORY,
|
|
501
|
+
listener_registry_1.OutboxListenerRegistry,
|
|
502
|
+
event_publication_registry_1.EventPublicationRegistry,
|
|
503
|
+
externalization_registry_1.ExternalizationRegistry,
|
|
504
|
+
event_publication_processor_1.EventPublicationProcessor,
|
|
505
|
+
staleness_monitor_1.StalenessMonitor,
|
|
506
|
+
exports.OUTBOX_PROCESSOR_OPTIONS,
|
|
507
|
+
exports.OUTBOX_STALENESS_CONFIG,
|
|
508
|
+
startup_recovery_1.OUTBOX_RECOVERY_OPTIONS,
|
|
509
|
+
];
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Build the providers that register the smart facade publisher and
|
|
513
|
+
* the {@link OUTBOX_DATA_SOURCE_NAMES} value provider that carries a
|
|
514
|
+
* live reference to {@link OutboxModule.registrations}. The facade
|
|
515
|
+
* itself uses {@link OnModuleInit} to late-bind per-DS publishers /
|
|
516
|
+
* event-type registries via `ModuleRef` — by the time `OnModuleInit`
|
|
517
|
+
* fires, every per-DS provider across every `forRoot` has been
|
|
518
|
+
* instantiated.
|
|
519
|
+
*/
|
|
520
|
+
function buildFacadePublisherProvider(moduleClass) {
|
|
521
|
+
return [
|
|
522
|
+
outbox_event_publisher_1.OutboxEventPublisher,
|
|
523
|
+
{
|
|
524
|
+
provide: outbox_event_publisher_1.OUTBOX_DATA_SOURCE_NAMES,
|
|
525
|
+
useValue: privateRegistrations(moduleClass),
|
|
526
|
+
},
|
|
527
|
+
];
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Build the providers wiring the {@link MultiDsOutboxListenerRegistrar}
|
|
531
|
+
* (Phase 14.3.1). Registered in the first-registration block so the
|
|
532
|
+
* cqrs package's `IntegrationEventsHandlerScanner` picks the smart
|
|
533
|
+
* registrar up via its `@Optional() @Inject(OUTBOX_LISTENER_REGISTRAR)`
|
|
534
|
+
* — without any consumer-side wiring. The structural-port token
|
|
535
|
+
* binding goes through {@link OUTBOX_LISTENER_REGISTRAR_TOKEN}
|
|
536
|
+
* (a `Symbol.for(...)` whose key matches cqrs's
|
|
537
|
+
* `OUTBOX_LISTENER_REGISTRAR`) so neither package imports from the
|
|
538
|
+
* other (Convention #8).
|
|
539
|
+
*
|
|
540
|
+
* Class-token registration (`MultiDsOutboxListenerRegistrar` itself)
|
|
541
|
+
* is preserved alongside the alias so tests and advanced consumers
|
|
542
|
+
* can resolve the registrar by class as well.
|
|
543
|
+
*/
|
|
544
|
+
function buildMultiDsRegistrarProviders() {
|
|
545
|
+
return [
|
|
546
|
+
multi_ds_listener_registrar_1.MultiDsOutboxListenerRegistrar,
|
|
547
|
+
{
|
|
548
|
+
provide: multi_ds_listener_registrar_1.OUTBOX_LISTENER_REGISTRAR_TOKEN,
|
|
549
|
+
useExisting: multi_ds_listener_registrar_1.MultiDsOutboxListenerRegistrar,
|
|
550
|
+
},
|
|
551
|
+
];
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Build the {@link OUTBOX_PROCESSING_BUNDLE} provider. Same late-bind
|
|
555
|
+
* via `OnModuleInit` pattern: the bundle is materialised as an empty
|
|
556
|
+
* shape at injection time, then {@link OutboxProcessingModule}
|
|
557
|
+
* resolves per-DS processors / monitors / recovery services from
|
|
558
|
+
* `ModuleRef` in its lifecycle hook.
|
|
559
|
+
*/
|
|
560
|
+
function buildProcessingBundleProvider(moduleClass) {
|
|
561
|
+
return {
|
|
562
|
+
provide: exports.OUTBOX_PROCESSING_BUNDLE,
|
|
563
|
+
useFactory: (moduleRef) => {
|
|
564
|
+
const dsNames = Array.from(privateRegistrations(moduleClass).keys());
|
|
565
|
+
// Resolve lazily by capturing dsNames + moduleRef in closure. The
|
|
566
|
+
// OutboxProcessingModule's lifecycle hooks call .start() / .stop()
|
|
567
|
+
// on each entry — by the time those run, every per-DS provider
|
|
568
|
+
// has been instantiated and resolvable via ModuleRef.
|
|
569
|
+
const get = (token) => moduleRef.get(token, { strict: false });
|
|
570
|
+
return {
|
|
571
|
+
get processors() {
|
|
572
|
+
return dsNames.map((ds) => get((0, token_utils_1.getEventPublicationProcessorToken)(ds)));
|
|
573
|
+
},
|
|
574
|
+
get monitors() {
|
|
575
|
+
return dsNames.map((ds) => get(perDsStalenessMonitorToken(ds)));
|
|
576
|
+
},
|
|
577
|
+
get recoveryServices() {
|
|
578
|
+
return dsNames.map((ds) => get(perDsStartupRecoveryToken(ds)));
|
|
579
|
+
},
|
|
580
|
+
};
|
|
581
|
+
},
|
|
582
|
+
inject: [core_1.ModuleRef],
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Read the private static `registrations` Map from outside the class.
|
|
587
|
+
* The Map is `private` so external code can't mutate it, but our own
|
|
588
|
+
* factories living in this file need read access. By the time these
|
|
589
|
+
* factories run (lazily, at provider-resolution time), every
|
|
590
|
+
* synchronous `forRoot` body has populated the Map.
|
|
591
|
+
*
|
|
592
|
+
* @internal
|
|
593
|
+
*/
|
|
594
|
+
function privateRegistrations(moduleClass) {
|
|
595
|
+
return moduleClass
|
|
596
|
+
.registrations;
|
|
597
|
+
}
|
|
598
|
+
// `TransactionManager` referenced for documentation completeness;
|
|
599
|
+
// no longer used directly in this file after Phase 14.3 (the per-DS
|
|
600
|
+
// publisher pushes hooks directly onto the active-transaction object,
|
|
601
|
+
// bypassing manager.registerBeforeCommit's single-tx assumption).
|
|
602
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
603
|
+
const _txManagerRef = core_2.TransactionManager;
|
|
604
|
+
//# sourceMappingURL=outbox.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.module.js","sourceRoot":"","sources":["../../src/module/outbox.module.ts"],"names":[],"mappings":"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"}
|