@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.
- package/README.md +68 -0
- package/dist/destinations/delivery-destination.d.ts +25 -0
- package/dist/destinations/delivery-destination.d.ts.map +1 -0
- package/dist/destinations/delivery-destination.js +10 -0
- package/dist/destinations/delivery-destination.js.map +1 -0
- package/dist/destinations/eventbridge.destination.d.ts +23 -0
- package/dist/destinations/eventbridge.destination.d.ts.map +1 -0
- package/dist/destinations/eventbridge.destination.js +55 -0
- package/dist/destinations/eventbridge.destination.js.map +1 -0
- package/dist/destinations/index.d.ts +22 -0
- package/dist/destinations/index.d.ts.map +1 -0
- package/dist/destinations/index.js +60 -0
- package/dist/destinations/index.js.map +1 -0
- package/dist/destinations/kafka.destination.d.ts +24 -0
- package/dist/destinations/kafka.destination.d.ts.map +1 -0
- package/dist/destinations/kafka.destination.js +66 -0
- package/dist/destinations/kafka.destination.js.map +1 -0
- package/dist/destinations/sqs.destination.d.ts +20 -0
- package/dist/destinations/sqs.destination.d.ts.map +1 -0
- package/dist/destinations/sqs.destination.js +46 -0
- package/dist/destinations/sqs.destination.js.map +1 -0
- package/dist/destinations/webhook.destination.d.ts +34 -0
- package/dist/destinations/webhook.destination.d.ts.map +1 -0
- package/dist/destinations/webhook.destination.js +73 -0
- package/dist/destinations/webhook.destination.js.map +1 -0
- package/dist/domain-event.entity.d.ts +28 -0
- package/dist/domain-event.entity.d.ts.map +1 -0
- package/dist/domain-event.entity.js +62 -0
- package/dist/domain-event.entity.js.map +1 -0
- package/dist/domain-event.mapper.d.ts +41 -0
- package/dist/domain-event.mapper.d.ts.map +1 -0
- package/dist/domain-event.mapper.js +42 -0
- package/dist/domain-event.mapper.js.map +1 -0
- package/dist/domain-event.relay.d.ts +80 -0
- package/dist/domain-event.relay.d.ts.map +1 -0
- package/dist/domain-event.relay.js +167 -0
- package/dist/domain-event.relay.js.map +1 -0
- package/dist/domain-event.subscriber.d.ts +33 -0
- package/dist/domain-event.subscriber.d.ts.map +1 -0
- package/dist/domain-event.subscriber.js +98 -0
- package/dist/domain-event.subscriber.js.map +1 -0
- package/dist/domain-events.module.d.ts +43 -0
- package/dist/domain-events.module.d.ts.map +1 -0
- package/dist/domain-events.module.js +74 -0
- package/dist/domain-events.module.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- 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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|