@imaginamossas/farmabien-common 1.0.0 → 1.0.2
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/dist/decorators/current-user.decorator.d.ts +9 -0
- package/dist/decorators/current-user.decorator.js +34 -0
- package/dist/decorators/current-user.decorator.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.js +21 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/public.decorator.d.ts +2 -0
- package/dist/decorators/public.decorator.js +8 -0
- package/dist/decorators/public.decorator.js.map +1 -0
- package/dist/decorators/query-runner.decorator.d.ts +1 -0
- package/dist/decorators/query-runner.decorator.js +13 -0
- package/dist/decorators/query-runner.decorator.js.map +1 -0
- package/dist/decorators/request-id.decorator.d.ts +8 -0
- package/dist/decorators/request-id.decorator.js +15 -0
- package/dist/decorators/request-id.decorator.js.map +1 -0
- package/dist/dto/commons.dto.d.ts +5 -0
- package/dist/dto/commons.dto.js +10 -0
- package/dist/dto/commons.dto.js.map +1 -0
- package/dist/dto/index.d.ts +3 -0
- package/dist/dto/index.js +20 -0
- package/dist/dto/index.js.map +1 -0
- package/dist/dto/profile.dto.d.ts +28 -0
- package/dist/dto/profile.dto.js +171 -0
- package/dist/dto/profile.dto.js.map +1 -0
- package/dist/dto/response-data.dto.d.ts +5 -0
- package/dist/dto/response-data.dto.js +37 -0
- package/dist/dto/response-data.dto.js.map +1 -0
- package/dist/entities/base.entity.d.ts +5 -0
- package/dist/entities/base.entity.js +43 -0
- package/dist/entities/base.entity.js.map +1 -0
- package/dist/entities/customer.entity.d.ts +21 -0
- package/dist/entities/customer.entity.js +111 -0
- package/dist/entities/customer.entity.js.map +1 -0
- package/dist/entities/customers.providers.entity.d.ts +11 -0
- package/dist/entities/customers.providers.entity.js +61 -0
- package/dist/entities/customers.providers.entity.js.map +1 -0
- package/dist/entities/email-verification-token.entity.d.ts +14 -0
- package/dist/entities/email-verification-token.entity.js +69 -0
- package/dist/entities/email-verification-token.entity.js.map +1 -0
- package/dist/entities/index.d.ts +4 -0
- package/dist/entities/index.js +21 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/providers.code.entity.d.ts +5 -0
- package/dist/entities/providers.code.entity.js +31 -0
- package/dist/entities/providers.code.entity.js.map +1 -0
- package/dist/enums/gender.enum.d.ts +5 -0
- package/dist/enums/gender.enum.js +10 -0
- package/dist/enums/gender.enum.js.map +1 -0
- package/dist/enums/id-type.enum.d.ts +6 -0
- package/dist/enums/id-type.enum.js +11 -0
- package/dist/enums/id-type.enum.js.map +1 -0
- package/dist/enums/index.d.ts +2 -0
- package/dist/enums/index.js +19 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/filters/app.exception.d.ts +7 -0
- package/dist/filters/app.exception.js +35 -0
- package/dist/filters/app.exception.js.map +1 -0
- package/dist/filters/custom.exception.filter.d.ts +8 -0
- package/dist/filters/custom.exception.filter.js +95 -0
- package/dist/filters/custom.exception.filter.js.map +1 -0
- package/dist/filters/index.d.ts +2 -0
- package/dist/filters/index.js +19 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/guards/api-key.guard.d.ts +8 -0
- package/dist/guards/api-key.guard.js +58 -0
- package/dist/guards/api-key.guard.js.map +1 -0
- package/dist/guards/index.d.ts +2 -0
- package/dist/guards/index.js +19 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/jwt-auth.guard.d.ts +17 -0
- package/dist/guards/jwt-auth.guard.js +97 -0
- package/dist/guards/jwt-auth.guard.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/index.d.ts +1 -0
- package/dist/interceptors/index.js +18 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/logging.interceptor.d.ts +13 -0
- package/dist/interceptors/logging.interceptor.js +91 -0
- package/dist/interceptors/logging.interceptor.js.map +1 -0
- package/dist/middlewares/index.d.ts +1 -0
- package/dist/middlewares/index.js +18 -0
- package/dist/middlewares/index.js.map +1 -0
- package/dist/middlewares/request-id.middleware.d.ts +9 -0
- package/dist/middlewares/request-id.middleware.js +37 -0
- package/dist/middlewares/request-id.middleware.js.map +1 -0
- package/dist/queues/commons/src/commons.module.d.ts +2 -0
- package/dist/queues/commons/src/commons.module.js +26 -0
- package/dist/queues/commons/src/commons.module.js.map +1 -0
- package/dist/queues/commons/src/commons.service.d.ts +2 -0
- package/dist/queues/commons/src/commons.service.js +17 -0
- package/dist/queues/commons/src/commons.service.js.map +1 -0
- package/dist/queues/commons/src/index.d.ts +2 -0
- package/dist/queues/commons/src/index.js +19 -0
- package/dist/queues/commons/src/index.js.map +1 -0
- package/dist/queues/index.d.ts +4 -0
- package/dist/queues/index.js +21 -0
- package/dist/queues/index.js.map +1 -0
- package/dist/queues/outbox/src/index.d.ts +5 -0
- package/dist/queues/outbox/src/index.js +22 -0
- package/dist/queues/outbox/src/index.js.map +1 -0
- package/dist/queues/outbox/src/outbox-event.entity.d.ts +17 -0
- package/dist/queues/outbox/src/outbox-event.entity.js +76 -0
- package/dist/queues/outbox/src/outbox-event.entity.js.map +1 -0
- package/dist/queues/outbox/src/outbox.dispatcher.d.ts +10 -0
- package/dist/queues/outbox/src/outbox.dispatcher.js +52 -0
- package/dist/queues/outbox/src/outbox.dispatcher.js.map +1 -0
- package/dist/queues/outbox/src/outbox.interfaces.d.ts +8 -0
- package/dist/queues/outbox/src/outbox.interfaces.js +3 -0
- package/dist/queues/outbox/src/outbox.interfaces.js.map +1 -0
- package/dist/queues/outbox/src/outbox.module.d.ts +2 -0
- package/dist/queues/outbox/src/outbox.module.js +24 -0
- package/dist/queues/outbox/src/outbox.module.js.map +1 -0
- package/dist/queues/outbox/src/outbox.service.d.ts +12 -0
- package/dist/queues/outbox/src/outbox.service.js +73 -0
- package/dist/queues/outbox/src/outbox.service.js.map +1 -0
- package/dist/queues/sns-publisher/src/index.d.ts +3 -0
- package/dist/queues/sns-publisher/src/index.js +20 -0
- package/dist/queues/sns-publisher/src/index.js.map +1 -0
- package/dist/queues/sns-publisher/src/sns-publisher.module.d.ts +5 -0
- package/dist/queues/sns-publisher/src/sns-publisher.module.js +43 -0
- package/dist/queues/sns-publisher/src/sns-publisher.module.js.map +1 -0
- package/dist/queues/sns-publisher/src/sns-publisher.service.d.ts +10 -0
- package/dist/queues/sns-publisher/src/sns-publisher.service.js +88 -0
- package/dist/queues/sns-publisher/src/sns-publisher.service.js.map +1 -0
- package/dist/queues/sns-publisher/src/sns.catalog.d.ts +22 -0
- package/dist/queues/sns-publisher/src/sns.catalog.js +28 -0
- package/dist/queues/sns-publisher/src/sns.catalog.js.map +1 -0
- package/dist/queues/sns-publisher/src/sns.constants.d.ts +2 -0
- package/dist/queues/sns-publisher/src/sns.constants.js +6 -0
- package/dist/queues/sns-publisher/src/sns.constants.js.map +1 -0
- package/dist/queues/sns-publisher/src/sns.interfaces.d.ts +28 -0
- package/dist/queues/sns-publisher/src/sns.interfaces.js +3 -0
- package/dist/queues/sns-publisher/src/sns.interfaces.js.map +1 -0
- package/dist/queues/sqs-consumer/src/index.d.ts +6 -0
- package/dist/queues/sqs-consumer/src/index.js +19 -0
- package/dist/queues/sqs-consumer/src/index.js.map +1 -0
- package/dist/queues/sqs-consumer/src/interfaces/message-handler.interface.d.ts +10 -0
- package/dist/queues/sqs-consumer/src/interfaces/message-handler.interface.js +5 -0
- package/dist/queues/sqs-consumer/src/interfaces/message-handler.interface.js.map +1 -0
- package/dist/queues/sqs-consumer/src/interfaces/sqs-consumer.interfaces.d.ts +48 -0
- package/dist/queues/sqs-consumer/src/interfaces/sqs-consumer.interfaces.js +11 -0
- package/dist/queues/sqs-consumer/src/interfaces/sqs-consumer.interfaces.js.map +1 -0
- package/dist/queues/sqs-consumer/src/services/sqs-message-validator.service.d.ts +16 -0
- package/dist/queues/sqs-consumer/src/services/sqs-message-validator.service.js +123 -0
- package/dist/queues/sqs-consumer/src/services/sqs-message-validator.service.js.map +1 -0
- package/dist/queues/sqs-consumer/src/services/sqs-polling.service.d.ts +37 -0
- package/dist/queues/sqs-consumer/src/services/sqs-polling.service.js +259 -0
- package/dist/queues/sqs-consumer/src/services/sqs-polling.service.js.map +1 -0
- package/dist/queues/sqs-consumer/src/sqs-consumer.constants.d.ts +5 -0
- package/dist/queues/sqs-consumer/src/sqs-consumer.constants.js +9 -0
- package/dist/queues/sqs-consumer/src/sqs-consumer.constants.js.map +1 -0
- package/dist/queues/sqs-consumer/src/sqs-consumer.module.d.ts +11 -0
- package/dist/queues/sqs-consumer/src/sqs-consumer.module.js +126 -0
- package/dist/queues/sqs-consumer/src/sqs-consumer.module.js.map +1 -0
- package/dist/services/contextual-logger.service.d.ts +15 -0
- package/dist/services/contextual-logger.service.js +69 -0
- package/dist/services/contextual-logger.service.js.map +1 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +20 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/password.service.d.ts +10 -0
- package/dist/services/password.service.js +54 -0
- package/dist/services/password.service.js.map +1 -0
- package/dist/services/uuid.service.d.ts +6 -0
- package/dist/services/uuid.service.js +47 -0
- package/dist/services/uuid.service.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/safe-date.transformer.d.ts +1 -0
- package/dist/utils/safe-date.transformer.js +59 -0
- package/dist/utils/safe-date.transformer.js.map +1 -0
- package/package.json +51 -12
- package/src/index.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/queues/outbox/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,wDAAsC;AACtC,sDAAoC;AACpC,sDAAoC;AACpC,kDAAgC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseEntity } from '../../../entities/base.entity';
|
|
2
|
+
export declare enum OutboxStatus {
|
|
3
|
+
PENDING = "PENDING",
|
|
4
|
+
SENT = "SENT",
|
|
5
|
+
FAILED = "FAILED"
|
|
6
|
+
}
|
|
7
|
+
export declare class OutboxEvent extends BaseEntity {
|
|
8
|
+
id: string;
|
|
9
|
+
aggregateType: string;
|
|
10
|
+
aggregateId: string;
|
|
11
|
+
eventType: string;
|
|
12
|
+
topicArn: string;
|
|
13
|
+
payload: unknown;
|
|
14
|
+
status: OutboxStatus;
|
|
15
|
+
attempts: number;
|
|
16
|
+
processedAt?: Date | null;
|
|
17
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OutboxEvent = exports.OutboxStatus = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const base_entity_1 = require("../../../entities/base.entity");
|
|
15
|
+
var OutboxStatus;
|
|
16
|
+
(function (OutboxStatus) {
|
|
17
|
+
OutboxStatus["PENDING"] = "PENDING";
|
|
18
|
+
OutboxStatus["SENT"] = "SENT";
|
|
19
|
+
OutboxStatus["FAILED"] = "FAILED";
|
|
20
|
+
})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {}));
|
|
21
|
+
let OutboxEvent = class OutboxEvent extends base_entity_1.BaseEntity {
|
|
22
|
+
id;
|
|
23
|
+
aggregateType;
|
|
24
|
+
aggregateId;
|
|
25
|
+
eventType;
|
|
26
|
+
topicArn;
|
|
27
|
+
payload;
|
|
28
|
+
status;
|
|
29
|
+
attempts;
|
|
30
|
+
processedAt;
|
|
31
|
+
};
|
|
32
|
+
exports.OutboxEvent = OutboxEvent;
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], OutboxEvent.prototype, "id", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.Column)(),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], OutboxEvent.prototype, "aggregateType", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, typeorm_1.Column)(),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], OutboxEvent.prototype, "aggregateId", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, typeorm_1.Column)(),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], OutboxEvent.prototype, "eventType", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, typeorm_1.Column)(),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], OutboxEvent.prototype, "topicArn", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, typeorm_1.Column)({ type: 'jsonb' }),
|
|
55
|
+
__metadata("design:type", Object)
|
|
56
|
+
], OutboxEvent.prototype, "payload", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, typeorm_1.Column)({
|
|
59
|
+
type: 'enum',
|
|
60
|
+
enum: OutboxStatus,
|
|
61
|
+
default: OutboxStatus.PENDING,
|
|
62
|
+
}),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], OutboxEvent.prototype, "status", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, typeorm_1.Column)({ type: 'int', default: 0 }),
|
|
67
|
+
__metadata("design:type", Number)
|
|
68
|
+
], OutboxEvent.prototype, "attempts", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, typeorm_1.Column)({ type: 'timestamp', nullable: true }),
|
|
71
|
+
__metadata("design:type", Object)
|
|
72
|
+
], OutboxEvent.prototype, "processedAt", void 0);
|
|
73
|
+
exports.OutboxEvent = OutboxEvent = __decorate([
|
|
74
|
+
(0, typeorm_1.Entity)('outbox_events')
|
|
75
|
+
], OutboxEvent);
|
|
76
|
+
//# sourceMappingURL=outbox-event.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox-event.entity.js","sourceRoot":"","sources":["../../../../src/queues/outbox/src/outbox-event.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAAiE;AACjE,+DAA2D;AAE3D,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,6BAAa,CAAA;IACb,iCAAiB,CAAA;AACnB,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AAGM,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,wBAAU;IAEzC,EAAE,CAAS;IAGX,aAAa,CAAS;IAGtB,WAAW,CAAS;IAGpB,SAAS,CAAS;IAGlB,QAAQ,CAAS;IAGjB,OAAO,CAAU;IAOjB,MAAM,CAAe;IAGrB,QAAQ,CAAS;IAGjB,WAAW,CAAe;CAC3B,CAAA;AA/BY,kCAAW;AAEtB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;uCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;kDACa;AAGtB;IADC,IAAA,gBAAM,GAAE;;gDACW;AAGpB;IADC,IAAA,gBAAM,GAAE;;8CACS;AAGlB;IADC,IAAA,gBAAM,GAAE;;6CACQ;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;4CACT;AAOjB;IALC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,OAAO;KAC9B,CAAC;;2CACmB;AAGrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;6CACnB;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACpB;sBA9Bf,WAAW;IADvB,IAAA,gBAAM,EAAC,eAAe,CAAC;GACX,WAAW,CA+BvB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SnsPublisherService } from '../../sns-publisher/src/sns-publisher.service';
|
|
2
|
+
import { OutboxService } from './outbox.service';
|
|
3
|
+
export declare class OutboxDispatcher {
|
|
4
|
+
private readonly outboxService;
|
|
5
|
+
private readonly snsPublisher;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(outboxService: OutboxService, snsPublisher: SnsPublisherService);
|
|
8
|
+
processPendingEvents(limit?: number): Promise<void>;
|
|
9
|
+
private processSingleEvent;
|
|
10
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var OutboxDispatcher_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.OutboxDispatcher = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const sns_publisher_service_1 = require("../../sns-publisher/src/sns-publisher.service");
|
|
16
|
+
const outbox_service_1 = require("./outbox.service");
|
|
17
|
+
let OutboxDispatcher = OutboxDispatcher_1 = class OutboxDispatcher {
|
|
18
|
+
outboxService;
|
|
19
|
+
snsPublisher;
|
|
20
|
+
logger = new common_1.Logger(OutboxDispatcher_1.name);
|
|
21
|
+
constructor(outboxService, snsPublisher) {
|
|
22
|
+
this.outboxService = outboxService;
|
|
23
|
+
this.snsPublisher = snsPublisher;
|
|
24
|
+
}
|
|
25
|
+
async processPendingEvents(limit = 50) {
|
|
26
|
+
const pendingEvents = await this.outboxService.findPending(limit);
|
|
27
|
+
for (const ev of pendingEvents) {
|
|
28
|
+
await this.processSingleEvent(ev);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async processSingleEvent(ev) {
|
|
32
|
+
try {
|
|
33
|
+
await this.snsPublisher.publish({
|
|
34
|
+
topicArn: ev.topicArn,
|
|
35
|
+
payload: ev.payload,
|
|
36
|
+
});
|
|
37
|
+
await this.outboxService.markAsSent(ev.id);
|
|
38
|
+
this.logger.log(`Outbox event ${ev.id} sent successfully`);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this.logger.error(`Error sending outbox event ${ev.id}: ${error.message}`);
|
|
42
|
+
await this.outboxService.markAsFailed(ev.id);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.OutboxDispatcher = OutboxDispatcher;
|
|
47
|
+
exports.OutboxDispatcher = OutboxDispatcher = OutboxDispatcher_1 = __decorate([
|
|
48
|
+
(0, common_1.Injectable)(),
|
|
49
|
+
__metadata("design:paramtypes", [outbox_service_1.OutboxService,
|
|
50
|
+
sns_publisher_service_1.SnsPublisherService])
|
|
51
|
+
], OutboxDispatcher);
|
|
52
|
+
//# sourceMappingURL=outbox.dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.dispatcher.js","sourceRoot":"","sources":["../../../../src/queues/outbox/src/outbox.dispatcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AACpD,yFAAoF;AACpF,qDAAiD;AAI1C,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAIR;IACA;IAJF,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAgB,CAAC,IAAI,CAAC,CAAC;IAE5D,YACmB,aAA4B,EAC5B,YAAiC;QADjC,kBAAa,GAAb,aAAa,CAAe;QAC5B,iBAAY,GAAZ,YAAY,CAAqB;IACjD,CAAC;IAEJ,KAAK,CAAC,oBAAoB,CAAC,KAAK,GAAG,EAAE;QACnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,EAAe;QAC9C,IAAI,CAAC;YAGH,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9B,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,OAAO,EAAE,EAAE,CAAC,OAAO;aACpB,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,EAAE,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF,CAAA;AA/BY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAKuB,8BAAa;QACd,2CAAmB;GALzC,gBAAgB,CA+B5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.interfaces.js","sourceRoot":"","sources":["../../../../src/queues/outbox/src/outbox.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.OutboxModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const outbox_event_entity_1 = require("./outbox-event.entity");
|
|
13
|
+
const outbox_service_1 = require("./outbox.service");
|
|
14
|
+
let OutboxModule = class OutboxModule {
|
|
15
|
+
};
|
|
16
|
+
exports.OutboxModule = OutboxModule;
|
|
17
|
+
exports.OutboxModule = OutboxModule = __decorate([
|
|
18
|
+
(0, common_1.Module)({
|
|
19
|
+
imports: [typeorm_1.TypeOrmModule.forFeature([outbox_event_entity_1.OutboxEvent])],
|
|
20
|
+
providers: [outbox_service_1.OutboxService],
|
|
21
|
+
exports: [outbox_service_1.OutboxService],
|
|
22
|
+
})
|
|
23
|
+
], OutboxModule);
|
|
24
|
+
//# sourceMappingURL=outbox.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.module.js","sourceRoot":"","sources":["../../../../src/queues/outbox/src/outbox.module.ts"],"names":[],"mappings":";;;;;;;;;AACA,2CAAwC;AACxC,6CAAgD;AAChD,+DAAoD;AACpD,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,iCAAW,CAAC,CAAC,CAAC;QAClD,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EntityManager, Repository } from 'typeorm';
|
|
2
|
+
import { CreateOutboxEventOptions } from '../src/outbox.interfaces';
|
|
3
|
+
import { OutboxEvent } from './outbox-event.entity';
|
|
4
|
+
export declare class OutboxService {
|
|
5
|
+
private readonly outboxRepo;
|
|
6
|
+
constructor(outboxRepo: Repository<OutboxEvent>);
|
|
7
|
+
createWithManager<T>(manager: EntityManager, options: CreateOutboxEventOptions<T>): Promise<OutboxEvent>;
|
|
8
|
+
create<T>(options: CreateOutboxEventOptions<T>): Promise<OutboxEvent>;
|
|
9
|
+
findPending(limit?: number): Promise<OutboxEvent[]>;
|
|
10
|
+
markAsSent(id: string): Promise<void>;
|
|
11
|
+
markAsFailed(id: string): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OutboxService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("typeorm");
|
|
18
|
+
const typeorm_2 = require("@nestjs/typeorm");
|
|
19
|
+
const outbox_event_entity_1 = require("./outbox-event.entity");
|
|
20
|
+
let OutboxService = class OutboxService {
|
|
21
|
+
outboxRepo;
|
|
22
|
+
constructor(outboxRepo) {
|
|
23
|
+
this.outboxRepo = outboxRepo;
|
|
24
|
+
}
|
|
25
|
+
async createWithManager(manager, options) {
|
|
26
|
+
const event = manager.create(outbox_event_entity_1.OutboxEvent, {
|
|
27
|
+
aggregateType: options.aggregateType,
|
|
28
|
+
aggregateId: options.aggregateId,
|
|
29
|
+
eventType: options.eventType,
|
|
30
|
+
topicArn: options.topicArn,
|
|
31
|
+
payload: options.payload,
|
|
32
|
+
status: outbox_event_entity_1.OutboxStatus.PENDING,
|
|
33
|
+
});
|
|
34
|
+
return manager.save(outbox_event_entity_1.OutboxEvent, event);
|
|
35
|
+
}
|
|
36
|
+
async create(options) {
|
|
37
|
+
const event = this.outboxRepo.create({
|
|
38
|
+
aggregateType: options.aggregateType,
|
|
39
|
+
aggregateId: options.aggregateId,
|
|
40
|
+
eventType: options.eventType,
|
|
41
|
+
topicArn: options.topicArn,
|
|
42
|
+
payload: options.payload,
|
|
43
|
+
status: outbox_event_entity_1.OutboxStatus.PENDING,
|
|
44
|
+
});
|
|
45
|
+
return this.outboxRepo.save(event);
|
|
46
|
+
}
|
|
47
|
+
async findPending(limit = 50) {
|
|
48
|
+
return this.outboxRepo.find({
|
|
49
|
+
where: { status: outbox_event_entity_1.OutboxStatus.PENDING },
|
|
50
|
+
order: { createdAt: 'ASC' },
|
|
51
|
+
take: limit,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async markAsSent(id) {
|
|
55
|
+
await this.outboxRepo.update(id, {
|
|
56
|
+
status: outbox_event_entity_1.OutboxStatus.SENT,
|
|
57
|
+
processedAt: new Date(),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async markAsFailed(id) {
|
|
61
|
+
await this.outboxRepo.update(id, {
|
|
62
|
+
status: outbox_event_entity_1.OutboxStatus.FAILED,
|
|
63
|
+
attempts: () => 'attempts + 1',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
exports.OutboxService = OutboxService;
|
|
68
|
+
exports.OutboxService = OutboxService = __decorate([
|
|
69
|
+
(0, common_1.Injectable)(),
|
|
70
|
+
__param(0, (0, typeorm_2.InjectRepository)(outbox_event_entity_1.OutboxEvent)),
|
|
71
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
72
|
+
], OutboxService);
|
|
73
|
+
//# sourceMappingURL=outbox.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.service.js","sourceRoot":"","sources":["../../../../src/queues/outbox/src/outbox.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,2CAA4C;AAC5C,qCAAoD;AACpD,6CAAmD;AAEnD,+DAAkE;AAG3D,IAAM,aAAa,GAAnB,MAAM,aAAa;IAGL;IAFnB,YAEmB,UAAmC;QAAnC,eAAU,GAAV,UAAU,CAAyB;IACnD,CAAC;IAKJ,KAAK,CAAC,iBAAiB,CACrB,OAAsB,EACtB,OAAoC;QAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,iCAAW,EAAE;YACxC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,kCAAY,CAAC,OAAO;SAC7B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,iCAAW,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAKD,KAAK,CAAC,MAAM,CAAI,OAAoC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACnC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,kCAAY,CAAC,OAAO;SAC7B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAKD,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,EAAE,MAAM,EAAE,kCAAY,CAAC,OAAO,EAAE;YACvC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC3B,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,MAAM,EAAE,kCAAY,CAAC,IAAI;YACzB,WAAW,EAAE,IAAI,IAAI,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,MAAM,EAAE,kCAAY,CAAC,MAAM;YAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc;SAC/B,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjEY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,iCAAW,CAAC,CAAA;qCACD,oBAAU;GAH9B,aAAa,CAiEzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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("./sns-publisher.module"), exports);
|
|
18
|
+
__exportStar(require("./sns-publisher.service"), exports);
|
|
19
|
+
__exportStar(require("./sns.interfaces"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/queues/sns-publisher/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,yDAAuC;AACvC,0DAAwC;AACxC,mDAAiC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 SnsPublisherModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SnsPublisherModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
13
|
+
const sns_constants_1 = require("./sns.constants");
|
|
14
|
+
const sns_publisher_service_1 = require("./sns-publisher.service");
|
|
15
|
+
let SnsPublisherModule = SnsPublisherModule_1 = class SnsPublisherModule {
|
|
16
|
+
static register(options) {
|
|
17
|
+
return {
|
|
18
|
+
module: SnsPublisherModule_1,
|
|
19
|
+
providers: [
|
|
20
|
+
{
|
|
21
|
+
provide: sns_constants_1.SNS_MODULE_OPTIONS,
|
|
22
|
+
useValue: options,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
provide: sns_constants_1.SNS_CLIENT,
|
|
26
|
+
useFactory: (opts) => {
|
|
27
|
+
return new client_sns_1.SNSClient({
|
|
28
|
+
region: opts.region,
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
inject: [sns_constants_1.SNS_MODULE_OPTIONS],
|
|
32
|
+
},
|
|
33
|
+
sns_publisher_service_1.SnsPublisherService,
|
|
34
|
+
],
|
|
35
|
+
exports: [sns_publisher_service_1.SnsPublisherService],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.SnsPublisherModule = SnsPublisherModule;
|
|
40
|
+
exports.SnsPublisherModule = SnsPublisherModule = SnsPublisherModule_1 = __decorate([
|
|
41
|
+
(0, common_1.Module)({})
|
|
42
|
+
], SnsPublisherModule);
|
|
43
|
+
//# sourceMappingURL=sns-publisher.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sns-publisher.module.js","sourceRoot":"","sources":["../../../../src/queues/sns-publisher/src/sns-publisher.module.ts"],"names":[],"mappings":";;;;;;;;;;AAEA,2CAAuD;AACvD,oDAAgD;AAEhD,mDAAiE;AACjE,mEAA8D;AAGvD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,QAAQ,CAAC,OAAyB;QACvC,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,kCAAkB;oBAC3B,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,0BAAU;oBACnB,UAAU,EAAE,CAAC,IAAsB,EAAE,EAAE;wBACrC,OAAO,IAAI,sBAAS,CAAC;4BACnB,MAAM,EAAE,IAAI,CAAC,MAAM;yBAEpB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,EAAE,CAAC,kCAAkB,CAAC;iBAC7B;gBACD,2CAAmB;aACpB;YACD,OAAO,EAAE,CAAC,2CAAmB,CAAC;SAC/B,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAwB9B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SNSClient } from '@aws-sdk/client-sns';
|
|
2
|
+
import { PublishDomainEventOptions, PublishMessageOptions, SnsModuleOptions } from './sns.interfaces';
|
|
3
|
+
export declare class SnsPublisherService {
|
|
4
|
+
private readonly snsClient;
|
|
5
|
+
private readonly options;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(snsClient: SNSClient, options: SnsModuleOptions);
|
|
8
|
+
publish<T>(options: PublishMessageOptions<T>): Promise<string>;
|
|
9
|
+
publishDomainEvent<T>(options: PublishDomainEventOptions<T>): Promise<string>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var SnsPublisherService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.SnsPublisherService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
19
|
+
const sns_constants_1 = require("./sns.constants");
|
|
20
|
+
let SnsPublisherService = SnsPublisherService_1 = class SnsPublisherService {
|
|
21
|
+
snsClient;
|
|
22
|
+
options;
|
|
23
|
+
logger = new common_1.Logger(SnsPublisherService_1.name);
|
|
24
|
+
constructor(snsClient, options) {
|
|
25
|
+
this.snsClient = snsClient;
|
|
26
|
+
this.options = options;
|
|
27
|
+
}
|
|
28
|
+
async publish(options) {
|
|
29
|
+
const topicArn = options.topicArn ?? this.options.defaultTopicArn;
|
|
30
|
+
if (!topicArn) {
|
|
31
|
+
throw new Error('No se especificó topicArn y no hay defaultTopicArn configurado en el módulo.');
|
|
32
|
+
}
|
|
33
|
+
const message = JSON.stringify(options.payload);
|
|
34
|
+
const messageAttributes = options.attributes &&
|
|
35
|
+
Object.entries(options.attributes).reduce((acc, [key, value]) => ({
|
|
36
|
+
...acc,
|
|
37
|
+
[key]: {
|
|
38
|
+
DataType: 'String',
|
|
39
|
+
StringValue: value,
|
|
40
|
+
},
|
|
41
|
+
}), {});
|
|
42
|
+
try {
|
|
43
|
+
const command = new client_sns_1.PublishCommand({
|
|
44
|
+
TopicArn: topicArn,
|
|
45
|
+
Message: message,
|
|
46
|
+
MessageAttributes: messageAttributes,
|
|
47
|
+
MessageGroupId: options.messageGroupId,
|
|
48
|
+
MessageDeduplicationId: options.messageDeduplicationId,
|
|
49
|
+
});
|
|
50
|
+
const response = await this.snsClient.send(command);
|
|
51
|
+
const messageId = response.MessageId ?? '';
|
|
52
|
+
this.logger.log(`Mensaje publicado en SNS. TopicArn=${topicArn}, MessageId=${messageId}`);
|
|
53
|
+
return messageId;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.logger.error(`Error publicando mensaje en SNS. TopicArn=${topicArn}`, error.stack);
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async publishDomainEvent(options) {
|
|
61
|
+
const envelope = {
|
|
62
|
+
event: options.event,
|
|
63
|
+
version: options.version ?? '1.0',
|
|
64
|
+
timestamp: options.timestamp ?? new Date().toISOString(),
|
|
65
|
+
data: options.payload,
|
|
66
|
+
};
|
|
67
|
+
const attributes = {
|
|
68
|
+
eventType: envelope.event,
|
|
69
|
+
version: envelope.version,
|
|
70
|
+
...(options.attributes ?? {}),
|
|
71
|
+
};
|
|
72
|
+
return this.publish({
|
|
73
|
+
topicArn: options.topicArn,
|
|
74
|
+
payload: envelope,
|
|
75
|
+
attributes,
|
|
76
|
+
messageGroupId: options.messageGroupId,
|
|
77
|
+
messageDeduplicationId: options.messageDeduplicationId,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
exports.SnsPublisherService = SnsPublisherService;
|
|
82
|
+
exports.SnsPublisherService = SnsPublisherService = SnsPublisherService_1 = __decorate([
|
|
83
|
+
(0, common_1.Injectable)(),
|
|
84
|
+
__param(0, (0, common_1.Inject)(sns_constants_1.SNS_CLIENT)),
|
|
85
|
+
__param(1, (0, common_1.Inject)(sns_constants_1.SNS_MODULE_OPTIONS)),
|
|
86
|
+
__metadata("design:paramtypes", [client_sns_1.SNSClient, Object])
|
|
87
|
+
], SnsPublisherService);
|
|
88
|
+
//# sourceMappingURL=sns-publisher.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sns-publisher.service.js","sourceRoot":"","sources":["../../../../src/queues/sns-publisher/src/sns-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,2CAA4D;AAC5D,oDAAuF;AACvF,mDAAiE;AAW1D,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAIS;IACQ;IAJ9B,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/D,YACuC,SAAoB,EACZ,OAAyB;QADjC,cAAS,GAAT,SAAS,CAAW;QACZ,YAAO,GAAP,OAAO,CAAkB;IACrE,CAAC;IAOJ,KAAK,CAAC,OAAO,CAAI,OAAiC;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAElE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,iBAAiB,GACrB,OAAO,CAAC,UAAU;YAClB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtB,GAAG,GAAG;gBACN,CAAC,GAAG,CAAC,EAAE;oBACL,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE,KAAK;iBACnB;aACF,CAAC,EACF,EAAE,CACH,CAAC;QAEJ,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC;gBACjC,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,OAAO;gBAChB,iBAAiB,EAAE,iBAAiB;gBACpC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;aACvD,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,QAAQ,eAAe,SAAS,EAAE,CAAC,CAAC;YAE1F,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,6CAA6C,QAAQ,EAAE,EACtD,KAAe,CAAC,KAAK,CACvB,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAI,OAAqC;QAC/D,MAAM,QAAQ,GAA0B;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACxD,IAAI,EAAE,OAAO,CAAC,OAAO;SACtB,CAAC;QAEF,MAAM,UAAU,GAA2B;YACzC,SAAS,EAAE,QAAQ,CAAC,KAAK;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;SAC9B,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAwB;YACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,QAAQ;YACjB,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;SACvD,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnFY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,0BAAU,CAAC,CAAA;IAClB,WAAA,IAAA,eAAM,EAAC,kCAAkB,CAAC,CAAA;qCADqB,sBAAS;GAJhD,mBAAmB,CAmF/B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare enum SnsTopicCatalog {
|
|
2
|
+
CUSTOMERS = "customers.events",
|
|
3
|
+
ORDERS = "orders.events",
|
|
4
|
+
INVENTORY = "inventory.events",
|
|
5
|
+
NOTIFICATIONS = "notifications.events"
|
|
6
|
+
}
|
|
7
|
+
export declare enum SnsEventCatalog {
|
|
8
|
+
CustomerCreated = "CustomerCreated",
|
|
9
|
+
CustomerUpdated = "CustomerUpdated",
|
|
10
|
+
CustomerOnboarded = "CustomerOnboarded",
|
|
11
|
+
CustomerDeleted = "CustomerDeleted",
|
|
12
|
+
OrderPlaced = "OrderPlaced",
|
|
13
|
+
OrderCancelled = "OrderCancelled",
|
|
14
|
+
OrderCompleted = "OrderCompleted",
|
|
15
|
+
OrderFailed = "OrderFailed",
|
|
16
|
+
StockLowAlert = "StockLowAlert",
|
|
17
|
+
InventoryRebalanced = "InventoryRebalanced",
|
|
18
|
+
InventoryAdjusted = "InventoryAdjusted",
|
|
19
|
+
NotificationSent = "NotificationSent",
|
|
20
|
+
NotificationFailed = "NotificationFailed",
|
|
21
|
+
NotificationDelivered = "NotificationDelivered"
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SnsEventCatalog = exports.SnsTopicCatalog = void 0;
|
|
4
|
+
var SnsTopicCatalog;
|
|
5
|
+
(function (SnsTopicCatalog) {
|
|
6
|
+
SnsTopicCatalog["CUSTOMERS"] = "customers.events";
|
|
7
|
+
SnsTopicCatalog["ORDERS"] = "orders.events";
|
|
8
|
+
SnsTopicCatalog["INVENTORY"] = "inventory.events";
|
|
9
|
+
SnsTopicCatalog["NOTIFICATIONS"] = "notifications.events";
|
|
10
|
+
})(SnsTopicCatalog || (exports.SnsTopicCatalog = SnsTopicCatalog = {}));
|
|
11
|
+
var SnsEventCatalog;
|
|
12
|
+
(function (SnsEventCatalog) {
|
|
13
|
+
SnsEventCatalog["CustomerCreated"] = "CustomerCreated";
|
|
14
|
+
SnsEventCatalog["CustomerUpdated"] = "CustomerUpdated";
|
|
15
|
+
SnsEventCatalog["CustomerOnboarded"] = "CustomerOnboarded";
|
|
16
|
+
SnsEventCatalog["CustomerDeleted"] = "CustomerDeleted";
|
|
17
|
+
SnsEventCatalog["OrderPlaced"] = "OrderPlaced";
|
|
18
|
+
SnsEventCatalog["OrderCancelled"] = "OrderCancelled";
|
|
19
|
+
SnsEventCatalog["OrderCompleted"] = "OrderCompleted";
|
|
20
|
+
SnsEventCatalog["OrderFailed"] = "OrderFailed";
|
|
21
|
+
SnsEventCatalog["StockLowAlert"] = "StockLowAlert";
|
|
22
|
+
SnsEventCatalog["InventoryRebalanced"] = "InventoryRebalanced";
|
|
23
|
+
SnsEventCatalog["InventoryAdjusted"] = "InventoryAdjusted";
|
|
24
|
+
SnsEventCatalog["NotificationSent"] = "NotificationSent";
|
|
25
|
+
SnsEventCatalog["NotificationFailed"] = "NotificationFailed";
|
|
26
|
+
SnsEventCatalog["NotificationDelivered"] = "NotificationDelivered";
|
|
27
|
+
})(SnsEventCatalog || (exports.SnsEventCatalog = SnsEventCatalog = {}));
|
|
28
|
+
//# sourceMappingURL=sns.catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sns.catalog.js","sourceRoot":"","sources":["../../../../src/queues/sns-publisher/src/sns.catalog.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,iDAA8B,CAAA;IAC9B,2CAAwB,CAAA;IACxB,iDAA8B,CAAA;IAC9B,yDAAsC,CAAA;AACxC,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAED,IAAY,eAsBX;AAtBD,WAAY,eAAe;IAEzB,sDAAmC,CAAA;IACnC,sDAAmC,CAAA;IACnC,0DAAuC,CAAA;IACvC,sDAAmC,CAAA;IAGnC,8CAA2B,CAAA;IAC3B,oDAAiC,CAAA;IACjC,oDAAiC,CAAA;IACjC,8CAA2B,CAAA;IAG3B,kDAA+B,CAAA;IAC/B,8DAA2C,CAAA;IAC3C,0DAAuC,CAAA;IAGvC,wDAAqC,CAAA;IACrC,4DAAyC,CAAA;IACzC,kEAA+C,CAAA;AACjD,CAAC,EAtBW,eAAe,+BAAf,eAAe,QAsB1B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SNS_CLIENT = exports.SNS_MODULE_OPTIONS = void 0;
|
|
4
|
+
exports.SNS_MODULE_OPTIONS = 'SNS_MODULE_OPTIONS';
|
|
5
|
+
exports.SNS_CLIENT = 'SNS_CLIENT';
|
|
6
|
+
//# sourceMappingURL=sns.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sns.constants.js","sourceRoot":"","sources":["../../../../src/queues/sns-publisher/src/sns.constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,UAAU,GAAG,YAAY,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SnsEventCatalog } from '../../sns-publisher/src/sns.catalog';
|
|
2
|
+
export interface SnsModuleOptions {
|
|
3
|
+
region: string;
|
|
4
|
+
defaultTopicArn?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PublishMessageOptions<T = unknown> {
|
|
7
|
+
payload: T;
|
|
8
|
+
topicArn?: string;
|
|
9
|
+
attributes?: Record<string, string>;
|
|
10
|
+
messageGroupId?: string;
|
|
11
|
+
messageDeduplicationId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SnsMessageEnvelope<T> {
|
|
14
|
+
event: SnsEventCatalog;
|
|
15
|
+
version: string;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
data: T;
|
|
18
|
+
}
|
|
19
|
+
export interface PublishDomainEventOptions<T = unknown> {
|
|
20
|
+
event: SnsEventCatalog;
|
|
21
|
+
payload: T;
|
|
22
|
+
version?: string;
|
|
23
|
+
timestamp?: string;
|
|
24
|
+
topicArn?: string;
|
|
25
|
+
attributes?: Record<string, string>;
|
|
26
|
+
messageGroupId?: string;
|
|
27
|
+
messageDeduplicationId?: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sns.interfaces.js","sourceRoot":"","sources":["../../../../src/queues/sns-publisher/src/sns.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { SqsConsumerModule } from './sqs-consumer.module';
|
|
2
|
+
export { SQS_CLIENT, SQS_MODULE_OPTIONS, SQS_MESSAGE_HANDLERS, SQS_QUEUE_URL, SQS_FEATURE_OPTIONS, } from './sqs-consumer.constants';
|
|
3
|
+
export { SqsModuleOptions, SqsFeatureOptions, SqsFeatureAsyncOptions, SqsResolvedOptions, ValidatedSqsMessage, ConsumerStats, DEFAULT_SQS_OPTIONS, } from './interfaces/sqs-consumer.interfaces';
|
|
4
|
+
export { SqsMessageHandler, HandlerResult, } from './interfaces/message-handler.interface';
|
|
5
|
+
export { SqsPollingService } from './services/sqs-polling.service';
|
|
6
|
+
export { SqsMessageValidatorService, SqsValidationError, } from './services/sqs-message-validator.service';
|