@nextage/era-lib 1.0.174 → 1.0.175
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/build/events/base-event.controller.d.ts +34 -1
- package/build/events/base-event.controller.d.ts.map +1 -1
- package/build/events/base-event.controller.js +76 -7
- package/build/events/base-event.controller.js.map +1 -1
- package/build/events/index.d.ts +1 -0
- package/build/events/index.d.ts.map +1 -1
- package/build/events/index.js +1 -0
- package/build/events/index.js.map +1 -1
- package/build/events/outbox.d.ts +12 -0
- package/build/events/outbox.d.ts.map +1 -0
- package/build/events/outbox.js +17 -0
- package/build/events/outbox.js.map +1 -0
- package/build/events/types/index.d.ts +1 -0
- package/build/events/types/index.d.ts.map +1 -1
- package/build/events/types/index.js +1 -0
- package/build/events/types/index.js.map +1 -1
- package/build/events/types/outbox.interfaces.d.ts +12 -0
- package/build/events/types/outbox.interfaces.d.ts.map +1 -0
- package/build/events/types/outbox.interfaces.js +3 -0
- package/build/events/types/outbox.interfaces.js.map +1 -0
- package/package.json +2 -2
|
@@ -35,9 +35,21 @@ export declare abstract class BaseEventCtrl<TCreate extends Event, TUpdate exten
|
|
|
35
35
|
* @param context
|
|
36
36
|
* @returns
|
|
37
37
|
*/
|
|
38
|
+
/**
|
|
39
|
+
* Create the entity and its outbox row ATOMICALLY (same transaction when the
|
|
40
|
+
* deployment supports it), then dispatch the event and mark the row sent after
|
|
41
|
+
* commit. A broker failure leaves the row at sent:false (recoverable), never a
|
|
42
|
+
* lost event (fixes the E2 non-atomic gap; the per-controller override that used
|
|
43
|
+
* to do this 3-op dance is removed — E3).
|
|
44
|
+
*
|
|
45
|
+
* @param item
|
|
46
|
+
* @param context
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
38
49
|
create(item: TAttrs, context: NxContext): Promise<TDoc>;
|
|
39
50
|
/**
|
|
40
51
|
*
|
|
52
|
+
* @param id
|
|
41
53
|
* @param item
|
|
42
54
|
* @param context
|
|
43
55
|
* @returns
|
|
@@ -45,10 +57,31 @@ export declare abstract class BaseEventCtrl<TCreate extends Event, TUpdate exten
|
|
|
45
57
|
update(id: string, item: TAttrs, context: NxContext): Promise<TDoc>;
|
|
46
58
|
/**
|
|
47
59
|
*
|
|
48
|
-
* @param
|
|
60
|
+
* @param id
|
|
49
61
|
* @param context
|
|
50
62
|
* @returns
|
|
51
63
|
*/
|
|
52
64
|
remove(id: string, context: NxContext): Promise<TDoc>;
|
|
65
|
+
/**
|
|
66
|
+
* Persist an outbox row (sent:false) for `item` inside the caller's transaction.
|
|
67
|
+
* Returns the row id, or undefined when no outbox is registered (the event is
|
|
68
|
+
* then still published, just not tracked).
|
|
69
|
+
*
|
|
70
|
+
* @param item
|
|
71
|
+
* @param type
|
|
72
|
+
* @param context
|
|
73
|
+
*/
|
|
74
|
+
private enqueueOutbox;
|
|
75
|
+
/**
|
|
76
|
+
* Dispatch the event to the broker, then mark the outbox row as sent. Runs AFTER
|
|
77
|
+
* the transaction commits, so `publish` (a non-DB side effect) is never retried
|
|
78
|
+
* by `withTransaction` and a broker failure leaves a recoverable sent:false row.
|
|
79
|
+
*
|
|
80
|
+
* @param item
|
|
81
|
+
* @param type
|
|
82
|
+
* @param outboxId
|
|
83
|
+
* @param context
|
|
84
|
+
*/
|
|
85
|
+
private dispatchOutbox;
|
|
53
86
|
}
|
|
54
87
|
//# sourceMappingURL=base-event.controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-event.controller.d.ts","sourceRoot":"","sources":["../../src/events/base-event.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAc,mDAAmD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAW,wDAAwD,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAS,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"base-event.controller.d.ts","sourceRoot":"","sources":["../../src/events/base-event.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAc,mDAAmD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAW,wDAAwD,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAS,wDAAwD,CAAC;AAE3F,OAAO,EAAE,SAAS,EAAE,MAAc,sBAAsB,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAS,eAAe,CAAC;AAOlD,8BAAsB,aAAa,CAAC,OAAO,SAAS,KAAK,EAAE,OAAO,SAAS,KAAK,EAAE,OAAO,SAAS,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,YAAY,EAAE,MAAM,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAE,SAAQ,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;IAMnO,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAI,OAAO,CAAC,MAAM,CAAC;IAC3F,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAI,OAAO,CAAC,MAAM,CAAC;IAC3F,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAI,OAAO,CAAC,MAAM,CAAC;IAE3F,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAK1D,OAAO,CAAC,aAAa,CAAC,CAAmD;IAEzE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;OAKG;IAoBH;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpF;;;;;OAKG;IACH;;;;;;;;;;OAUG;IACY,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtE;;;;;;OAMG;IACY,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlF;;;;;OAKG;IACY,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpE;;;;;;;;OAQG;YACW,aAAa;IAY3B;;;;;;;;;OASG;YACW,cAAc;CAQ7B"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseEventCtrl = void 0;
|
|
4
4
|
const base_controller_1 = require("@nextage/nx-frame-be/build/common/base/base.controller");
|
|
5
|
+
const mongo_utils_1 = require("@nextage/nx-frame-be/build/common/base/mongo-utils");
|
|
6
|
+
const outbox_1 = require("./outbox");
|
|
5
7
|
const enums_1 = require("./types/enums");
|
|
6
8
|
class BaseEventCtrl extends base_controller_1.BaseController {
|
|
7
9
|
/**
|
|
@@ -67,33 +69,100 @@ class BaseEventCtrl extends base_controller_1.BaseController {
|
|
|
67
69
|
* @param context
|
|
68
70
|
* @returns
|
|
69
71
|
*/
|
|
72
|
+
/**
|
|
73
|
+
* Create the entity and its outbox row ATOMICALLY (same transaction when the
|
|
74
|
+
* deployment supports it), then dispatch the event and mark the row sent after
|
|
75
|
+
* commit. A broker failure leaves the row at sent:false (recoverable), never a
|
|
76
|
+
* lost event (fixes the E2 non-atomic gap; the per-controller override that used
|
|
77
|
+
* to do this 3-op dance is removed — E3).
|
|
78
|
+
*
|
|
79
|
+
* @param item
|
|
80
|
+
* @param context
|
|
81
|
+
* @returns
|
|
82
|
+
*/
|
|
70
83
|
async create(item, context) {
|
|
71
|
-
|
|
72
|
-
|
|
84
|
+
let payload;
|
|
85
|
+
let outboxId;
|
|
86
|
+
const res = await this.withTransaction(context, async (ctx) => {
|
|
87
|
+
const created = await super.create(item, ctx);
|
|
88
|
+
payload = created.toJSON();
|
|
89
|
+
outboxId = await this.enqueueOutbox(payload, enums_1.QueueEventType.create, ctx);
|
|
90
|
+
return created;
|
|
91
|
+
});
|
|
92
|
+
await this.dispatchOutbox(payload, enums_1.QueueEventType.create, outboxId, context);
|
|
73
93
|
return res;
|
|
74
94
|
}
|
|
75
95
|
/**
|
|
76
96
|
*
|
|
97
|
+
* @param id
|
|
77
98
|
* @param item
|
|
78
99
|
* @param context
|
|
79
100
|
* @returns
|
|
80
101
|
*/
|
|
81
102
|
async update(id, item, context) {
|
|
82
|
-
|
|
83
|
-
|
|
103
|
+
let payload;
|
|
104
|
+
let outboxId;
|
|
105
|
+
const res = await this.withTransaction(context, async (ctx) => {
|
|
106
|
+
const updated = await super.update(id, item, ctx);
|
|
107
|
+
payload = { id, ...updated.toObject() };
|
|
108
|
+
outboxId = await this.enqueueOutbox(payload, enums_1.QueueEventType.update, ctx);
|
|
109
|
+
return updated;
|
|
110
|
+
});
|
|
111
|
+
await this.dispatchOutbox(payload, enums_1.QueueEventType.update, outboxId, context);
|
|
84
112
|
return res;
|
|
85
113
|
}
|
|
86
114
|
/**
|
|
87
115
|
*
|
|
88
|
-
* @param
|
|
116
|
+
* @param id
|
|
89
117
|
* @param context
|
|
90
118
|
* @returns
|
|
91
119
|
*/
|
|
92
120
|
async remove(id, context) {
|
|
93
|
-
|
|
94
|
-
|
|
121
|
+
let payload;
|
|
122
|
+
let outboxId;
|
|
123
|
+
const res = await this.withTransaction(context, async (ctx) => {
|
|
124
|
+
const removed = await this.model.remove(id, ctx);
|
|
125
|
+
payload = { id, ...removed.toObject() };
|
|
126
|
+
outboxId = await this.enqueueOutbox(payload, enums_1.QueueEventType.remove, ctx);
|
|
127
|
+
return removed;
|
|
128
|
+
});
|
|
129
|
+
await this.dispatchOutbox(payload, enums_1.QueueEventType.remove, outboxId, context);
|
|
95
130
|
return res;
|
|
96
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Persist an outbox row (sent:false) for `item` inside the caller's transaction.
|
|
134
|
+
* Returns the row id, or undefined when no outbox is registered (the event is
|
|
135
|
+
* then still published, just not tracked).
|
|
136
|
+
*
|
|
137
|
+
* @param item
|
|
138
|
+
* @param type
|
|
139
|
+
* @param context
|
|
140
|
+
*/
|
|
141
|
+
async enqueueOutbox(item, type, context) {
|
|
142
|
+
const outbox = (0, outbox_1.getOutbox)();
|
|
143
|
+
if (!outbox)
|
|
144
|
+
return undefined;
|
|
145
|
+
const id = (0, mongo_utils_1.genObjectId)().toString();
|
|
146
|
+
const evt = { id, type, data: item };
|
|
147
|
+
await outbox.create(evt, context);
|
|
148
|
+
return id;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Dispatch the event to the broker, then mark the outbox row as sent. Runs AFTER
|
|
152
|
+
* the transaction commits, so `publish` (a non-DB side effect) is never retried
|
|
153
|
+
* by `withTransaction` and a broker failure leaves a recoverable sent:false row.
|
|
154
|
+
*
|
|
155
|
+
* @param item
|
|
156
|
+
* @param type
|
|
157
|
+
* @param outboxId
|
|
158
|
+
* @param context
|
|
159
|
+
*/
|
|
160
|
+
async dispatchOutbox(item, type, outboxId, context) {
|
|
161
|
+
await this.publish(item, type, context);
|
|
162
|
+
const outbox = (0, outbox_1.getOutbox)();
|
|
163
|
+
if (outbox && outboxId)
|
|
164
|
+
await outbox.markSent(outboxId, context);
|
|
165
|
+
}
|
|
97
166
|
}
|
|
98
167
|
exports.BaseEventCtrl = BaseEventCtrl;
|
|
99
168
|
//# sourceMappingURL=base-event.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-event.controller.js","sourceRoot":"","sources":["../../src/events/base-event.controller.ts"],"names":[],"mappings":";;;AAEA,4FAA2F;
|
|
1
|
+
{"version":3,"file":"base-event.controller.js","sourceRoot":"","sources":["../../src/events/base-event.controller.ts"],"names":[],"mappings":"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"}
|
package/build/events/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AAGzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AAGvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/build/events/index.js
CHANGED
|
@@ -18,6 +18,7 @@ __exportStar(require("./types/enums"), exports);
|
|
|
18
18
|
__exportStar(require("./interfaces"), exports);
|
|
19
19
|
__exportStar(require("./types"), exports);
|
|
20
20
|
__exportStar(require("./base-event.controller"), exports);
|
|
21
|
+
__exportStar(require("./outbox"), exports);
|
|
21
22
|
// messages on memory
|
|
22
23
|
__exportStar(require("./msg-client-manager"), exports);
|
|
23
24
|
__exportStar(require("./msg-wrapper"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,0DAAwC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AAExB,0DAAwC;AACxC,2CAAyB;AAEzB,qBAAqB;AACrB,uDAAqC;AACrC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AAEjC,mBAAmB;AACnB,wDAAsC;AACtC,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AAEtC,YAAY;AACZ,iDAA+B;AAC/B,yCAAuB;AAEvB,aAAa;AACb,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B;AAC1B,sDAAoC;AACpC,2CAAyB;AACzB,kDAAgC;AAEhC,cAAc;AACd,4CAA0B;AAC1B,kDAAgC;AAChC,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,iDAA+B;AAC/B,mDAAiC;AAEjC,oBAAoB;AACpB,kDAAgC;AAChC,+CAA6B;AAE7B,kBAAkB;AAClB,mCAAmC;AAEnC,cAAc"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OutboxPort } from './types/outbox.interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* Register the process-wide outbox implementation. Called once, at service
|
|
4
|
+
* bootstrap (app-layer phase), with the service's own `event` model.
|
|
5
|
+
*/
|
|
6
|
+
export declare const registerOutbox: (port: OutboxPort) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Current outbox implementation, or `undefined` when none was registered (the
|
|
9
|
+
* controller then publishes WITHOUT persisting an outbox row — graceful default).
|
|
10
|
+
*/
|
|
11
|
+
export declare const getOutbox: () => OutboxPort | undefined;
|
|
12
|
+
//# sourceMappingURL=outbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/events/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,UAAU,KAAG,IAA2B,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,UAAU,GAAG,SAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOutbox = exports.registerOutbox = void 0;
|
|
4
|
+
let _outbox;
|
|
5
|
+
/**
|
|
6
|
+
* Register the process-wide outbox implementation. Called once, at service
|
|
7
|
+
* bootstrap (app-layer phase), with the service's own `event` model.
|
|
8
|
+
*/
|
|
9
|
+
const registerOutbox = (port) => { _outbox = port; };
|
|
10
|
+
exports.registerOutbox = registerOutbox;
|
|
11
|
+
/**
|
|
12
|
+
* Current outbox implementation, or `undefined` when none was registered (the
|
|
13
|
+
* controller then publishes WITHOUT persisting an outbox row — graceful default).
|
|
14
|
+
*/
|
|
15
|
+
const getOutbox = () => _outbox;
|
|
16
|
+
exports.getOutbox = getOutbox;
|
|
17
|
+
//# sourceMappingURL=outbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/events/outbox.ts"],"names":[],"mappings":";;;AAEA,IAAI,OAA+B,CAAC;AAEpC;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAC,IAAgB,EAAQ,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAAjE,QAAA,cAAc,kBAAmD;AAE9E;;;GAGG;AACI,MAAM,SAAS,GAAG,GAA2B,EAAE,CAAC,OAAO,CAAC;AAAlD,QAAA,SAAS,aAAyC"}
|
|
@@ -18,6 +18,7 @@ export * from './asset.interfaces';
|
|
|
18
18
|
export * from './control.interfaces';
|
|
19
19
|
export * from './dlq.interfaces';
|
|
20
20
|
export * from './events.interfaces';
|
|
21
|
+
export * from './outbox.interfaces';
|
|
21
22
|
export * from './risk-analysis.interfaces';
|
|
22
23
|
export * from './threat.interfaces';
|
|
23
24
|
export * from './vulnerability.interfaces';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,kBAAkB,CAAC"}
|
|
@@ -34,6 +34,7 @@ __exportStar(require("./asset.interfaces"), exports);
|
|
|
34
34
|
__exportStar(require("./control.interfaces"), exports);
|
|
35
35
|
__exportStar(require("./dlq.interfaces"), exports);
|
|
36
36
|
__exportStar(require("./events.interfaces"), exports);
|
|
37
|
+
__exportStar(require("./outbox.interfaces"), exports);
|
|
37
38
|
__exportStar(require("./risk-analysis.interfaces"), exports);
|
|
38
39
|
__exportStar(require("./threat.interfaces"), exports);
|
|
39
40
|
__exportStar(require("./vulnerability.interfaces"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,wDAAsC;AACtC,gDAA8B;AAC9B,sDAAoC;AACpC,wDAAsC;AACtC,uDAAqC;AACrC,kDAAgC;AAChC,4DAA0C;AAC1C,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,iDAA+B;AAC/B,oDAAkC;AAClC,wDAAsC;AAEtC,oDAAkC;AAClC,kDAAgC;AAEhC,qDAAmC;AACnC,uDAAqC;AACrC,mDAAiC;AACjC,sDAAoC;AACpC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAE3C,YAAY;AACZ,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AAExB,wDAAsC;AACtC,gDAA8B;AAC9B,sDAAoC;AACpC,wDAAsC;AACtC,uDAAqC;AACrC,kDAAgC;AAChC,4DAA0C;AAC1C,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,iDAA+B;AAC/B,oDAAkC;AAClC,wDAAsC;AAEtC,oDAAkC;AAClC,kDAAgC;AAEhC,qDAAmC;AACnC,uDAAqC;AACrC,mDAAiC;AACjC,sDAAoC;AACpC,sDAAoC;AACpC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAE3C,YAAY;AACZ,mDAAiC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NxContext } from '@nextage/nx-frame-be';
|
|
2
|
+
import { QueueEventType } from './enums';
|
|
3
|
+
export interface OutboxEvent {
|
|
4
|
+
id: string;
|
|
5
|
+
type: QueueEventType;
|
|
6
|
+
data: any;
|
|
7
|
+
}
|
|
8
|
+
export interface OutboxPort {
|
|
9
|
+
create(evt: OutboxEvent, context: NxContext): Promise<void>;
|
|
10
|
+
markSent(id: string, context: NxContext): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=outbox.interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.interfaces.d.ts","sourceRoot":"","sources":["../../../src/events/types/outbox.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAW,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAI,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AASD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAQ,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbox.interfaces.js","sourceRoot":"","sources":["../../../src/events/types/outbox.interfaces.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextage/era-lib",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.175",
|
|
4
4
|
"main": "./build/index.js",
|
|
5
5
|
"types": "./build/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"license": "ISC",
|
|
23
23
|
"description": "ERA shared backend library (@nextage/era-lib): events, models, services, bootstrap orchestrator and utils on top of @nextage/nx-frame-be. See README.md and CHANGELOG.md.",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@nextage/nx-frame-be": "^1.0.
|
|
25
|
+
"@nextage/nx-frame-be": "^1.0.41",
|
|
26
26
|
"@types/express-jwt": "^7.4.2",
|
|
27
27
|
"@types/express-rate-limit": "^6.0.0",
|
|
28
28
|
"@types/express-session": "^1.18.2",
|