@apso/domain-events 0.1.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 (50) hide show
  1. package/README.md +68 -0
  2. package/dist/destinations/delivery-destination.d.ts +25 -0
  3. package/dist/destinations/delivery-destination.d.ts.map +1 -0
  4. package/dist/destinations/delivery-destination.js +10 -0
  5. package/dist/destinations/delivery-destination.js.map +1 -0
  6. package/dist/destinations/eventbridge.destination.d.ts +23 -0
  7. package/dist/destinations/eventbridge.destination.d.ts.map +1 -0
  8. package/dist/destinations/eventbridge.destination.js +55 -0
  9. package/dist/destinations/eventbridge.destination.js.map +1 -0
  10. package/dist/destinations/index.d.ts +22 -0
  11. package/dist/destinations/index.d.ts.map +1 -0
  12. package/dist/destinations/index.js +60 -0
  13. package/dist/destinations/index.js.map +1 -0
  14. package/dist/destinations/kafka.destination.d.ts +24 -0
  15. package/dist/destinations/kafka.destination.d.ts.map +1 -0
  16. package/dist/destinations/kafka.destination.js +66 -0
  17. package/dist/destinations/kafka.destination.js.map +1 -0
  18. package/dist/destinations/sqs.destination.d.ts +20 -0
  19. package/dist/destinations/sqs.destination.d.ts.map +1 -0
  20. package/dist/destinations/sqs.destination.js +46 -0
  21. package/dist/destinations/sqs.destination.js.map +1 -0
  22. package/dist/destinations/webhook.destination.d.ts +34 -0
  23. package/dist/destinations/webhook.destination.d.ts.map +1 -0
  24. package/dist/destinations/webhook.destination.js +73 -0
  25. package/dist/destinations/webhook.destination.js.map +1 -0
  26. package/dist/domain-event.entity.d.ts +28 -0
  27. package/dist/domain-event.entity.d.ts.map +1 -0
  28. package/dist/domain-event.entity.js +62 -0
  29. package/dist/domain-event.entity.js.map +1 -0
  30. package/dist/domain-event.mapper.d.ts +41 -0
  31. package/dist/domain-event.mapper.d.ts.map +1 -0
  32. package/dist/domain-event.mapper.js +42 -0
  33. package/dist/domain-event.mapper.js.map +1 -0
  34. package/dist/domain-event.relay.d.ts +80 -0
  35. package/dist/domain-event.relay.d.ts.map +1 -0
  36. package/dist/domain-event.relay.js +167 -0
  37. package/dist/domain-event.relay.js.map +1 -0
  38. package/dist/domain-event.subscriber.d.ts +33 -0
  39. package/dist/domain-event.subscriber.d.ts.map +1 -0
  40. package/dist/domain-event.subscriber.js +98 -0
  41. package/dist/domain-event.subscriber.js.map +1 -0
  42. package/dist/domain-events.module.d.ts +43 -0
  43. package/dist/domain-events.module.d.ts.map +1 -0
  44. package/dist/domain-events.module.js +74 -0
  45. package/dist/domain-events.module.js.map +1 -0
  46. package/dist/index.d.ts +7 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +23 -0
  49. package/dist/index.js.map +1 -0
  50. package/package.json +46 -0
@@ -0,0 +1,74 @@
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 DomainEventsModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DomainEventsModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const typeorm_1 = require("@nestjs/typeorm");
13
+ const domain_event_entity_1 = require("./domain-event.entity");
14
+ const domain_event_subscriber_1 = require("./domain-event.subscriber");
15
+ const domain_event_relay_1 = require("./domain-event.relay");
16
+ const domain_event_mapper_1 = require("./domain-event.mapper");
17
+ const destinations_1 = require("./destinations");
18
+ /**
19
+ * DomainEventsModule wires the durable domain-event spine (transactional-outbox
20
+ * pattern, surfaced as generic domain events).
21
+ *
22
+ * - {@link DomainEventSubscriber} writes events in-transaction with state changes.
23
+ * - {@link DomainEventRelay} drains and delivers pending events, with its own
24
+ * self-contained poller (no external scheduler dependency).
25
+ * - {@link DOMAIN_EVENT_MAPPER} controls event-type/payload semantics; pass a
26
+ * `mapper` to override.
27
+ * - {@link DOMAIN_EVENT_DESTINATIONS} is the set of ACTIVE delivery adapters,
28
+ * built from the `EVENTS_DESTINATION` env var at runtime.
29
+ *
30
+ * MULTI-DATASOURCE: `@EventSubscriber()` auto-registers on the default
31
+ * DataSource; for additional named DataSources, register this module (or the
32
+ * subscriber) per DataSource.
33
+ */
34
+ let DomainEventsModule = DomainEventsModule_1 = class DomainEventsModule {
35
+ static forRoot(options) {
36
+ const mapperProvider = options.mapper
37
+ ? { provide: domain_event_mapper_1.DOMAIN_EVENT_MAPPER, useClass: options.mapper }
38
+ : { provide: domain_event_mapper_1.DOMAIN_EVENT_MAPPER, useClass: domain_event_mapper_1.DefaultDomainEventMapper };
39
+ const providers = [
40
+ domain_event_subscriber_1.DomainEventSubscriber,
41
+ domain_event_relay_1.DomainEventRelay,
42
+ mapperProvider,
43
+ {
44
+ provide: domain_event_subscriber_1.DOMAIN_EVENT_ENTITIES,
45
+ useValue: options.entities ?? [],
46
+ },
47
+ {
48
+ provide: domain_event_relay_1.DOMAIN_EVENT_POLL_INTERVAL,
49
+ useValue: options.pollIntervalMs ?? domain_event_relay_1.DEFAULT_POLL_INTERVAL_MS,
50
+ },
51
+ {
52
+ provide: destinations_1.DOMAIN_EVENT_DESTINATIONS,
53
+ useFactory: () => (0, destinations_1.buildDestinations)(),
54
+ },
55
+ ];
56
+ return {
57
+ module: DomainEventsModule_1,
58
+ imports: [typeorm_1.TypeOrmModule.forFeature([domain_event_entity_1.DomainEvent])],
59
+ providers,
60
+ exports: [
61
+ domain_event_relay_1.DomainEventRelay,
62
+ domain_event_mapper_1.DOMAIN_EVENT_MAPPER,
63
+ destinations_1.DOMAIN_EVENT_DESTINATIONS,
64
+ domain_event_subscriber_1.DOMAIN_EVENT_ENTITIES,
65
+ ],
66
+ };
67
+ }
68
+ };
69
+ exports.DomainEventsModule = DomainEventsModule;
70
+ exports.DomainEventsModule = DomainEventsModule = DomainEventsModule_1 = __decorate([
71
+ (0, common_1.Global)(),
72
+ (0, common_1.Module)({})
73
+ ], DomainEventsModule);
74
+ //# sourceMappingURL=domain-events.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-events.module.js","sourceRoot":"","sources":["../src/domain-events.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAC/E,6CAAgD;AAChD,+DAAoD;AACpD,uEAGmC;AACnC,6DAI8B;AAC9B,+DAI+B;AAC/B,iDAA8E;AA2B9E;;;;;;;;;;;;;;;GAeG;AAGI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,OAAO,CAAC,OAAkC;QAC/C,MAAM,cAAc,GAAa,OAAO,CAAC,MAAM;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,yCAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;YAC5D,CAAC,CAAC,EAAE,OAAO,EAAE,yCAAmB,EAAE,QAAQ,EAAE,8CAAwB,EAAE,CAAC;QAEzE,MAAM,SAAS,GAAe;YAC5B,+CAAqB;YACrB,qCAAgB;YAChB,cAAc;YACd;gBACE,OAAO,EAAE,+CAAqB;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;aACjC;YACD;gBACE,OAAO,EAAE,+CAA0B;gBACnC,QAAQ,EAAE,OAAO,CAAC,cAAc,IAAI,6CAAwB;aAC7D;YACD;gBACE,OAAO,EAAE,wCAAyB;gBAClC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAA,gCAAiB,GAAE;aACtC;SACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,iCAAW,CAAC,CAAC,CAAC;YAClD,SAAS;YACT,OAAO,EAAE;gBACP,qCAAgB;gBAChB,yCAAmB;gBACnB,wCAAyB;gBACzB,+CAAqB;aACtB;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AApCY,gDAAkB;6BAAlB,kBAAkB;IAF9B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAoC9B"}
@@ -0,0 +1,7 @@
1
+ export * from './domain-event.entity';
2
+ export * from './domain-event.subscriber';
3
+ export * from './domain-event.mapper';
4
+ export * from './domain-event.relay';
5
+ export * from './domain-events.module';
6
+ export * from './destinations';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
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
+ __exportStar(require("./domain-event.entity"), exports);
18
+ __exportStar(require("./domain-event.subscriber"), exports);
19
+ __exportStar(require("./domain-event.mapper"), exports);
20
+ __exportStar(require("./domain-event.relay"), exports);
21
+ __exportStar(require("./domain-events.module"), exports);
22
+ __exportStar(require("./destinations"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,4DAA0C;AAC1C,wDAAsC;AACtC,uDAAqC;AACrC,yDAAuC;AACvC,iDAA+B"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@apso/domain-events",
3
+ "version": "0.1.0",
4
+ "description": "Durable domain-event spine (transactional outbox + runtime-selected delivery) for NestJS + TypeORM.",
5
+ "license": "MIT",
6
+ "author": "Apso",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc -p tsconfig.json",
14
+ "clean": "rm -rf dist *.tsbuildinfo",
15
+ "test": "jest",
16
+ "lint": "tsc -p tsconfig.json --noEmit"
17
+ },
18
+ "peerDependencies": {
19
+ "@nestjs/common": ">=9 <12",
20
+ "@nestjs/core": ">=9 <12",
21
+ "@nestjs/typeorm": ">=9 <12",
22
+ "rxjs": ">=7",
23
+ "typeorm": ">=0.3"
24
+ },
25
+ "optionalDependencies": {
26
+ "@aws-sdk/client-eventbridge": "^3.0.0",
27
+ "@aws-sdk/client-sqs": "^3.0.0",
28
+ "@nestjs/microservices": "^10.0.0",
29
+ "kafkajs": "^2.0.0"
30
+ },
31
+ "devDependencies": {
32
+ "@nestjs/common": "^10.0.0",
33
+ "@nestjs/core": "^10.0.0",
34
+ "@nestjs/typeorm": "^10.0.0",
35
+ "reflect-metadata": "^0.2.2",
36
+ "rxjs": "^7.8.1",
37
+ "typeorm": "^0.3.20"
38
+ },
39
+ "keywords": [
40
+ "apso",
41
+ "domain-events",
42
+ "outbox",
43
+ "nestjs",
44
+ "typeorm"
45
+ ]
46
+ }