@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.
Files changed (125) hide show
  1. package/README.md +38 -5
  2. package/dist/api/completed-event-publications.d.ts +2 -2
  3. package/dist/api/completed-event-publications.js +6 -9
  4. package/dist/api/completed-event-publications.js.map +1 -1
  5. package/dist/api/failed-event-publications.d.ts +3 -3
  6. package/dist/api/failed-event-publications.js +10 -13
  7. package/dist/api/failed-event-publications.js.map +1 -1
  8. package/dist/api/incomplete-event-publications.d.ts +3 -3
  9. package/dist/api/incomplete-event-publications.js +11 -14
  10. package/dist/api/incomplete-event-publications.js.map +1 -1
  11. package/dist/decorators/inject-decorators.js +12 -24
  12. package/dist/decorators/inject-decorators.js.map +1 -1
  13. package/dist/decorators/outbox-events-handler.decorator.js +6 -11
  14. package/dist/decorators/outbox-events-handler.decorator.js.map +1 -1
  15. package/dist/dispatcher/data-source-outbox-publisher.d.ts +2 -2
  16. package/dist/dispatcher/data-source-outbox-publisher.js +7 -11
  17. package/dist/dispatcher/data-source-outbox-publisher.js.map +1 -1
  18. package/dist/dispatcher/event-publication-processor.d.ts +5 -5
  19. package/dist/dispatcher/event-publication-processor.js +18 -21
  20. package/dist/dispatcher/event-publication-processor.js.map +1 -1
  21. package/dist/dispatcher/outbox-event-publisher.js +16 -19
  22. package/dist/dispatcher/outbox-event-publisher.js.map +1 -1
  23. package/dist/dispatcher/processor-options.d.ts +1 -1
  24. package/dist/dispatcher/processor-options.js +5 -8
  25. package/dist/dispatcher/processor-options.js.map +1 -1
  26. package/dist/externalization/describe-thrown.d.ts +20 -0
  27. package/dist/externalization/describe-thrown.js +46 -0
  28. package/dist/externalization/describe-thrown.js.map +1 -0
  29. package/dist/externalization/errors.d.ts +1 -1
  30. package/dist/externalization/errors.js +2 -6
  31. package/dist/externalization/errors.js.map +1 -1
  32. package/dist/externalization/event-externalizer.d.ts +1 -1
  33. package/dist/externalization/event-externalizer.js +1 -4
  34. package/dist/externalization/event-externalizer.js.map +1 -1
  35. package/dist/externalization/externalization-registry.d.ts +3 -3
  36. package/dist/externalization/externalization-registry.js +10 -13
  37. package/dist/externalization/externalization-registry.js.map +1 -1
  38. package/dist/externalization/externalized.decorator.js +6 -11
  39. package/dist/externalization/externalized.decorator.js.map +1 -1
  40. package/dist/externalization/types.js +1 -2
  41. package/dist/index.d.ts +43 -40
  42. package/dist/index.js +41 -61
  43. package/dist/index.js.map +1 -1
  44. package/dist/interfaces/outbox-event-handler.interface.js +1 -2
  45. package/dist/module/outbox-processing.module.d.ts +1 -1
  46. package/dist/module/outbox-processing.module.js +12 -9
  47. package/dist/module/outbox-processing.module.js.map +1 -1
  48. package/dist/module/outbox.module.d.ts +15 -8
  49. package/dist/module/outbox.module.js +179 -145
  50. package/dist/module/outbox.module.js.map +1 -1
  51. package/dist/recovery/outbox-cleanup-scheduler.d.ts +56 -0
  52. package/dist/recovery/outbox-cleanup-scheduler.js +136 -0
  53. package/dist/recovery/outbox-cleanup-scheduler.js.map +1 -0
  54. package/dist/recovery/outbox-retry-scheduler.d.ts +2 -2
  55. package/dist/recovery/outbox-retry-scheduler.js +11 -14
  56. package/dist/recovery/outbox-retry-scheduler.js.map +1 -1
  57. package/dist/recovery/staleness-monitor.d.ts +2 -2
  58. package/dist/recovery/staleness-monitor.js +14 -17
  59. package/dist/recovery/staleness-monitor.js.map +1 -1
  60. package/dist/recovery/startup-recovery.d.ts +1 -1
  61. package/dist/recovery/startup-recovery.js +11 -14
  62. package/dist/recovery/startup-recovery.js.map +1 -1
  63. package/dist/registry/event-publication-registry.d.ts +4 -4
  64. package/dist/registry/event-publication-registry.js +17 -20
  65. package/dist/registry/event-publication-registry.js.map +1 -1
  66. package/dist/registry/listener-registry.js +6 -9
  67. package/dist/registry/listener-registry.js.map +1 -1
  68. package/dist/registry/multi-ds-listener-registrar.d.ts +1 -1
  69. package/dist/registry/multi-ds-listener-registrar.js +15 -18
  70. package/dist/registry/multi-ds-listener-registrar.js.map +1 -1
  71. package/dist/registry/outbox-listener-scanner.d.ts +1 -1
  72. package/dist/registry/outbox-listener-scanner.js +23 -27
  73. package/dist/registry/outbox-listener-scanner.js.map +1 -1
  74. package/dist/repository/event-publication-repository.d.ts +14 -3
  75. package/dist/repository/event-publication-repository.js +1 -4
  76. package/dist/repository/event-publication-repository.js.map +1 -1
  77. package/dist/serialization/event-serializer.js +1 -4
  78. package/dist/serialization/event-serializer.js.map +1 -1
  79. package/dist/serialization/event-type-registry.js +5 -8
  80. package/dist/serialization/event-type-registry.js.map +1 -1
  81. package/dist/serialization/event-type-resolver.d.ts +1 -1
  82. package/dist/serialization/event-type-resolver.js +4 -7
  83. package/dist/serialization/event-type-resolver.js.map +1 -1
  84. package/dist/serialization/json-event-serializer.d.ts +2 -2
  85. package/dist/serialization/json-event-serializer.js +10 -13
  86. package/dist/serialization/json-event-serializer.js.map +1 -1
  87. package/dist/shutdown/drain.js +2 -6
  88. package/dist/shutdown/drain.js.map +1 -1
  89. package/dist/testing/assertable-published-events.d.ts +1 -1
  90. package/dist/testing/assertable-published-events.js +8 -13
  91. package/dist/testing/assertable-published-events.js.map +1 -1
  92. package/dist/testing/in-memory-repository.d.ts +3 -3
  93. package/dist/testing/in-memory-repository.js +32 -25
  94. package/dist/testing/in-memory-repository.js.map +1 -1
  95. package/dist/testing/index.d.ts +3 -3
  96. package/dist/testing/index.js +3 -19
  97. package/dist/testing/index.js.map +1 -1
  98. package/dist/testing/published-events.d.ts +3 -3
  99. package/dist/testing/published-events.js +11 -14
  100. package/dist/testing/published-events.js.map +1 -1
  101. package/dist/tokens/index.d.ts +1 -1
  102. package/dist/tokens/index.js +1 -13
  103. package/dist/tokens/index.js.map +1 -1
  104. package/dist/tokens/token-utils.js +10 -21
  105. package/dist/tokens/token-utils.js.map +1 -1
  106. package/dist/types/cleanup-config.d.ts +59 -0
  107. package/dist/types/cleanup-config.js +14 -0
  108. package/dist/types/cleanup-config.js.map +1 -0
  109. package/dist/types/completion-mode.js +2 -5
  110. package/dist/types/completion-mode.js.map +1 -1
  111. package/dist/types/errors.d.ts +1 -1
  112. package/dist/types/errors.js +7 -16
  113. package/dist/types/errors.js.map +1 -1
  114. package/dist/types/event-publication.d.ts +1 -1
  115. package/dist/types/event-publication.js +1 -2
  116. package/dist/types/publication-status.js +2 -5
  117. package/dist/types/publication-status.js.map +1 -1
  118. package/dist/types/resubmission-options.d.ts +1 -1
  119. package/dist/types/resubmission-options.js +1 -5
  120. package/dist/types/resubmission-options.js.map +1 -1
  121. package/dist/types/retry-config.js +3 -6
  122. package/dist/types/retry-config.js.map +1 -1
  123. package/dist/types/staleness-config.js +3 -6
  124. package/dist/types/staleness-config.js.map +1 -1
  125. package/package.json +21 -19
package/dist/index.js CHANGED
@@ -1,62 +1,42 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
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
- exports.EXTERNALIZATION_REGISTRY = exports.ExternalizationRegistry = exports.EXTERNALIZED_METADATA = exports.getExternalizedMetadata = exports.Externalized = exports.ExternalizationError = exports.EVENT_EXTERNALIZER = exports.DEFAULT_DRAIN_TIMEOUT_MS = void 0;
18
- __exportStar(require("./types/publication-status"), exports);
19
- __exportStar(require("./types/event-publication"), exports);
20
- __exportStar(require("./types/completion-mode"), exports);
21
- __exportStar(require("./types/resubmission-options"), exports);
22
- __exportStar(require("./types/staleness-config"), exports);
23
- __exportStar(require("./types/retry-config"), exports);
24
- __exportStar(require("./types/errors"), exports);
25
- var drain_1 = require("./shutdown/drain");
26
- Object.defineProperty(exports, "DEFAULT_DRAIN_TIMEOUT_MS", { enumerable: true, get: function () { return drain_1.DEFAULT_DRAIN_TIMEOUT_MS; } });
27
- __exportStar(require("./serialization/event-serializer"), exports);
28
- __exportStar(require("./serialization/event-type-registry"), exports);
29
- __exportStar(require("./serialization/event-type-resolver"), exports);
30
- __exportStar(require("./serialization/json-event-serializer"), exports);
31
- __exportStar(require("./repository/event-publication-repository"), exports);
32
- __exportStar(require("./registry/event-publication-registry"), exports);
33
- __exportStar(require("./registry/listener-registry"), exports);
34
- __exportStar(require("./registry/multi-ds-listener-registrar"), exports);
35
- __exportStar(require("./registry/outbox-listener-scanner"), exports);
36
- __exportStar(require("./decorators/outbox-events-handler.decorator"), exports);
37
- __exportStar(require("./decorators/inject-decorators"), exports);
38
- __exportStar(require("./tokens"), exports);
39
- __exportStar(require("./dispatcher/outbox-event-publisher"), exports);
40
- __exportStar(require("./dispatcher/data-source-outbox-publisher"), exports);
41
- __exportStar(require("./dispatcher/event-publication-processor"), exports);
42
- __exportStar(require("./dispatcher/processor-options"), exports);
43
- var event_externalizer_1 = require("./externalization/event-externalizer");
44
- Object.defineProperty(exports, "EVENT_EXTERNALIZER", { enumerable: true, get: function () { return event_externalizer_1.EVENT_EXTERNALIZER; } });
45
- var errors_1 = require("./externalization/errors");
46
- Object.defineProperty(exports, "ExternalizationError", { enumerable: true, get: function () { return errors_1.ExternalizationError; } });
47
- var externalized_decorator_1 = require("./externalization/externalized.decorator");
48
- Object.defineProperty(exports, "Externalized", { enumerable: true, get: function () { return externalized_decorator_1.Externalized; } });
49
- Object.defineProperty(exports, "getExternalizedMetadata", { enumerable: true, get: function () { return externalized_decorator_1.getExternalizedMetadata; } });
50
- Object.defineProperty(exports, "EXTERNALIZED_METADATA", { enumerable: true, get: function () { return externalized_decorator_1.EXTERNALIZED_METADATA; } });
51
- var externalization_registry_1 = require("./externalization/externalization-registry");
52
- Object.defineProperty(exports, "ExternalizationRegistry", { enumerable: true, get: function () { return externalization_registry_1.ExternalizationRegistry; } });
53
- Object.defineProperty(exports, "EXTERNALIZATION_REGISTRY", { enumerable: true, get: function () { return externalization_registry_1.EXTERNALIZATION_REGISTRY; } });
54
- __exportStar(require("./recovery/staleness-monitor"), exports);
55
- __exportStar(require("./recovery/outbox-retry-scheduler"), exports);
56
- __exportStar(require("./api/failed-event-publications"), exports);
57
- __exportStar(require("./api/incomplete-event-publications"), exports);
58
- __exportStar(require("./api/completed-event-publications"), exports);
59
- __exportStar(require("./recovery/startup-recovery"), exports);
60
- __exportStar(require("./module/outbox.module"), exports);
61
- __exportStar(require("./module/outbox-processing.module"), exports);
1
+ export * from './types/publication-status.js';
2
+ export * from './types/event-publication.js';
3
+ export * from './types/completion-mode.js';
4
+ export * from './types/resubmission-options.js';
5
+ export * from './types/staleness-config.js';
6
+ export * from './types/cleanup-config.js';
7
+ export * from './types/retry-config.js';
8
+ export * from './types/errors.js';
9
+ export { DEFAULT_DRAIN_TIMEOUT_MS } from './shutdown/drain.js';
10
+ export * from './serialization/event-serializer.js';
11
+ export * from './serialization/event-type-registry.js';
12
+ export * from './serialization/event-type-resolver.js';
13
+ export * from './serialization/json-event-serializer.js';
14
+ export * from './repository/event-publication-repository.js';
15
+ export * from './registry/event-publication-registry.js';
16
+ export * from './registry/listener-registry.js';
17
+ export * from './registry/multi-ds-listener-registrar.js';
18
+ export * from './registry/outbox-listener-scanner.js';
19
+ export * from './decorators/outbox-events-handler.decorator.js';
20
+ export * from './decorators/inject-decorators.js';
21
+ export * from './tokens/index.js';
22
+ export * from './dispatcher/outbox-event-publisher.js';
23
+ export * from './dispatcher/data-source-outbox-publisher.js';
24
+ export * from './dispatcher/event-publication-processor.js';
25
+ export * from './dispatcher/processor-options.js';
26
+ export { EVENT_EXTERNALIZER } from './externalization/event-externalizer.js';
27
+ export { ExternalizationError } from './externalization/errors.js';
28
+ // Exported because every externalizer implementation faces the same
29
+ // problem: broker clients reject with values that are not `Error`s.
30
+ export { describeThrown } from './externalization/describe-thrown.js';
31
+ export { Externalized, getExternalizedMetadata, EXTERNALIZED_METADATA, } from './externalization/externalized.decorator.js';
32
+ export { ExternalizationRegistry, EXTERNALIZATION_REGISTRY, } from './externalization/externalization-registry.js';
33
+ export * from './recovery/staleness-monitor.js';
34
+ export * from './recovery/outbox-cleanup-scheduler.js';
35
+ export * from './recovery/outbox-retry-scheduler.js';
36
+ export * from './api/failed-event-publications.js';
37
+ export * from './api/incomplete-event-publications.js';
38
+ export * from './api/completed-event-publications.js';
39
+ export * from './recovery/startup-recovery.js';
40
+ export * from './module/outbox.module.js';
41
+ export * from './module/outbox-processing.module.js';
62
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,4DAA0C;AAC1C,0DAAwC;AACxC,+DAA6C;AAC7C,2DAAyC;AACzC,uDAAqC;AACrC,iDAA+B;AAE/B,0CAA4D;AAAnD,iHAAA,wBAAwB,OAAA;AAEjC,mEAAiD;AACjD,sEAAoD;AACpD,sEAAoD;AACpD,wEAAsD;AAEtD,4EAA0D;AAE1D,wEAAsD;AACtD,+DAA6C;AAC7C,yEAAuD;AACvD,qEAAmD;AAEnD,+EAA6D;AAC7D,iEAA+C;AAE/C,2CAAyB;AAIzB,sEAAoD;AACpD,4EAA0D;AAC1D,2EAAyD;AACzD,iEAA+C;AAI/C,2EAA0E;AAAjE,wHAAA,kBAAkB,OAAA;AAC3B,mDAAgE;AAAvD,8GAAA,oBAAoB,OAAA;AAC7B,mFAIkD;AAHhD,sHAAA,YAAY,OAAA;AACZ,iIAAA,uBAAuB,OAAA;AACvB,+HAAA,qBAAqB,OAAA;AAMvB,uFAGoD;AAFlD,mIAAA,uBAAuB,OAAA;AACvB,oIAAA,wBAAwB,OAAA;AAG1B,+DAA6C;AAC7C,oEAAkD;AAElD,kEAAgD;AAChD,sEAAoD;AACpD,qEAAmD;AAEnD,8DAA4C;AAE5C,yDAAuC;AACvC,oEAAkD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,8CAA8C,CAAC;AAE7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,iDAAiD,CAAC;AAChE,cAAc,mCAAmC,CAAC;AAElD,cAAc,mBAAmB,CAAC;AAIlC,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAIlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,oEAAoE;AACpE,oEAAoE;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,6CAA6C,CAAC;AAKrD,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,+CAA+C,CAAC;AAEvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAErD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=outbox-event-handler.interface.js.map
@@ -1,5 +1,5 @@
1
1
  import { type OnApplicationBootstrap, type OnApplicationShutdown } from '@nestjs/common';
2
- import { type OutboxProcessingBundle } from './outbox.module';
2
+ import { type OutboxProcessingBundle } from './outbox.module.js';
3
3
  /**
4
4
  * Auto-starts every configured per-dataSource
5
5
  * {@link EventPublicationProcessor} and {@link StalenessMonitor} on
@@ -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,10 +10,8 @@ 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.OutboxProcessingModule = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const outbox_module_1 = require("./outbox.module");
13
+ import { Inject, Module, } from '@nestjs/common';
14
+ import { OUTBOX_PROCESSING_BUNDLE } from './outbox.module.js';
18
15
  /**
19
16
  * Auto-starts every configured per-dataSource
20
17
  * {@link EventPublicationProcessor} and {@link StalenessMonitor} on
@@ -52,6 +49,11 @@ let OutboxProcessingModule = class OutboxProcessingModule {
52
49
  for (const scheduler of this.bundle.retrySchedulers) {
53
50
  scheduler.start();
54
51
  }
52
+ // Likewise a no-op unless `cleanup.interval > 0` (C4) — retention
53
+ // of completed publications is opt-in, and stays manual otherwise.
54
+ for (const scheduler of this.bundle.cleanupSchedulers) {
55
+ scheduler.start();
56
+ }
55
57
  }
56
58
  /**
57
59
  * Drain every worker before NestJS proceeds with the rest of the
@@ -74,13 +76,14 @@ let OutboxProcessingModule = class OutboxProcessingModule {
74
76
  ...this.bundle.processors.map((processor) => processor.stop()),
75
77
  ...this.bundle.monitors.map((monitor) => monitor.stop()),
76
78
  ...this.bundle.retrySchedulers.map((scheduler) => scheduler.stop()),
79
+ ...this.bundle.cleanupSchedulers.map((scheduler) => scheduler.stop()),
77
80
  ]);
78
81
  }
79
82
  };
80
- exports.OutboxProcessingModule = OutboxProcessingModule;
81
- exports.OutboxProcessingModule = OutboxProcessingModule = __decorate([
82
- (0, common_1.Module)({}),
83
- __param(0, (0, common_1.Inject)(outbox_module_1.OUTBOX_PROCESSING_BUNDLE)),
83
+ OutboxProcessingModule = __decorate([
84
+ Module({}),
85
+ __param(0, Inject(OUTBOX_PROCESSING_BUNDLE)),
84
86
  __metadata("design:paramtypes", [Object])
85
87
  ], OutboxProcessingModule);
88
+ export { OutboxProcessingModule };
86
89
  //# sourceMappingURL=outbox-processing.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbox-processing.module.js","sourceRoot":"","sources":["../../src/module/outbox-processing.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AAExB,mDAAwF;AAExF;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAGd;IAFnB,YAEmB,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAC9C,CAAC;IAEJ,sBAAsB;QACpB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/C,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,iEAAiE;QACjE,wCAAwC;QACxC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACpD,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC9D,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxD,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA3CY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,eAAM,EAAC,EAAE,CAAC;IAGN,WAAA,IAAA,eAAM,EAAC,wCAAwB,CAAC,CAAA;;GAFxB,sBAAsB,CA2ClC"}
1
+ {"version":3,"file":"outbox-processing.module.js","sourceRoot":"","sources":["../../src/module/outbox-processing.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,MAAM,GAGP,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,wBAAwB,EAA+B,MAAM,oBAAoB,CAAC;AAE3F;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAGd;IAFnB,YAEmB,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAC9C,CAAC;IAEJ,sBAAsB;QACpB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/C,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,iEAAiE;QACjE,wCAAwC;QACxC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACpD,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,kEAAkE;QAClE,mEAAmE;QACnE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACtD,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC9D,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxD,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACnE,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACtE,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjDY,sBAAsB;IADlC,MAAM,CAAC,EAAE,CAAC;IAGN,WAAA,MAAM,CAAC,wBAAwB,CAAC,CAAA;;GAFxB,sBAAsB,CAiDlC"}
@@ -1,12 +1,14 @@
1
1
  import { type DynamicModule, type InjectionToken, type ModuleMetadata, type Provider, type Type } from '@nestjs/common';
2
- import { EventPublicationProcessor } from '../dispatcher/event-publication-processor';
3
- import { type EventPublicationProcessorOptions } from '../dispatcher/processor-options';
4
- import { OutboxRetryScheduler } from '../recovery/outbox-retry-scheduler';
5
- import { StalenessMonitor } from '../recovery/staleness-monitor';
6
- import { StartupRecoveryService } from '../recovery/startup-recovery';
7
- import { CompletionMode } from '../types/completion-mode';
8
- import { type OutboxRetryConfig } from '../types/retry-config';
9
- import { type StalenessConfig } from '../types/staleness-config';
2
+ import { EventPublicationProcessor } from '../dispatcher/event-publication-processor.js';
3
+ import { type EventPublicationProcessorOptions } from '../dispatcher/processor-options.js';
4
+ import { OutboxCleanupScheduler } from '../recovery/outbox-cleanup-scheduler.js';
5
+ import { OutboxRetryScheduler } from '../recovery/outbox-retry-scheduler.js';
6
+ import { StalenessMonitor } from '../recovery/staleness-monitor.js';
7
+ import { StartupRecoveryService } from '../recovery/startup-recovery.js';
8
+ import { type OutboxCleanupConfig } from '../types/cleanup-config.js';
9
+ import { CompletionMode } from '../types/completion-mode.js';
10
+ import { type OutboxRetryConfig } from '../types/retry-config.js';
11
+ import { type StalenessConfig } from '../types/staleness-config.js';
10
12
  /**
11
13
  * Synchronous options for {@link OutboxModule.forRoot}.
12
14
  *
@@ -43,6 +45,8 @@ export interface OutboxModuleOptions {
43
45
  readonly staleness?: Partial<StalenessConfig>;
44
46
  /** Automatic retry policy for FAILED publications (DD-026). Off unless `maxAttempts > 0`. */
45
47
  readonly retry?: Partial<OutboxRetryConfig>;
48
+ /** Retention policy for COMPLETED publications (C4). Off unless `interval > 0`. */
49
+ readonly cleanup?: Partial<OutboxCleanupConfig>;
46
50
  readonly republishOnStartup?: boolean;
47
51
  readonly startupBatchSize?: number;
48
52
  readonly completionMode?: CompletionMode;
@@ -71,6 +75,8 @@ export interface OutboxModuleAsyncFactoryResult {
71
75
  readonly staleness?: Partial<StalenessConfig>;
72
76
  /** Automatic retry policy for FAILED publications (DD-026). Off unless `maxAttempts > 0`. */
73
77
  readonly retry?: Partial<OutboxRetryConfig>;
78
+ /** Retention policy for COMPLETED publications (C4). Off unless `interval > 0`. */
79
+ readonly cleanup?: Partial<OutboxCleanupConfig>;
74
80
  readonly republishOnStartup?: boolean;
75
81
  readonly startupBatchSize?: number;
76
82
  readonly completionMode?: CompletionMode;
@@ -110,6 +116,7 @@ export interface OutboxProcessingBundle {
110
116
  readonly processors: readonly EventPublicationProcessor[];
111
117
  readonly monitors: readonly StalenessMonitor[];
112
118
  readonly retrySchedulers: readonly OutboxRetryScheduler[];
119
+ readonly cleanupSchedulers: readonly OutboxCleanupScheduler[];
113
120
  readonly recoveryServices: readonly StartupRecoveryService[];
114
121
  }
115
122
  /**