mutualbankutils 1.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.
@@ -0,0 +1,8 @@
1
+ export declare abstract class BaseDomain<T> {
2
+ private readonly props;
3
+ constructor(props: T);
4
+ get(): T;
5
+ get<K extends keyof T>(key: K): T[K];
6
+ set<K extends keyof T>(key: K, value: T[K]): void;
7
+ toJSON(): T;
8
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseDomain = void 0;
4
+ class BaseDomain {
5
+ constructor(props) {
6
+ this.props = props;
7
+ }
8
+ get(key) {
9
+ if (key !== undefined)
10
+ return this.props[key];
11
+ return this.props;
12
+ }
13
+ set(key, value) {
14
+ this.props[key] = value;
15
+ }
16
+ toJSON() {
17
+ return Object.freeze({ ...this.props });
18
+ }
19
+ }
20
+ exports.BaseDomain = BaseDomain;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZURvbWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NoYXJlZC9kb21haW4vQmFzZURvbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFzQixVQUFVO0lBRzlCLFlBQVksS0FBUTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBTUQsR0FBRyxDQUFvQixHQUFPO1FBQzVCLElBQUksR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxHQUFHLENBQW9CLEdBQU0sRUFBRSxLQUFXO1FBQ3ZDLElBQUksQ0FBQyxLQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUF2QkQsZ0NBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEb21haW48VD4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUKSB7XHJcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XHJcbiAgfVxyXG5cclxuICBnZXQoKTogVDtcclxuXHJcbiAgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEspOiBUW0tdO1xyXG5cclxuICBnZXQ8SyBleHRlbmRzIGtleW9mIFQ+KGtleT86IEspOiBUIHwgVFtLXSB7XHJcbiAgICBpZiAoa2V5ICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLnByb3BzW2tleV07XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcclxuICB9XHJcblxyXG4gIHNldDxLIGV4dGVuZHMga2V5b2YgVD4oa2V5OiBLLCB2YWx1ZTogVFtLXSk6IHZvaWQge1xyXG4gICAgKHRoaXMucHJvcHMgYXMgYW55KVtrZXldID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICB0b0pTT04oKTogVCB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7IC4uLnRoaXMucHJvcHMgfSk7XHJcbiAgfVxyXG59Il19
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { BaseDomain } from './BaseDomain';
3
+ export declare enum RoutingAttemptStatus {
4
+ PENDING = "pending",
5
+ SUCCESS = "success",
6
+ FAILED = "failed"
7
+ }
8
+ export declare const routingAttemptsSchema: z.ZodObject<{
9
+ id: z.ZodOptional<z.ZodString>;
10
+ transactionId: z.ZodString;
11
+ providerCode: z.ZodString;
12
+ requestPayload: z.ZodOptional<z.ZodAny>;
13
+ responsePayload: z.ZodOptional<z.ZodAny>;
14
+ status: z.ZodEnum<typeof RoutingAttemptStatus>;
15
+ createdAt: z.ZodDefault<z.ZodOptional<z.ZodDate>>;
16
+ updatedAt: z.ZodDefault<z.ZodOptional<z.ZodDate>>;
17
+ }, z.core.$strip>;
18
+ export type RoutingAttemptsProps = z.infer<typeof routingAttemptsSchema>;
19
+ export declare class RoutingAttempts extends BaseDomain<RoutingAttemptsProps> {
20
+ constructor(props: RoutingAttemptsProps);
21
+ static create(props: RoutingAttemptsProps): RoutingAttempts;
22
+ static restore(props: RoutingAttemptsProps): RoutingAttempts;
23
+ success(): void;
24
+ failed(): void;
25
+ setRequestPayload(payload: any): void;
26
+ setResponsePayload(payload: any): void;
27
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoutingAttempts = exports.routingAttemptsSchema = exports.RoutingAttemptStatus = void 0;
4
+ const zod_1 = require("zod");
5
+ const BaseDomain_1 = require("./BaseDomain");
6
+ const crypto_1 = require("crypto");
7
+ var RoutingAttemptStatus;
8
+ (function (RoutingAttemptStatus) {
9
+ RoutingAttemptStatus["PENDING"] = "pending";
10
+ RoutingAttemptStatus["SUCCESS"] = "success";
11
+ RoutingAttemptStatus["FAILED"] = "failed";
12
+ })(RoutingAttemptStatus || (exports.RoutingAttemptStatus = RoutingAttemptStatus = {}));
13
+ exports.routingAttemptsSchema = zod_1.z.object({
14
+ id: zod_1.z.string().optional(),
15
+ transactionId: zod_1.z.string(),
16
+ providerCode: zod_1.z.string(),
17
+ requestPayload: zod_1.z.any().optional(),
18
+ responsePayload: zod_1.z.any().optional(),
19
+ status: zod_1.z.nativeEnum(RoutingAttemptStatus),
20
+ createdAt: zod_1.z.date().optional().default(new Date()),
21
+ updatedAt: zod_1.z.date().optional().default(new Date()),
22
+ });
23
+ class RoutingAttempts extends BaseDomain_1.BaseDomain {
24
+ constructor(props) {
25
+ super(props);
26
+ }
27
+ static create(props) {
28
+ const id = (0, crypto_1.randomUUID)();
29
+ return new RoutingAttempts({
30
+ id,
31
+ ...props,
32
+ createdAt: new Date(),
33
+ updatedAt: new Date(),
34
+ });
35
+ }
36
+ static restore(props) {
37
+ return new RoutingAttempts(props);
38
+ }
39
+ success() {
40
+ this.set("status", RoutingAttemptStatus.SUCCESS);
41
+ }
42
+ failed() {
43
+ this.set("status", RoutingAttemptStatus.FAILED);
44
+ }
45
+ setRequestPayload(payload) {
46
+ this.set("requestPayload", JSON.stringify(payload));
47
+ }
48
+ setResponsePayload(payload) {
49
+ this.set("responsePayload", JSON.stringify(payload));
50
+ }
51
+ }
52
+ exports.RoutingAttempts = RoutingAttempts;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGluZ0F0dGVtcHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2hhcmVkL2RvbWFpbi9Sb3V0aW5nQXR0ZW1wdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBQ3hCLDZDQUEwQztBQUMxQyxtQ0FBbUM7QUFFbkMsSUFBWSxvQkFJWDtBQUpELFdBQVksb0JBQW9CO0lBQzlCLDJDQUFtQixDQUFBO0lBQ25CLDJDQUFtQixDQUFBO0lBQ25CLHlDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUkvQjtBQUVZLFFBQUEscUJBQXFCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN6QixhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN4QixjQUFjLEVBQUUsT0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxlQUFlLEVBQUUsT0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxNQUFNLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztJQUMxQyxTQUFTLEVBQUUsT0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2xELFNBQVMsRUFBRSxPQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Q0FDbkQsQ0FBQyxDQUFDO0FBSUgsTUFBYSxlQUFnQixTQUFRLHVCQUFnQztJQUNuRSxZQUFZLEtBQTJCO1FBQ3JDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQTJCO1FBQ3ZDLE1BQU0sRUFBRSxHQUFHLElBQUEsbUJBQVUsR0FBRSxDQUFDO1FBRXhCLE9BQU8sSUFBSSxlQUFlLENBQUM7WUFDekIsRUFBRTtZQUNGLEdBQUcsS0FBSztZQUNSLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBMkI7UUFDeEMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQVk7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQVk7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBbkNELDBDQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG5pbXBvcnQgeyBCYXNlRG9tYWluIH0gZnJvbSAnLi9CYXNlRG9tYWluJztcclxuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJjcnlwdG9cIlxyXG5cclxuZXhwb3J0IGVudW0gUm91dGluZ0F0dGVtcHRTdGF0dXMge1xyXG4gIFBFTkRJTkcgPSAncGVuZGluZycsXHJcbiAgU1VDQ0VTUyA9ICdzdWNjZXNzJyxcclxuICBGQUlMRUQgPSAnZmFpbGVkJyxcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHJvdXRpbmdBdHRlbXB0c1NjaGVtYSA9IHoub2JqZWN0KHtcclxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxyXG4gIHRyYW5zYWN0aW9uSWQ6IHouc3RyaW5nKCksXHJcbiAgcHJvdmlkZXJDb2RlOiB6LnN0cmluZygpLFxyXG4gIHJlcXVlc3RQYXlsb2FkOiB6LmFueSgpLm9wdGlvbmFsKCksXHJcbiAgcmVzcG9uc2VQYXlsb2FkOiB6LmFueSgpLm9wdGlvbmFsKCksXHJcbiAgc3RhdHVzOiB6Lm5hdGl2ZUVudW0oUm91dGluZ0F0dGVtcHRTdGF0dXMpLFxyXG4gIGNyZWF0ZWRBdDogei5kYXRlKCkub3B0aW9uYWwoKS5kZWZhdWx0KG5ldyBEYXRlKCkpLFxyXG4gIHVwZGF0ZWRBdDogei5kYXRlKCkub3B0aW9uYWwoKS5kZWZhdWx0KG5ldyBEYXRlKCkpLFxyXG59KTtcclxuXHJcbmV4cG9ydCB0eXBlIFJvdXRpbmdBdHRlbXB0c1Byb3BzID0gei5pbmZlcjx0eXBlb2Ygcm91dGluZ0F0dGVtcHRzU2NoZW1hPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSb3V0aW5nQXR0ZW1wdHMgZXh0ZW5kcyBCYXNlRG9tYWluPFJvdXRpbmdBdHRlbXB0c1Byb3BzPiB7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IFJvdXRpbmdBdHRlbXB0c1Byb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHByb3BzOiBSb3V0aW5nQXR0ZW1wdHNQcm9wcyk6IFJvdXRpbmdBdHRlbXB0cyB7XHJcbiAgICBjb25zdCBpZCA9IHJhbmRvbVVVSUQoKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFJvdXRpbmdBdHRlbXB0cyh7XHJcbiAgICAgIGlkLFxyXG4gICAgICAuLi5wcm9wcyxcclxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxyXG4gICAgICB1cGRhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZXN0b3JlKHByb3BzOiBSb3V0aW5nQXR0ZW1wdHNQcm9wcyk6IFJvdXRpbmdBdHRlbXB0cyB7XHJcbiAgICByZXR1cm4gbmV3IFJvdXRpbmdBdHRlbXB0cyhwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdWNjZXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXQoXCJzdGF0dXNcIiwgUm91dGluZ0F0dGVtcHRTdGF0dXMuU1VDQ0VTUyk7XHJcbiAgfVxyXG5cclxuICBmYWlsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldChcInN0YXR1c1wiLCBSb3V0aW5nQXR0ZW1wdFN0YXR1cy5GQUlMRUQpO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVxdWVzdFBheWxvYWQocGF5bG9hZDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNldChcInJlcXVlc3RQYXlsb2FkXCIsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcclxuICB9XHJcblxyXG4gIHNldFJlc3BvbnNlUGF5bG9hZChwYXlsb2FkOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0KFwicmVzcG9uc2VQYXlsb2FkXCIsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { BaseDomain } from './BaseDomain';
3
+ export declare enum TransactionStatus {
4
+ CREATED = "created",
5
+ PENDING = "pending",
6
+ PROCESSING = "processing",
7
+ COMPLETED = "completed",
8
+ FAILED = "failed",
9
+ CANCELLED = "cancelled",
10
+ REFUNDED = "refunded"
11
+ }
12
+ export declare const transactionSchema: z.ZodObject<{
13
+ id: z.ZodOptional<z.ZodString>;
14
+ amount: z.ZodNumber;
15
+ providerCode: z.ZodString;
16
+ externalId: z.ZodString;
17
+ status: z.ZodEnum<typeof TransactionStatus>;
18
+ }, z.core.$strip>;
19
+ export type TransactionProps = z.infer<typeof transactionSchema>;
20
+ export declare class Transaction extends BaseDomain<TransactionProps> {
21
+ constructor(props: TransactionProps);
22
+ static create(props: TransactionProps): Transaction;
23
+ static restore(props: TransactionProps): Transaction;
24
+ failed(): void;
25
+ completed(): void;
26
+ cancelled(): void;
27
+ refunded(): void;
28
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Transaction = exports.transactionSchema = exports.TransactionStatus = void 0;
4
+ const zod_1 = require("zod");
5
+ const BaseDomain_1 = require("./BaseDomain");
6
+ const crypto_1 = require("crypto");
7
+ var TransactionStatus;
8
+ (function (TransactionStatus) {
9
+ TransactionStatus["CREATED"] = "created";
10
+ TransactionStatus["PENDING"] = "pending";
11
+ TransactionStatus["PROCESSING"] = "processing";
12
+ TransactionStatus["COMPLETED"] = "completed";
13
+ TransactionStatus["FAILED"] = "failed";
14
+ TransactionStatus["CANCELLED"] = "cancelled";
15
+ TransactionStatus["REFUNDED"] = "refunded";
16
+ })(TransactionStatus || (exports.TransactionStatus = TransactionStatus = {}));
17
+ exports.transactionSchema = zod_1.z.object({
18
+ id: zod_1.z.string().optional(),
19
+ amount: zod_1.z.number(),
20
+ providerCode: zod_1.z.string(),
21
+ externalId: zod_1.z.string(),
22
+ status: zod_1.z.nativeEnum(TransactionStatus),
23
+ });
24
+ class Transaction extends BaseDomain_1.BaseDomain {
25
+ constructor(props) {
26
+ super(props);
27
+ }
28
+ static create(props) {
29
+ const id = (0, crypto_1.randomUUID)();
30
+ return new Transaction({
31
+ id,
32
+ ...props,
33
+ status: TransactionStatus.CREATED,
34
+ });
35
+ }
36
+ static restore(props) {
37
+ return new Transaction(props);
38
+ }
39
+ failed() {
40
+ this.set("status", TransactionStatus.FAILED);
41
+ }
42
+ completed() {
43
+ this.set("status", TransactionStatus.COMPLETED);
44
+ }
45
+ cancelled() {
46
+ this.set("status", TransactionStatus.CANCELLED);
47
+ }
48
+ refunded() {
49
+ this.set("status", TransactionStatus.REFUNDED);
50
+ }
51
+ }
52
+ exports.Transaction = Transaction;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zaGFyZWQvZG9tYWluL1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF3QjtBQUN4Qiw2Q0FBMEM7QUFDMUMsbUNBQW1DO0FBRW5DLElBQVksaUJBUVg7QUFSRCxXQUFZLGlCQUFpQjtJQUMzQix3Q0FBbUIsQ0FBQTtJQUNuQix3Q0FBbUIsQ0FBQTtJQUNuQiw4Q0FBeUIsQ0FBQTtJQUN6Qiw0Q0FBdUIsQ0FBQTtJQUN2QixzQ0FBaUIsQ0FBQTtJQUNqQiw0Q0FBdUIsQ0FBQTtJQUN2QiwwQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBUlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFRNUI7QUFFWSxRQUFBLGlCQUFpQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEMsRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsWUFBWSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDeEIsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdEIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7Q0FDeEMsQ0FBQyxDQUFDO0FBSUgsTUFBYSxXQUFZLFNBQVEsdUJBQTRCO0lBQzNELFlBQVksS0FBdUI7UUFDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUI7UUFDbkMsTUFBTSxFQUFFLEdBQUcsSUFBQSxtQkFBVSxHQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixFQUFFO1lBQ0YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE9BQU87U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBdUI7UUFDcEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQWpDRCxrQ0FpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcclxuaW1wb3J0IHsgQmFzZURvbWFpbiB9IGZyb20gJy4vQmFzZURvbWFpbic7XHJcbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwiY3J5cHRvXCJcclxuXHJcbmV4cG9ydCBlbnVtIFRyYW5zYWN0aW9uU3RhdHVzIHtcclxuICBDUkVBVEVEID0gJ2NyZWF0ZWQnLFxyXG4gIFBFTkRJTkcgPSAncGVuZGluZycsXHJcbiAgUFJPQ0VTU0lORyA9ICdwcm9jZXNzaW5nJyxcclxuICBDT01QTEVURUQgPSAnY29tcGxldGVkJyxcclxuICBGQUlMRUQgPSAnZmFpbGVkJyxcclxuICBDQU5DRUxMRUQgPSAnY2FuY2VsbGVkJyxcclxuICBSRUZVTkRFRCA9ICdyZWZ1bmRlZCcsXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB0cmFuc2FjdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcclxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxyXG4gIGFtb3VudDogei5udW1iZXIoKSxcclxuICBwcm92aWRlckNvZGU6IHouc3RyaW5nKCksXHJcbiAgZXh0ZXJuYWxJZDogei5zdHJpbmcoKSxcclxuICBzdGF0dXM6IHoubmF0aXZlRW51bShUcmFuc2FjdGlvblN0YXR1cyksXHJcbn0pO1xyXG5cclxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25Qcm9wcyA9IHouaW5mZXI8dHlwZW9mIHRyYW5zYWN0aW9uU2NoZW1hPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VEb21haW48VHJhbnNhY3Rpb25Qcm9wcz4ge1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUcmFuc2FjdGlvblByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHByb3BzOiBUcmFuc2FjdGlvblByb3BzKTogVHJhbnNhY3Rpb24ge1xyXG4gICAgY29uc3QgaWQgPSByYW5kb21VVUlEKCk7XHJcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKHtcclxuICAgICAgaWQsXHJcbiAgICAgIC4uLnByb3BzLFxyXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzLkNSRUFURUQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZXN0b3JlKHByb3BzOiBUcmFuc2FjdGlvblByb3BzKTogVHJhbnNhY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBmYWlsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldChcInN0YXR1c1wiLCBUcmFuc2FjdGlvblN0YXR1cy5GQUlMRUQpO1xyXG4gIH1cclxuXHJcbiAgY29tcGxldGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXQoXCJzdGF0dXNcIiwgVHJhbnNhY3Rpb25TdGF0dXMuQ09NUExFVEVEKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbGxlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0KFwic3RhdHVzXCIsIFRyYW5zYWN0aW9uU3RhdHVzLkNBTkNFTExFRCk7XHJcbiAgfVxyXG5cclxuICByZWZ1bmRlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0KFwic3RhdHVzXCIsIFRyYW5zYWN0aW9uU3RhdHVzLlJFRlVOREVEKTtcclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,6 @@
1
+ import { IQueueAdapter } from "../interfaces/IQueueAdapter";
2
+ import { QueueConfig } from "../interfaces/IQueueConfig";
3
+ export declare class QueueFactory {
4
+ static create(config: QueueConfig): IQueueAdapter;
5
+ static createFromEnv(): IQueueAdapter;
6
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueueFactory = void 0;
4
+ const RabbitMQAdapter_1 = require("../queue/adapters/RabbitMQAdapter");
5
+ const SQSAdapter_1 = require("../queue/adapters/SQSAdapter");
6
+ class QueueFactory {
7
+ static create(config) {
8
+ switch (config.type) {
9
+ case "rabbitmq":
10
+ return new RabbitMQAdapter_1.RabbitMQAdapter(config);
11
+ case "sqs":
12
+ return new SQSAdapter_1.SQSAdapter(config);
13
+ default:
14
+ throw new Error(`Unknown queue type: ${config.type}`);
15
+ }
16
+ }
17
+ static createFromEnv() {
18
+ const type = process.env.QUEUE_TYPE || "rabbitmq";
19
+ if (type === "sqs") {
20
+ return new SQSAdapter_1.SQSAdapter({
21
+ type: "sqs",
22
+ endpoint: process.env.SQS_ENDPOINT,
23
+ region: process.env.SQS_REGION || "us-east-1",
24
+ accessKeyId: process.env.SQS_ACCESS_KEY || process.env.AWS_ACCESS_KEY_ID || "",
25
+ secretAccessKey: process.env.SQS_SECRET_KEY || process.env.AWS_SECRET_ACCESS_KEY || "",
26
+ });
27
+ }
28
+ return new RabbitMQAdapter_1.RabbitMQAdapter({
29
+ type: "rabbitmq",
30
+ host: process.env.RABBITMQ_HOST || "localhost",
31
+ port: parseInt(process.env.RABBITMQ_PORT || "5672", 10),
32
+ username: process.env.RABBITMQ_USER || "guest",
33
+ password: process.env.RABBITMQ_PASSWORD || "guest",
34
+ vhost: process.env.RABBITMQ_VHOST || "/",
35
+ });
36
+ }
37
+ }
38
+ exports.QueueFactory = QueueFactory;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVldWVGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2hhcmVkL2ZhY3RvcnkvUXVldWVGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHVFQUFvRTtBQUNwRSw2REFBMEQ7QUFFMUQsTUFBYSxZQUFZO0lBRXZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBbUI7UUFDL0IsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxpQ0FBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksdUJBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQztnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF3QixNQUFzQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYTtRQUNsQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUM7UUFFbEQsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLHVCQUFVLENBQUM7Z0JBQ3BCLElBQUksRUFBRSxLQUFLO2dCQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7Z0JBQ2xDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxXQUFXO2dCQUM3QyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFO2dCQUM5RSxlQUFlLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFO2FBQ3ZGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksaUNBQWUsQ0FBQztZQUN6QixJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksV0FBVztZQUM5QyxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDdkQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLE9BQU87WUFDOUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksT0FBTztZQUNsRCxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksR0FBRztTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuQ0Qsb0NBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVF1ZXVlQWRhcHRlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL0lRdWV1ZUFkYXB0ZXJcIjtcclxuaW1wb3J0IHsgUXVldWVDb25maWcgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JUXVldWVDb25maWdcIjtcclxuaW1wb3J0IHsgUmFiYml0TVFBZGFwdGVyIH0gZnJvbSBcIi4uL3F1ZXVlL2FkYXB0ZXJzL1JhYmJpdE1RQWRhcHRlclwiO1xyXG5pbXBvcnQgeyBTUVNBZGFwdGVyIH0gZnJvbSBcIi4uL3F1ZXVlL2FkYXB0ZXJzL1NRU0FkYXB0ZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBRdWV1ZUZhY3Rvcnkge1xyXG5cclxuICBzdGF0aWMgY3JlYXRlKGNvbmZpZzogUXVldWVDb25maWcpOiBJUXVldWVBZGFwdGVyIHtcclxuICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcclxuICAgICAgY2FzZSBcInJhYmJpdG1xXCI6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSYWJiaXRNUUFkYXB0ZXIoY29uZmlnKTtcclxuICAgICAgY2FzZSBcInNxc1wiOlxyXG4gICAgICAgIHJldHVybiBuZXcgU1FTQWRhcHRlcihjb25maWcpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBxdWV1ZSB0eXBlOiAkeyhjb25maWcgYXMgUXVldWVDb25maWcpLnR5cGV9YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlRnJvbUVudigpOiBJUXVldWVBZGFwdGVyIHtcclxuICAgIGNvbnN0IHR5cGUgPSBwcm9jZXNzLmVudi5RVUVVRV9UWVBFIHx8IFwicmFiYml0bXFcIjtcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gXCJzcXNcIikge1xyXG4gICAgICByZXR1cm4gbmV3IFNRU0FkYXB0ZXIoe1xyXG4gICAgICAgIHR5cGU6IFwic3FzXCIsXHJcbiAgICAgICAgZW5kcG9pbnQ6IHByb2Nlc3MuZW52LlNRU19FTkRQT0lOVCxcclxuICAgICAgICByZWdpb246IHByb2Nlc3MuZW52LlNRU19SRUdJT04gfHwgXCJ1cy1lYXN0LTFcIixcclxuICAgICAgICBhY2Nlc3NLZXlJZDogcHJvY2Vzcy5lbnYuU1FTX0FDQ0VTU19LRVkgfHwgcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgfHwgXCJcIixcclxuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IHByb2Nlc3MuZW52LlNRU19TRUNSRVRfS0VZIHx8IHByb2Nlc3MuZW52LkFXU19TRUNSRVRfQUNDRVNTX0tFWSB8fCBcIlwiLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IFJhYmJpdE1RQWRhcHRlcih7XHJcbiAgICAgIHR5cGU6IFwicmFiYml0bXFcIixcclxuICAgICAgaG9zdDogcHJvY2Vzcy5lbnYuUkFCQklUTVFfSE9TVCB8fCBcImxvY2FsaG9zdFwiLFxyXG4gICAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5SQUJCSVRNUV9QT1JUIHx8IFwiNTY3MlwiLCAxMCksXHJcbiAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5SQUJCSVRNUV9VU0VSIHx8IFwiZ3Vlc3RcIixcclxuICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlJBQkJJVE1RX1BBU1NXT1JEIHx8IFwiZ3Vlc3RcIixcclxuICAgICAgdmhvc3Q6IHByb2Nlc3MuZW52LlJBQkJJVE1RX1ZIT1NUIHx8IFwiL1wiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
@@ -0,0 +1,14 @@
1
+ export * from "./interfaces/IQueueAdapter";
2
+ export * from "./interfaces/IQueueConfig";
3
+ export * from "./queue/adapters/RabbitMQAdapter";
4
+ export * from "./queue/adapters/SQSAdapter";
5
+ export * from "./factory/QueueFactory";
6
+ export * from "./domain/BaseDomain";
7
+ export * from "./domain/Transaction";
8
+ export * from "./domain/RoutingAttempts";
9
+ export * from "./utils/BaseError";
10
+ export * from "./utils/NotFound";
11
+ export * from "./utils/NotFoundKey";
12
+ export * from "./utils/NotSupport";
13
+ export * from "./utils/NotSupported";
14
+ export * from "./utils/UnauthorizedAccess";
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
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
+ // Interfaces
18
+ __exportStar(require("./interfaces/IQueueAdapter"), exports);
19
+ __exportStar(require("./interfaces/IQueueConfig"), exports);
20
+ // Adapters
21
+ __exportStar(require("./queue/adapters/RabbitMQAdapter"), exports);
22
+ __exportStar(require("./queue/adapters/SQSAdapter"), exports);
23
+ // Factory
24
+ __exportStar(require("./factory/QueueFactory"), exports);
25
+ // Domain
26
+ __exportStar(require("./domain/BaseDomain"), exports);
27
+ __exportStar(require("./domain/Transaction"), exports);
28
+ __exportStar(require("./domain/RoutingAttempts"), exports);
29
+ // Utils/Errors
30
+ __exportStar(require("./utils/BaseError"), exports);
31
+ __exportStar(require("./utils/NotFound"), exports);
32
+ __exportStar(require("./utils/NotFoundKey"), exports);
33
+ __exportStar(require("./utils/NotSupport"), exports);
34
+ __exportStar(require("./utils/NotSupported"), exports);
35
+ __exportStar(require("./utils/UnauthorizedAccess"), exports);
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWE7QUFDYiw2REFBMkM7QUFDM0MsNERBQTBDO0FBRTFDLFdBQVc7QUFDWCxtRUFBaUQ7QUFDakQsOERBQTRDO0FBRTVDLFVBQVU7QUFDVix5REFBdUM7QUFFdkMsU0FBUztBQUNULHNEQUFvQztBQUNwQyx1REFBcUM7QUFDckMsMkRBQXlDO0FBRXpDLGVBQWU7QUFDZixvREFBa0M7QUFDbEMsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxxREFBbUM7QUFDbkMsdURBQXFDO0FBQ3JDLDZEQUEyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEludGVyZmFjZXNcclxuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlcy9JUXVldWVBZGFwdGVyXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXMvSVF1ZXVlQ29uZmlnXCI7XHJcblxyXG4vLyBBZGFwdGVyc1xyXG5leHBvcnQgKiBmcm9tIFwiLi9xdWV1ZS9hZGFwdGVycy9SYWJiaXRNUUFkYXB0ZXJcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vcXVldWUvYWRhcHRlcnMvU1FTQWRhcHRlclwiO1xyXG5cclxuLy8gRmFjdG9yeVxyXG5leHBvcnQgKiBmcm9tIFwiLi9mYWN0b3J5L1F1ZXVlRmFjdG9yeVwiO1xyXG5cclxuLy8gRG9tYWluXHJcbmV4cG9ydCAqIGZyb20gXCIuL2RvbWFpbi9CYXNlRG9tYWluXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2RvbWFpbi9UcmFuc2FjdGlvblwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9kb21haW4vUm91dGluZ0F0dGVtcHRzXCI7XHJcblxyXG4vLyBVdGlscy9FcnJvcnNcclxuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvQmFzZUVycm9yXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL05vdEZvdW5kXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL05vdEZvdW5kS2V5XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL05vdFN1cHBvcnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvTm90U3VwcG9ydGVkXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL1VuYXV0aG9yaXplZEFjY2Vzc1wiO1xyXG5cclxuIl19
@@ -0,0 +1,29 @@
1
+ export interface QueueMessage<T = unknown> {
2
+ id: string;
3
+ body: T;
4
+ raw: unknown;
5
+ receivedAt: Date;
6
+ }
7
+ export interface PublishOptions {
8
+ delaySeconds?: number;
9
+ messageGroupId?: string;
10
+ deduplicationId?: string;
11
+ }
12
+ export interface ConsumeOptions {
13
+ prefetch?: number;
14
+ visibilityTimeout?: number;
15
+ waitTimeSeconds?: number;
16
+ }
17
+ export interface IQueueAdapter {
18
+ connect(): Promise<void>;
19
+ disconnect(): Promise<void>;
20
+ isConnected(): boolean;
21
+ createQueue(queue: string): Promise<void>;
22
+ deleteQueue(queue: string): Promise<void>;
23
+ publish<T = unknown>(queue: string, message: T, options?: PublishOptions): Promise<string>;
24
+ publishBatch<T = unknown>(queue: string, messages: T[], options?: PublishOptions): Promise<string[]>;
25
+ consume<T = unknown>(queue: string, handler: (message: QueueMessage<T>) => Promise<void>, options?: ConsumeOptions): Promise<void>;
26
+ ack(message: QueueMessage): Promise<void>;
27
+ nack(message: QueueMessage, requeue?: boolean): Promise<void>;
28
+ getQueueLength(queue: string): Promise<number>;
29
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVF1ZXVlQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL0lRdWV1ZUFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUXVldWVNZXNzYWdlPFQgPSB1bmtub3duPiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBib2R5OiBUO1xyXG4gIHJhdzogdW5rbm93bjtcclxuICByZWNlaXZlZEF0OiBEYXRlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hPcHRpb25zIHtcclxuICBkZWxheVNlY29uZHM/OiBudW1iZXI7XHJcbiAgbWVzc2FnZUdyb3VwSWQ/OiBzdHJpbmc7XHJcbiAgZGVkdXBsaWNhdGlvbklkPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnN1bWVPcHRpb25zIHtcclxuICBwcmVmZXRjaD86IG51bWJlcjtcclxuICB2aXNpYmlsaXR5VGltZW91dD86IG51bWJlcjtcclxuICB3YWl0VGltZVNlY29uZHM/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVF1ZXVlQWRhcHRlciB7XHJcbiAgY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+O1xyXG4gIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTx2b2lkPjtcclxuICBpc0Nvbm5lY3RlZCgpOiBib29sZWFuO1xyXG5cclxuICBjcmVhdGVRdWV1ZShxdWV1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcclxuICBkZWxldGVRdWV1ZShxdWV1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgcHVibGlzaDxUID0gdW5rbm93bj4ocXVldWU6IHN0cmluZywgbWVzc2FnZTogVCwgb3B0aW9ucz86IFB1Ymxpc2hPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xyXG4gIHB1Ymxpc2hCYXRjaDxUID0gdW5rbm93bj4ocXVldWU6IHN0cmluZywgbWVzc2FnZXM6IFRbXSwgb3B0aW9ucz86IFB1Ymxpc2hPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT47XHJcblxyXG4gIGNvbnN1bWU8VCA9IHVua25vd24+KFxyXG4gICAgcXVldWU6IHN0cmluZyxcclxuICAgIGhhbmRsZXI6IChtZXNzYWdlOiBRdWV1ZU1lc3NhZ2U8VD4pID0+IFByb21pc2U8dm9pZD4sXHJcbiAgICBvcHRpb25zPzogQ29uc3VtZU9wdGlvbnNcclxuICApOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICBhY2sobWVzc2FnZTogUXVldWVNZXNzYWdlKTogUHJvbWlzZTx2b2lkPjtcclxuICBuYWNrKG1lc3NhZ2U6IFF1ZXVlTWVzc2FnZSwgcmVxdWV1ZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICBnZXRRdWV1ZUxlbmd0aChxdWV1ZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xyXG59XHJcblxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ export interface RabbitMQConfig {
2
+ type: "rabbitmq";
3
+ host: string;
4
+ port: number;
5
+ username: string;
6
+ password: string;
7
+ vhost?: string;
8
+ heartbeat?: number;
9
+ }
10
+ export interface SQSConfig {
11
+ type: "sqs";
12
+ endpoint?: string;
13
+ region: string;
14
+ accessKeyId: string;
15
+ secretAccessKey: string;
16
+ }
17
+ export type QueueConfig = RabbitMQConfig | SQSConfig;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVF1ZXVlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvSVF1ZXVlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJhYmJpdE1RQ29uZmlnIHtcclxuICB0eXBlOiBcInJhYmJpdG1xXCI7XHJcbiAgaG9zdDogc3RyaW5nO1xyXG4gIHBvcnQ6IG51bWJlcjtcclxuICB1c2VybmFtZTogc3RyaW5nO1xyXG4gIHBhc3N3b3JkOiBzdHJpbmc7XHJcbiAgdmhvc3Q/OiBzdHJpbmc7XHJcbiAgaGVhcnRiZWF0PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNRU0NvbmZpZyB7XHJcbiAgdHlwZTogXCJzcXNcIjtcclxuICBlbmRwb2ludD86IHN0cmluZztcclxuICByZWdpb246IHN0cmluZztcclxuICBhY2Nlc3NLZXlJZDogc3RyaW5nO1xyXG4gIHNlY3JldEFjY2Vzc0tleTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBRdWV1ZUNvbmZpZyA9IFJhYmJpdE1RQ29uZmlnIHwgU1FTQ29uZmlnO1xyXG5cclxuIl19
@@ -0,0 +1,21 @@
1
+ import { IQueueAdapter, QueueMessage, PublishOptions, ConsumeOptions } from "../../interfaces/IQueueAdapter";
2
+ import { RabbitMQConfig } from "../../interfaces/IQueueConfig";
3
+ export declare class RabbitMQAdapter implements IQueueAdapter {
4
+ private connection;
5
+ private channel;
6
+ private config;
7
+ constructor(config: RabbitMQConfig);
8
+ connect(): Promise<void>;
9
+ disconnect(): Promise<void>;
10
+ isConnected(): boolean;
11
+ createQueue(queue: string): Promise<void>;
12
+ deleteQueue(queue: string): Promise<void>;
13
+ publish<T = unknown>(queue: string, message: T, options?: PublishOptions): Promise<string>;
14
+ publishBatch<T = unknown>(queue: string, messages: T[], options?: PublishOptions): Promise<string[]>;
15
+ consume<T = unknown>(queue: string, handler: (message: QueueMessage<T>) => Promise<void>, options?: ConsumeOptions): Promise<void>;
16
+ ack(message: QueueMessage): Promise<void>;
17
+ nack(message: QueueMessage, requeue?: boolean): Promise<void>;
18
+ getQueueLength(queue: string): Promise<number>;
19
+ private ensureChannel;
20
+ private generateMessageId;
21
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RabbitMQAdapter = void 0;
7
+ const amqplib_1 = __importDefault(require("amqplib"));
8
+ class RabbitMQAdapter {
9
+ constructor(config) {
10
+ this.connection = null;
11
+ this.channel = null;
12
+ this.config = config;
13
+ }
14
+ async connect() {
15
+ const { host, port, username, password, vhost = "/", heartbeat = 60 } = this.config;
16
+ const url = `amqp://${username}:${password}@${host}:${port}${vhost}?heartbeat=${heartbeat}`;
17
+ this.connection = await amqplib_1.default.connect(url);
18
+ this.channel = await this.connection.createChannel();
19
+ this.connection.on("error", (err) => {
20
+ console.error("[RabbitMQ] Connection error:", err.message);
21
+ });
22
+ this.connection.on("close", () => {
23
+ console.warn("[RabbitMQ] Connection closed");
24
+ this.connection = null;
25
+ this.channel = null;
26
+ });
27
+ }
28
+ async disconnect() {
29
+ if (this.channel) {
30
+ await this.channel.close();
31
+ this.channel = null;
32
+ }
33
+ if (this.connection) {
34
+ await this.connection.close();
35
+ this.connection = null;
36
+ }
37
+ }
38
+ isConnected() {
39
+ return this.connection !== null && this.channel !== null;
40
+ }
41
+ async createQueue(queue) {
42
+ this.ensureChannel();
43
+ await this.channel.assertQueue(queue, { durable: true });
44
+ }
45
+ async deleteQueue(queue) {
46
+ this.ensureChannel();
47
+ await this.channel.deleteQueue(queue);
48
+ }
49
+ async publish(queue, message, options) {
50
+ this.ensureChannel();
51
+ const messageId = this.generateMessageId();
52
+ const content = Buffer.from(JSON.stringify(message));
53
+ await this.channel.assertQueue(queue, { durable: true });
54
+ this.channel.sendToQueue(queue, content, {
55
+ persistent: true,
56
+ messageId,
57
+ timestamp: Date.now(),
58
+ });
59
+ return messageId;
60
+ }
61
+ async publishBatch(queue, messages, options) {
62
+ const ids = [];
63
+ for (const message of messages) {
64
+ const id = await this.publish(queue, message, options);
65
+ ids.push(id);
66
+ }
67
+ return ids;
68
+ }
69
+ async consume(queue, handler, options) {
70
+ this.ensureChannel();
71
+ if (options?.prefetch) {
72
+ await this.channel.prefetch(options.prefetch);
73
+ }
74
+ await this.channel.assertQueue(queue, { durable: true });
75
+ await this.channel.consume(queue, async (msg) => {
76
+ if (!msg)
77
+ return;
78
+ const queueMessage = {
79
+ id: msg.properties.messageId || this.generateMessageId(),
80
+ body: JSON.parse(msg.content.toString()),
81
+ raw: msg,
82
+ receivedAt: new Date(),
83
+ };
84
+ try {
85
+ await handler(queueMessage);
86
+ }
87
+ catch (error) {
88
+ console.error("[RabbitMQ] Error processing message:", error);
89
+ }
90
+ });
91
+ }
92
+ async ack(message) {
93
+ this.ensureChannel();
94
+ this.channel.ack(message.raw);
95
+ }
96
+ async nack(message, requeue = true) {
97
+ this.ensureChannel();
98
+ this.channel.nack(message.raw, false, requeue);
99
+ }
100
+ async getQueueLength(queue) {
101
+ this.ensureChannel();
102
+ const { messageCount } = await this.channel.assertQueue(queue, { durable: true });
103
+ return messageCount;
104
+ }
105
+ ensureChannel() {
106
+ if (!this.channel) {
107
+ throw new Error("[RabbitMQ] Not connected. Call connect() first.");
108
+ }
109
+ }
110
+ generateMessageId() {
111
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
112
+ }
113
+ }
114
+ exports.RabbitMQAdapter = RabbitMQAdapter;
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFiYml0TVFBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc2hhcmVkL3F1ZXVlL2FkYXB0ZXJzL1JhYmJpdE1RQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzREFBMkI7QUFPM0IsTUFBYSxlQUFlO0lBSzFCLFlBQVksTUFBc0I7UUFKMUIsZUFBVSxHQUEwQixJQUFJLENBQUM7UUFDekMsWUFBTyxHQUF1QixJQUFJLENBQUM7UUFJekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BGLE1BQU0sR0FBRyxHQUFHLFVBQVUsUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssY0FBYyxTQUFTLEVBQUUsQ0FBQztRQUU1RixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0saUJBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEJBQThCLENB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LE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBdElELDBDQXNJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbXFwIGZyb20gXCJhbXFwbGliXCI7XHJcbmltcG9ydCB7IElRdWV1ZUFkYXB0ZXIsIFF1ZXVlTWVzc2FnZSwgUHVibGlzaE9wdGlvbnMsIENvbnN1bWVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvSVF1ZXVlQWRhcHRlclwiO1xyXG5pbXBvcnQgeyBSYWJiaXRNUUNvbmZpZyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL0lRdWV1ZUNvbmZpZ1wiO1xyXG5cclxudHlwZSBBbXFwQ29ubmVjdGlvbiA9IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgYW1xcC5jb25uZWN0Pj47XHJcbnR5cGUgQW1xcENoYW5uZWwgPSBBd2FpdGVkPFJldHVyblR5cGU8QW1xcENvbm5lY3Rpb25bXCJjcmVhdGVDaGFubmVsXCJdPj47XHJcblxyXG5leHBvcnQgY2xhc3MgUmFiYml0TVFBZGFwdGVyIGltcGxlbWVudHMgSVF1ZXVlQWRhcHRlciB7XHJcbiAgcHJpdmF0ZSBjb25uZWN0aW9uOiBBbXFwQ29ubmVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgY2hhbm5lbDogQW1xcENoYW5uZWwgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGNvbmZpZzogUmFiYml0TVFDb25maWc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmFiYml0TVFDb25maWcpIHtcclxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHsgaG9zdCwgcG9ydCwgdXNlcm5hbWUsIHBhc3N3b3JkLCB2aG9zdCA9IFwiL1wiLCBoZWFydGJlYXQgPSA2MCB9ID0gdGhpcy5jb25maWc7XHJcbiAgICBjb25zdCB1cmwgPSBgYW1xcDovLyR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9QCR7aG9zdH06JHtwb3J0fSR7dmhvc3R9P2hlYXJ0YmVhdD0ke2hlYXJ0YmVhdH1gO1xyXG5cclxuICAgIHRoaXMuY29ubmVjdGlvbiA9IGF3YWl0IGFtcXAuY29ubmVjdCh1cmwpO1xyXG4gICAgdGhpcy5jaGFubmVsID0gYXdhaXQgdGhpcy5jb25uZWN0aW9uLmNyZWF0ZUNoYW5uZWwoKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbUmFiYml0TVFdIENvbm5lY3Rpb24gZXJyb3I6XCIsIGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbihcImNsb3NlXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKFwiW1JhYmJpdE1RXSBDb25uZWN0aW9uIGNsb3NlZFwiKTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFubmVsID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGlzY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmNoYW5uZWwpIHtcclxuICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMuY2hhbm5lbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5jbG9zZSgpO1xyXG4gICAgICB0aGlzLmNvbm5lY3Rpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uICE9PSBudWxsICYmIHRoaXMuY2hhbm5lbCAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZVF1ZXVlKHF1ZXVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZW5zdXJlQ2hhbm5lbCgpO1xyXG4gICAgYXdhaXQgdGhpcy5jaGFubmVsIS5hc3NlcnRRdWV1ZShxdWV1ZSwgeyBkdXJhYmxlOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlUXVldWUocXVldWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5lbnN1cmVDaGFubmVsKCk7XHJcbiAgICBhd2FpdCB0aGlzLmNoYW5uZWwhLmRlbGV0ZVF1ZXVlKHF1ZXVlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHB1Ymxpc2g8VCA9IHVua25vd24+KHF1ZXVlOiBzdHJpbmcsIG1lc3NhZ2U6IFQsIG9wdGlvbnM/OiBQdWJsaXNoT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNoYW5uZWwoKTtcclxuXHJcbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCk7XHJcbiAgICBjb25zdCBjb250ZW50ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuY2hhbm5lbCEuYXNzZXJ0UXVldWUocXVldWUsIHsgZHVyYWJsZTogdHJ1ZSB9KTtcclxuXHJcbiAgICB0aGlzLmNoYW5uZWwhLnNlbmRUb1F1ZXVlKHF1ZXVlLCBjb250ZW50LCB7XHJcbiAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXHJcbiAgICAgIG1lc3NhZ2VJZCxcclxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG1lc3NhZ2VJZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHB1Ymxpc2hCYXRjaDxUID0gdW5rbm93bj4ocXVldWU6IHN0cmluZywgbWVzc2FnZXM6IFRbXSwgb3B0aW9ucz86IFB1Ymxpc2hPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzKSB7XHJcbiAgICAgIGNvbnN0IGlkID0gYXdhaXQgdGhpcy5wdWJsaXNoKHF1ZXVlLCBtZXNzYWdlLCBvcHRpb25zKTtcclxuICAgICAgaWRzLnB1c2goaWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkcztcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbnN1bWU8VCA9IHVua25vd24+KFxyXG4gICAgcXVldWU6IHN0cmluZyxcclxuICAgIGhhbmRsZXI6IChtZXNzYWdlOiBRdWV1ZU1lc3NhZ2U8VD4pID0+IFByb21pc2U8dm9pZD4sXHJcbiAgICBvcHRpb25zPzogQ29uc3VtZU9wdGlvbnNcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZW5zdXJlQ2hhbm5lbCgpO1xyXG5cclxuICAgIGlmIChvcHRpb25zPy5wcmVmZXRjaCkge1xyXG4gICAgICBhd2FpdCB0aGlzLmNoYW5uZWwhLnByZWZldGNoKG9wdGlvbnMucHJlZmV0Y2gpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY2hhbm5lbCEuYXNzZXJ0UXVldWUocXVldWUsIHsgZHVyYWJsZTogdHJ1ZSB9KTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNoYW5uZWwhLmNvbnN1bWUocXVldWUsIGFzeW5jIChtc2cpID0+IHtcclxuICAgICAgaWYgKCFtc2cpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IHF1ZXVlTWVzc2FnZTogUXVldWVNZXNzYWdlPFQ+ID0ge1xyXG4gICAgICAgIGlkOiBtc2cucHJvcGVydGllcy5tZXNzYWdlSWQgfHwgdGhpcy5nZW5lcmF0ZU1lc3NhZ2VJZCgpLFxyXG4gICAgICAgIGJvZHk6IEpTT04ucGFyc2UobXNnLmNvbnRlbnQudG9TdHJpbmcoKSkgYXMgVCxcclxuICAgICAgICByYXc6IG1zZyxcclxuICAgICAgICByZWNlaXZlZEF0OiBuZXcgRGF0ZSgpLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBhd2FpdCBoYW5kbGVyKHF1ZXVlTWVzc2FnZSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIltSYWJiaXRNUV0gRXJyb3IgcHJvY2Vzc2luZyBtZXNzYWdlOlwiLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWNrKG1lc3NhZ2U6IFF1ZXVlTWVzc2FnZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5lbnN1cmVDaGFubmVsKCk7XHJcbiAgICB0aGlzLmNoYW5uZWwhLmFjayhtZXNzYWdlLnJhdyBhcyBhbXFwLk1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmFjayhtZXNzYWdlOiBRdWV1ZU1lc3NhZ2UsIHJlcXVldWUgPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNoYW5uZWwoKTtcclxuICAgIHRoaXMuY2hhbm5lbCEubmFjayhtZXNzYWdlLnJhdyBhcyBhbXFwLk1lc3NhZ2UsIGZhbHNlLCByZXF1ZXVlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFF1ZXVlTGVuZ3RoKHF1ZXVlOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgdGhpcy5lbnN1cmVDaGFubmVsKCk7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2VDb3VudCB9ID0gYXdhaXQgdGhpcy5jaGFubmVsIS5hc3NlcnRRdWV1ZShxdWV1ZSwgeyBkdXJhYmxlOiB0cnVlIH0pO1xyXG4gICAgcmV0dXJuIG1lc3NhZ2VDb3VudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5zdXJlQ2hhbm5lbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGFubmVsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIltSYWJiaXRNUV0gTm90IGNvbm5lY3RlZC4gQ2FsbCBjb25uZWN0KCkgZmlyc3QuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZU1lc3NhZ2VJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDE1KX1gO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -0,0 +1,25 @@
1
+ import { IQueueAdapter, QueueMessage, PublishOptions, ConsumeOptions } from "../../interfaces/IQueueAdapter";
2
+ import { SQSConfig } from "../../interfaces/IQueueConfig";
3
+ export declare class SQSAdapter implements IQueueAdapter {
4
+ private client;
5
+ private config;
6
+ private queueUrls;
7
+ private consuming;
8
+ constructor(config: SQSConfig);
9
+ connect(): Promise<void>;
10
+ disconnect(): Promise<void>;
11
+ isConnected(): boolean;
12
+ createQueue(queue: string): Promise<void>;
13
+ deleteQueue(queue: string): Promise<void>;
14
+ publish<T = unknown>(queue: string, message: T, options?: PublishOptions): Promise<string>;
15
+ publishBatch<T = unknown>(queue: string, messages: T[], options?: PublishOptions): Promise<string[]>;
16
+ consume<T = unknown>(queue: string, handler: (message: QueueMessage<T>) => Promise<void>, options?: ConsumeOptions): Promise<void>;
17
+ ack(message: QueueMessage): Promise<void>;
18
+ nack(message: QueueMessage, _requeue?: boolean): Promise<void>;
19
+ getQueueLength(queue: string): Promise<number>;
20
+ stopConsuming(queue: string): void;
21
+ private getQueueUrl;
22
+ private ensureClient;
23
+ private generateMessageId;
24
+ private sleep;
25
+ }
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQSAdapter = void 0;
4
+ const client_sqs_1 = require("@aws-sdk/client-sqs");
5
+ class SQSAdapter {
6
+ constructor(config) {
7
+ this.client = null;
8
+ this.queueUrls = new Map();
9
+ this.consuming = new Map();
10
+ this.config = config;
11
+ }
12
+ async connect() {
13
+ this.client = new client_sqs_1.SQSClient({
14
+ region: this.config.region,
15
+ endpoint: this.config.endpoint,
16
+ credentials: {
17
+ accessKeyId: this.config.accessKeyId,
18
+ secretAccessKey: this.config.secretAccessKey,
19
+ },
20
+ });
21
+ }
22
+ async disconnect() {
23
+ this.consuming.clear();
24
+ this.queueUrls.clear();
25
+ if (this.client) {
26
+ this.client.destroy();
27
+ this.client = null;
28
+ }
29
+ }
30
+ isConnected() {
31
+ return this.client !== null;
32
+ }
33
+ async createQueue(queue) {
34
+ this.ensureClient();
35
+ const command = new client_sqs_1.CreateQueueCommand({
36
+ QueueName: queue,
37
+ Attributes: {
38
+ VisibilityTimeout: "30",
39
+ MessageRetentionPeriod: "345600",
40
+ },
41
+ });
42
+ const response = await this.client.send(command);
43
+ if (response.QueueUrl) {
44
+ this.queueUrls.set(queue, response.QueueUrl);
45
+ }
46
+ }
47
+ async deleteQueue(queue) {
48
+ this.ensureClient();
49
+ const queueUrl = await this.getQueueUrl(queue);
50
+ const command = new client_sqs_1.DeleteQueueCommand({ QueueUrl: queueUrl });
51
+ await this.client.send(command);
52
+ this.queueUrls.delete(queue);
53
+ }
54
+ async publish(queue, message, options) {
55
+ this.ensureClient();
56
+ const queueUrl = await this.getQueueUrl(queue);
57
+ const messageId = this.generateMessageId();
58
+ const command = new client_sqs_1.SendMessageCommand({
59
+ QueueUrl: queueUrl,
60
+ MessageBody: JSON.stringify(message),
61
+ DelaySeconds: options?.delaySeconds,
62
+ MessageGroupId: options?.messageGroupId,
63
+ MessageDeduplicationId: options?.deduplicationId || messageId,
64
+ });
65
+ const response = await this.client.send(command);
66
+ return response.MessageId || messageId;
67
+ }
68
+ async publishBatch(queue, messages, options) {
69
+ this.ensureClient();
70
+ const queueUrl = await this.getQueueUrl(queue);
71
+ const entries = messages.map((message, index) => ({
72
+ Id: `${index}`,
73
+ MessageBody: JSON.stringify(message),
74
+ DelaySeconds: options?.delaySeconds,
75
+ MessageGroupId: options?.messageGroupId,
76
+ MessageDeduplicationId: options?.deduplicationId || this.generateMessageId(),
77
+ }));
78
+ const command = new client_sqs_1.SendMessageBatchCommand({
79
+ QueueUrl: queueUrl,
80
+ Entries: entries,
81
+ });
82
+ const response = await this.client.send(command);
83
+ return response.Successful?.map((s) => s.MessageId || s.Id || "") || [];
84
+ }
85
+ async consume(queue, handler, options) {
86
+ this.ensureClient();
87
+ const queueUrl = await this.getQueueUrl(queue);
88
+ this.consuming.set(queue, true);
89
+ const poll = async () => {
90
+ while (this.consuming.get(queue)) {
91
+ try {
92
+ const command = new client_sqs_1.ReceiveMessageCommand({
93
+ QueueUrl: queueUrl,
94
+ MaxNumberOfMessages: options?.prefetch || 10,
95
+ WaitTimeSeconds: options?.waitTimeSeconds || 20,
96
+ VisibilityTimeout: options?.visibilityTimeout || 30,
97
+ AttributeNames: ["All"],
98
+ MessageAttributeNames: ["All"],
99
+ });
100
+ const response = await this.client.send(command);
101
+ if (response.Messages && response.Messages.length > 0) {
102
+ for (const msg of response.Messages) {
103
+ const queueMessage = {
104
+ id: msg.MessageId || this.generateMessageId(),
105
+ body: JSON.parse(msg.Body || "{}"),
106
+ raw: { message: msg, queueUrl },
107
+ receivedAt: new Date(),
108
+ };
109
+ try {
110
+ await handler(queueMessage);
111
+ }
112
+ catch (error) {
113
+ console.error("[SQS] Error processing message:", error);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ catch (error) {
119
+ console.error("[SQS] Polling error:", error);
120
+ await this.sleep(5000);
121
+ }
122
+ }
123
+ };
124
+ poll();
125
+ }
126
+ async ack(message) {
127
+ this.ensureClient();
128
+ const { message: msg, queueUrl } = message.raw;
129
+ if (!msg.ReceiptHandle) {
130
+ throw new Error("[SQS] Message has no ReceiptHandle");
131
+ }
132
+ const command = new client_sqs_1.DeleteMessageCommand({
133
+ QueueUrl: queueUrl,
134
+ ReceiptHandle: msg.ReceiptHandle,
135
+ });
136
+ await this.client.send(command);
137
+ }
138
+ async nack(message, _requeue = true) {
139
+ // SQS automaticamente retorna a mensagem para a fila após o visibility timeout
140
+ // Não é necessário fazer nada aqui
141
+ console.warn("[SQS] nack called - message will be redelivered after visibility timeout");
142
+ }
143
+ async getQueueLength(queue) {
144
+ this.ensureClient();
145
+ const queueUrl = await this.getQueueUrl(queue);
146
+ const command = new client_sqs_1.GetQueueAttributesCommand({
147
+ QueueUrl: queueUrl,
148
+ AttributeNames: ["ApproximateNumberOfMessages"],
149
+ });
150
+ const response = await this.client.send(command);
151
+ return parseInt(response.Attributes?.ApproximateNumberOfMessages || "0", 10);
152
+ }
153
+ stopConsuming(queue) {
154
+ this.consuming.set(queue, false);
155
+ }
156
+ async getQueueUrl(queue) {
157
+ if (this.queueUrls.has(queue)) {
158
+ return this.queueUrls.get(queue);
159
+ }
160
+ try {
161
+ const command = new client_sqs_1.GetQueueUrlCommand({ QueueName: queue });
162
+ const response = await this.client.send(command);
163
+ if (response.QueueUrl) {
164
+ this.queueUrls.set(queue, response.QueueUrl);
165
+ return response.QueueUrl;
166
+ }
167
+ }
168
+ catch {
169
+ await this.createQueue(queue);
170
+ return this.queueUrls.get(queue);
171
+ }
172
+ throw new Error(`[SQS] Could not get URL for queue: ${queue}`);
173
+ }
174
+ ensureClient() {
175
+ if (!this.client) {
176
+ throw new Error("[SQS] Not connected. Call connect() first.");
177
+ }
178
+ }
179
+ generateMessageId() {
180
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
181
+ }
182
+ sleep(ms) {
183
+ return new Promise((resolve) => setTimeout(resolve, ms));
184
+ }
185
+ }
186
+ exports.SQSAdapter = SQSAdapter;
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FTQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NoYXJlZC9xdWV1ZS9hZGFwdGVycy9TUVNBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9EQVc2QjtBQUk3QixNQUFhLFVBQVU7SUFNckIsWUFBWSxNQUFpQjtRQUxyQixXQUFNLEdBQXFCLElBQUksQ0FBQztRQUVoQyxjQUFTLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDM0MsY0FBUyxHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBR2xELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxzQkFBUyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM5QixXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztnQkFDcEMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTthQUM3QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBa0IsQ0FBQztZQUNyQyxTQUFTLEVBQUUsS0FBSztZQUNoQixVQUFVLEVBQUU7Z0JBQ1YsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsc0JBQXNCLEVBQUUsUUFBUTthQUNqQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFjLEtBQWEsRUFBRSxPQUFVLEVBQUUsT0FBd0I7UUFDNUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUUzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUFrQixDQUFDO1lBQ3JDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNwQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVk7WUFDbkMsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjO1lBQ3ZDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxlQUFlLElBQUksU0FBUztTQUM5RCxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sUUFBUSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQWMsS0FBYSxFQUFFLFFBQWEsRUFBRSxPQUF3QjtRQUNwRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRTtZQUNkLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNwQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVk7WUFDbkMsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjO1lBQ3ZDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxlQUFlLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1NBQzdFLENBQUMsQ0FBQyxDQUFDO1FBRUosTUFBTSxPQUFPLEdBQUcsSUFBSSxvQ0FBdUIsQ0FBQztZQUMxQyxRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQ1gsS0FBYSxFQUNiLE9BQW9ELEVBQ3BELE9BQXdCO1FBRXhCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhDLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDO29CQUNILE1BQU0sT0FBTyxHQUFHLElBQUksa0NBQXFCLENBQUM7d0JBQ3hDLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixtQkFBbUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUU7d0JBQzVDLGVBQWUsRUFBRSxPQUFPLEVBQUUsZUFBZSxJQUFJLEVBQUU7d0JBQy9DLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxFQUFFO3dCQUNuRCxjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUM7d0JBQ3ZCLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO3FCQUMvQixDQUFDLENBQUM7b0JBRUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFbEQsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs0QkFDcEMsTUFBTSxZQUFZLEdBQW9CO2dDQUNwQyxFQUFFLEVBQUUsR0FBRyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0NBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFNO2dDQUN2QyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTtnQ0FDL0IsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFOzZCQUN2QixDQUFDOzRCQUVGLElBQUksQ0FBQztnQ0FDSCxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzs0QkFDOUIsQ0FBQzs0QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dDQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUM7NEJBQzFELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUM3QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFxQjtRQUM3QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQTZDLENBQUM7UUFFekYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksaUNBQW9CLENBQUM7WUFDdkMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1NBQ2pDLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBcUIsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUMvQywrRUFBK0U7UUFDL0UsbUNBQW1DO1FBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEVBQTBFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQ0FBeUIsQ0FBQztZQUM1QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixjQUFjLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztTQUNoRCxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsMkJBQTJCLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBa0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbEQsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxFQUFVO1FBQ3RCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUE5TkQsZ0NBOE5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBTUVNDbGllbnQsXHJcbiAgU2VuZE1lc3NhZ2VDb21tYW5kLFxyXG4gIFNlbmRNZXNzYWdlQmF0Y2hDb21tYW5kLFxyXG4gIFJlY2VpdmVNZXNzYWdlQ29tbWFuZCxcclxuICBEZWxldGVNZXNzYWdlQ29tbWFuZCxcclxuICBDcmVhdGVRdWV1ZUNvbW1hbmQsXHJcbiAgRGVsZXRlUXVldWVDb21tYW5kLFxyXG4gIEdldFF1ZXVlQXR0cmlidXRlc0NvbW1hbmQsXHJcbiAgR2V0UXVldWVVcmxDb21tYW5kLFxyXG4gIE1lc3NhZ2UsXHJcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zcXNcIjtcclxuaW1wb3J0IHsgSVF1ZXVlQWRhcHRlciwgUXVldWVNZXNzYWdlLCBQdWJsaXNoT3B0aW9ucywgQ29uc3VtZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9JUXVldWVBZGFwdGVyXCI7XHJcbmltcG9ydCB7IFNRU0NvbmZpZyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL0lRdWV1ZUNvbmZpZ1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNRU0FkYXB0ZXIgaW1wbGVtZW50cyBJUXVldWVBZGFwdGVyIHtcclxuICBwcml2YXRlIGNsaWVudDogU1FTQ2xpZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjb25maWc6IFNRU0NvbmZpZztcclxuICBwcml2YXRlIHF1ZXVlVXJsczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGNvbnN1bWluZzogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogU1FTQ29uZmlnKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNsaWVudCA9IG5ldyBTUVNDbGllbnQoe1xyXG4gICAgICByZWdpb246IHRoaXMuY29uZmlnLnJlZ2lvbixcclxuICAgICAgZW5kcG9pbnQ6IHRoaXMuY29uZmlnLmVuZHBvaW50LFxyXG4gICAgICBjcmVkZW50aWFsczoge1xyXG4gICAgICAgIGFjY2Vzc0tleUlkOiB0aGlzLmNvbmZpZy5hY2Nlc3NLZXlJZCxcclxuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IHRoaXMuY29uZmlnLnNlY3JldEFjY2Vzc0tleSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGlzY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY29uc3VtaW5nLmNsZWFyKCk7XHJcbiAgICB0aGlzLnF1ZXVlVXJscy5jbGVhcigpO1xyXG4gICAgaWYgKHRoaXMuY2xpZW50KSB7XHJcbiAgICAgIHRoaXMuY2xpZW50LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5jbGllbnQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQgIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVRdWV1ZShxdWV1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNsaWVudCgpO1xyXG5cclxuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgQ3JlYXRlUXVldWVDb21tYW5kKHtcclxuICAgICAgUXVldWVOYW1lOiBxdWV1ZSxcclxuICAgICAgQXR0cmlidXRlczoge1xyXG4gICAgICAgIFZpc2liaWxpdHlUaW1lb3V0OiBcIjMwXCIsXHJcbiAgICAgICAgTWVzc2FnZVJldGVudGlvblBlcmlvZDogXCIzNDU2MDBcIixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQhLnNlbmQoY29tbWFuZCk7XHJcbiAgICBpZiAocmVzcG9uc2UuUXVldWVVcmwpIHtcclxuICAgICAgdGhpcy5xdWV1ZVVybHMuc2V0KHF1ZXVlLCByZXNwb25zZS5RdWV1ZVVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGVRdWV1ZShxdWV1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNsaWVudCgpO1xyXG4gICAgY29uc3QgcXVldWVVcmwgPSBhd2FpdCB0aGlzLmdldFF1ZXVlVXJsKHF1ZXVlKTtcclxuXHJcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IERlbGV0ZVF1ZXVlQ29tbWFuZCh7IFF1ZXVlVXJsOiBxdWV1ZVVybCB9KTtcclxuICAgIGF3YWl0IHRoaXMuY2xpZW50IS5zZW5kKGNvbW1hbmQpO1xyXG4gICAgdGhpcy5xdWV1ZVVybHMuZGVsZXRlKHF1ZXVlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHB1Ymxpc2g8VCA9IHVua25vd24+KHF1ZXVlOiBzdHJpbmcsIG1lc3NhZ2U6IFQsIG9wdGlvbnM/OiBQdWJsaXNoT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNsaWVudCgpO1xyXG4gICAgY29uc3QgcXVldWVVcmwgPSBhd2FpdCB0aGlzLmdldFF1ZXVlVXJsKHF1ZXVlKTtcclxuXHJcbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCk7XHJcblxyXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBTZW5kTWVzc2FnZUNvbW1hbmQoe1xyXG4gICAgICBRdWV1ZVVybDogcXVldWVVcmwsXHJcbiAgICAgIE1lc3NhZ2VCb2R5OiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSxcclxuICAgICAgRGVsYXlTZWNvbmRzOiBvcHRpb25zPy5kZWxheVNlY29uZHMsXHJcbiAgICAgIE1lc3NhZ2VHcm91cElkOiBvcHRpb25zPy5tZXNzYWdlR3JvdXBJZCxcclxuICAgICAgTWVzc2FnZURlZHVwbGljYXRpb25JZDogb3B0aW9ucz8uZGVkdXBsaWNhdGlvbklkIHx8IG1lc3NhZ2VJZCxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQhLnNlbmQoY29tbWFuZCk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuTWVzc2FnZUlkIHx8IG1lc3NhZ2VJZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHB1Ymxpc2hCYXRjaDxUID0gdW5rbm93bj4ocXVldWU6IHN0cmluZywgbWVzc2FnZXM6IFRbXSwgb3B0aW9ucz86IFB1Ymxpc2hPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgdGhpcy5lbnN1cmVDbGllbnQoKTtcclxuICAgIGNvbnN0IHF1ZXVlVXJsID0gYXdhaXQgdGhpcy5nZXRRdWV1ZVVybChxdWV1ZSk7XHJcblxyXG4gICAgY29uc3QgZW50cmllcyA9IG1lc3NhZ2VzLm1hcCgobWVzc2FnZSwgaW5kZXgpID0+ICh7XHJcbiAgICAgIElkOiBgJHtpbmRleH1gLFxyXG4gICAgICBNZXNzYWdlQm9keTogSlNPTi5zdHJpbmdpZnkobWVzc2FnZSksXHJcbiAgICAgIERlbGF5U2Vjb25kczogb3B0aW9ucz8uZGVsYXlTZWNvbmRzLFxyXG4gICAgICBNZXNzYWdlR3JvdXBJZDogb3B0aW9ucz8ubWVzc2FnZUdyb3VwSWQsXHJcbiAgICAgIE1lc3NhZ2VEZWR1cGxpY2F0aW9uSWQ6IG9wdGlvbnM/LmRlZHVwbGljYXRpb25JZCB8fCB0aGlzLmdlbmVyYXRlTWVzc2FnZUlkKCksXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBTZW5kTWVzc2FnZUJhdGNoQ29tbWFuZCh7XHJcbiAgICAgIFF1ZXVlVXJsOiBxdWV1ZVVybCxcclxuICAgICAgRW50cmllczogZW50cmllcyxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQhLnNlbmQoY29tbWFuZCk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuU3VjY2Vzc2Z1bD8ubWFwKChzKSA9PiBzLk1lc3NhZ2VJZCB8fCBzLklkIHx8IFwiXCIpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29uc3VtZTxUID0gdW5rbm93bj4oXHJcbiAgICBxdWV1ZTogc3RyaW5nLFxyXG4gICAgaGFuZGxlcjogKG1lc3NhZ2U6IFF1ZXVlTWVzc2FnZTxUPikgPT4gUHJvbWlzZTx2b2lkPixcclxuICAgIG9wdGlvbnM/OiBDb25zdW1lT3B0aW9uc1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5lbnN1cmVDbGllbnQoKTtcclxuICAgIGNvbnN0IHF1ZXVlVXJsID0gYXdhaXQgdGhpcy5nZXRRdWV1ZVVybChxdWV1ZSk7XHJcblxyXG4gICAgdGhpcy5jb25zdW1pbmcuc2V0KHF1ZXVlLCB0cnVlKTtcclxuXHJcbiAgICBjb25zdCBwb2xsID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICB3aGlsZSAodGhpcy5jb25zdW1pbmcuZ2V0KHF1ZXVlKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBjb21tYW5kID0gbmV3IFJlY2VpdmVNZXNzYWdlQ29tbWFuZCh7XHJcbiAgICAgICAgICAgIFF1ZXVlVXJsOiBxdWV1ZVVybCxcclxuICAgICAgICAgICAgTWF4TnVtYmVyT2ZNZXNzYWdlczogb3B0aW9ucz8ucHJlZmV0Y2ggfHwgMTAsXHJcbiAgICAgICAgICAgIFdhaXRUaW1lU2Vjb25kczogb3B0aW9ucz8ud2FpdFRpbWVTZWNvbmRzIHx8IDIwLFxyXG4gICAgICAgICAgICBWaXNpYmlsaXR5VGltZW91dDogb3B0aW9ucz8udmlzaWJpbGl0eVRpbWVvdXQgfHwgMzAsXHJcbiAgICAgICAgICAgIEF0dHJpYnV0ZU5hbWVzOiBbXCJBbGxcIl0sXHJcbiAgICAgICAgICAgIE1lc3NhZ2VBdHRyaWJ1dGVOYW1lczogW1wiQWxsXCJdLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudCEuc2VuZChjb21tYW5kKTtcclxuXHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuTWVzc2FnZXMgJiYgcmVzcG9uc2UuTWVzc2FnZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiByZXNwb25zZS5NZXNzYWdlcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXVlTWVzc2FnZTogUXVldWVNZXNzYWdlPFQ+ID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IG1zZy5NZXNzYWdlSWQgfHwgdGhpcy5nZW5lcmF0ZU1lc3NhZ2VJZCgpLFxyXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5wYXJzZShtc2cuQm9keSB8fCBcInt9XCIpIGFzIFQsXHJcbiAgICAgICAgICAgICAgICByYXc6IHsgbWVzc2FnZTogbXNnLCBxdWV1ZVVybCB9LFxyXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWRBdDogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlcihxdWV1ZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiW1NRU10gRXJyb3IgcHJvY2Vzc2luZyBtZXNzYWdlOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbU1FTXSBQb2xsaW5nIGVycm9yOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnNsZWVwKDUwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwb2xsKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY2sobWVzc2FnZTogUXVldWVNZXNzYWdlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNsaWVudCgpO1xyXG4gICAgY29uc3QgeyBtZXNzYWdlOiBtc2csIHF1ZXVlVXJsIH0gPSBtZXNzYWdlLnJhdyBhcyB7IG1lc3NhZ2U6IE1lc3NhZ2U7IHF1ZXVlVXJsOiBzdHJpbmcgfTtcclxuXHJcbiAgICBpZiAoIW1zZy5SZWNlaXB0SGFuZGxlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIltTUVNdIE1lc3NhZ2UgaGFzIG5vIFJlY2VpcHRIYW5kbGVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBEZWxldGVNZXNzYWdlQ29tbWFuZCh7XHJcbiAgICAgIFF1ZXVlVXJsOiBxdWV1ZVVybCxcclxuICAgICAgUmVjZWlwdEhhbmRsZTogbXNnLlJlY2VpcHRIYW5kbGUsXHJcbiAgICB9KTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNsaWVudCEuc2VuZChjb21tYW5kKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5hY2sobWVzc2FnZTogUXVldWVNZXNzYWdlLCBfcmVxdWV1ZSA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIFNRUyBhdXRvbWF0aWNhbWVudGUgcmV0b3JuYSBhIG1lbnNhZ2VtIHBhcmEgYSBmaWxhIGFww7NzIG8gdmlzaWJpbGl0eSB0aW1lb3V0XHJcbiAgICAvLyBOw6NvIMOpIG5lY2Vzc8OhcmlvIGZhemVyIG5hZGEgYXF1aVxyXG4gICAgY29uc29sZS53YXJuKFwiW1NRU10gbmFjayBjYWxsZWQgLSBtZXNzYWdlIHdpbGwgYmUgcmVkZWxpdmVyZWQgYWZ0ZXIgdmlzaWJpbGl0eSB0aW1lb3V0XCIpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UXVldWVMZW5ndGgocXVldWU6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICB0aGlzLmVuc3VyZUNsaWVudCgpO1xyXG4gICAgY29uc3QgcXVldWVVcmwgPSBhd2FpdCB0aGlzLmdldFF1ZXVlVXJsKHF1ZXVlKTtcclxuXHJcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldFF1ZXVlQXR0cmlidXRlc0NvbW1hbmQoe1xyXG4gICAgICBRdWV1ZVVybDogcXVldWVVcmwsXHJcbiAgICAgIEF0dHJpYnV0ZU5hbWVzOiBbXCJBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNcIl0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50IS5zZW5kKGNvbW1hbmQpO1xyXG4gICAgcmV0dXJuIHBhcnNlSW50KHJlc3BvbnNlLkF0dHJpYnV0ZXM/LkFwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlcyB8fCBcIjBcIiwgMTApO1xyXG4gIH1cclxuXHJcbiAgc3RvcENvbnN1bWluZyhxdWV1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN1bWluZy5zZXQocXVldWUsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0UXVldWVVcmwocXVldWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBpZiAodGhpcy5xdWV1ZVVybHMuaGFzKHF1ZXVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5xdWV1ZVVybHMuZ2V0KHF1ZXVlKSE7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRRdWV1ZVVybENvbW1hbmQoeyBRdWV1ZU5hbWU6IHF1ZXVlIH0pO1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50IS5zZW5kKGNvbW1hbmQpO1xyXG5cclxuICAgICAgaWYgKHJlc3BvbnNlLlF1ZXVlVXJsKSB7XHJcbiAgICAgICAgdGhpcy5xdWV1ZVVybHMuc2V0KHF1ZXVlLCByZXNwb25zZS5RdWV1ZVVybCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLlF1ZXVlVXJsO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVRdWV1ZShxdWV1ZSk7XHJcbiAgICAgIHJldHVybiB0aGlzLnF1ZXVlVXJscy5nZXQocXVldWUpITtcclxuICAgIH1cclxuXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtTUVNdIENvdWxkIG5vdCBnZXQgVVJMIGZvciBxdWV1ZTogJHtxdWV1ZX1gKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5zdXJlQ2xpZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNsaWVudCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbU1FTXSBOb3QgY29ubmVjdGVkLiBDYWxsIGNvbm5lY3QoKSBmaXJzdC5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlTWVzc2FnZUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTUpfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -0,0 +1,4 @@
1
+ export declare class BaseError extends Error {
2
+ statusCode: number;
3
+ constructor(message: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseError = void 0;
4
+ class BaseError extends Error {
5
+ constructor(message, statusCode = 500) {
6
+ super(message);
7
+ this.statusCode = statusCode;
8
+ this.name = this.constructor.name;
9
+ Error.captureStackTrace(this, this.constructor);
10
+ }
11
+ }
12
+ exports.BaseError = BaseError;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2hhcmVkL3V0aWxzL0Jhc2VFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLFNBQVUsU0FBUSxLQUFLO0lBR2xDLFlBQVksT0FBZSxFQUFFLGFBQXFCLEdBQUc7UUFDbkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFURCw4QkFTQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCYXNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1c0NvZGU6IG51bWJlciA9IDUwMCkge1xyXG4gICAgc3VwZXIobWVzc2FnZSk7XHJcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import { BaseError } from "./BaseError";
2
+ export declare class NotFound extends BaseError {
3
+ constructor(message: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotFound = void 0;
4
+ const BaseError_1 = require("./BaseError");
5
+ class NotFound extends BaseError_1.BaseError {
6
+ constructor(message, statusCode = 404) {
7
+ super(`Not found: ${message}`, statusCode);
8
+ this.name = this.constructor.name;
9
+ Error.captureStackTrace(this, this.constructor);
10
+ }
11
+ }
12
+ exports.NotFound = NotFound;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90Rm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zaGFyZWQvdXRpbHMvTm90Rm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXdDO0FBRXhDLE1BQWEsUUFBUyxTQUFRLHFCQUFTO0lBQ3JDLFlBQVksT0FBZSxFQUFFLGFBQXFCLEdBQUc7UUFDbkQsS0FBSyxDQUFDLGNBQWMsT0FBTyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFORCw0QkFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gXCIuL0Jhc2VFcnJvclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE5vdEZvdW5kIGV4dGVuZHMgQmFzZUVycm9yIHtcclxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1c0NvZGU6IG51bWJlciA9IDQwNCkge1xyXG4gICAgc3VwZXIoYE5vdCBmb3VuZDogJHttZXNzYWdlfWAsIHN0YXR1c0NvZGUpO1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XHJcbiAgfVxyXG59Il19
@@ -0,0 +1,4 @@
1
+ import { BaseError } from "./BaseError";
2
+ export declare class NotFoundKey extends BaseError {
3
+ constructor(provider: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotFoundKey = void 0;
4
+ const BaseError_1 = require("./BaseError");
5
+ class NotFoundKey extends BaseError_1.BaseError {
6
+ constructor(provider, statusCode = 400) {
7
+ super(`Key not found for provider: ${provider}`, statusCode);
8
+ this.name = this.constructor.name;
9
+ Error.captureStackTrace(this, this.constructor);
10
+ }
11
+ }
12
+ exports.NotFoundKey = NotFoundKey;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90Rm91bmRLZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zaGFyZWQvdXRpbHMvTm90Rm91bmRLZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXdDO0FBRXhDLE1BQWEsV0FBWSxTQUFRLHFCQUFTO0lBQ3hDLFlBQVksUUFBZ0IsRUFBRSxhQUFxQixHQUFHO1FBQ3BELEtBQUssQ0FBQywrQkFBK0IsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFORCxrQ0FNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gXCIuL0Jhc2VFcnJvclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE5vdEZvdW5kS2V5IGV4dGVuZHMgQmFzZUVycm9yIHtcclxuICBjb25zdHJ1Y3Rvcihwcm92aWRlcjogc3RyaW5nLCBzdGF0dXNDb2RlOiBudW1iZXIgPSA0MDApIHtcclxuICAgIHN1cGVyKGBLZXkgbm90IGZvdW5kIGZvciBwcm92aWRlcjogJHtwcm92aWRlcn1gLCBzdGF0dXNDb2RlKTtcclxuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcclxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xyXG4gIH1cclxufSJdfQ==
@@ -0,0 +1,4 @@
1
+ import { BaseError } from "./BaseError";
2
+ export declare class NotSupport extends BaseError {
3
+ constructor(message: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotSupport = void 0;
4
+ const BaseError_1 = require("./BaseError");
5
+ class NotSupport extends BaseError_1.BaseError {
6
+ constructor(message, statusCode = 400) {
7
+ super(message, statusCode);
8
+ this.name = this.constructor.name;
9
+ Error.captureStackTrace(this, this.constructor);
10
+ }
11
+ }
12
+ exports.NotSupport = NotSupport;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90U3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NoYXJlZC91dGlscy9Ob3RTdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF3QztBQUV4QyxNQUFhLFVBQVcsU0FBUSxxQkFBUztJQUN2QyxZQUFZLE9BQWUsRUFBRSxhQUFxQixHQUFHO1FBQ25ELEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFORCxnQ0FNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gXCIuL0Jhc2VFcnJvclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnQgZXh0ZW5kcyBCYXNlRXJyb3Ige1xyXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyID0gNDAwKSB7XHJcbiAgICBzdXBlcihtZXNzYWdlLCBzdGF0dXNDb2RlKTtcclxuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcclxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -0,0 +1,4 @@
1
+ import { BaseError } from "./BaseError";
2
+ export declare class NotSupported extends BaseError {
3
+ constructor(message: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotSupported = void 0;
4
+ const BaseError_1 = require("./BaseError");
5
+ class NotSupported extends BaseError_1.BaseError {
6
+ constructor(message, statusCode = 400) {
7
+ super(message, statusCode);
8
+ this.name = this.constructor.name;
9
+ Error.captureStackTrace(this, this.constructor);
10
+ }
11
+ }
12
+ exports.NotSupported = NotSupported;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90U3VwcG9ydGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2hhcmVkL3V0aWxzL05vdFN1cHBvcnRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBd0M7QUFFeEMsTUFBYSxZQUFhLFNBQVEscUJBQVM7SUFDekMsWUFBWSxPQUFlLEVBQUUsYUFBcUIsR0FBRztRQUNuRCxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBTkQsb0NBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRXJyb3IgfSBmcm9tIFwiLi9CYXNlRXJyb3JcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWQgZXh0ZW5kcyBCYXNlRXJyb3Ige1xyXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyID0gNDAwKSB7XHJcbiAgICBzdXBlcihtZXNzYWdlLCBzdGF0dXNDb2RlKTtcclxuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcclxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -0,0 +1,4 @@
1
+ import { BaseError } from "./BaseError";
2
+ export declare class UnauthorizedAccess extends BaseError {
3
+ constructor(provider: string, statusCode?: number);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnauthorizedAccess = void 0;
4
+ const BaseError_1 = require("./BaseError");
5
+ class UnauthorizedAccess extends BaseError_1.BaseError {
6
+ constructor(provider, statusCode = 401) {
7
+ super(`Unauthorized to access the provider: ${provider}`, statusCode);
8
+ this.name = this.constructor.name;
9
+ Error.captureStackTrace(this, this.constructor);
10
+ }
11
+ }
12
+ exports.UnauthorizedAccess = UnauthorizedAccess;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5hdXRob3JpemVkQWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2hhcmVkL3V0aWxzL1VuYXV0aG9yaXplZEFjY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBd0M7QUFFeEMsTUFBYSxrQkFBbUIsU0FBUSxxQkFBUztJQUMvQyxZQUFZLFFBQWdCLEVBQUUsYUFBcUIsR0FBRztRQUNwRCxLQUFLLENBQUMsd0NBQXdDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBTkQsZ0RBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRXJyb3IgfSBmcm9tIFwiLi9CYXNlRXJyb3JcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBVbmF1dGhvcml6ZWRBY2Nlc3MgZXh0ZW5kcyBCYXNlRXJyb3Ige1xyXG4gIGNvbnN0cnVjdG9yKHByb3ZpZGVyOiBzdHJpbmcsIHN0YXR1c0NvZGU6IG51bWJlciA9IDQwMSkge1xyXG4gICAgc3VwZXIoYFVuYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhlIHByb3ZpZGVyOiAke3Byb3ZpZGVyfWAsIHN0YXR1c0NvZGUpO1xyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XHJcbiAgfVxyXG59Il19
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "mutualbankutils",
3
+ "version": "1.0.0",
4
+ "description": "MutualbankUtils - Queue adapters and shared utilities",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "prepublishOnly": "npm run build"
13
+ },
14
+ "keywords": [
15
+ "queue",
16
+ "rabbitmq",
17
+ "sqs",
18
+ "adapter"
19
+ ],
20
+ "author": "",
21
+ "license": "MIT",
22
+ "dependencies": {
23
+ "@aws-sdk/client-sqs": "^3.956.0",
24
+ "amqplib": "^0.10.9"
25
+ },
26
+ "devDependencies": {
27
+ "@types/amqplib": "^0.10.8",
28
+ "typescript": "^5.0.0"
29
+ }
30
+ }
31
+