@decaf-ts/for-nest 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/for-nest.cjs +1 -1
- package/dist/for-nest.cjs.map +1 -1
- package/dist/for-nest.js +1 -1
- package/dist/for-nest.js.map +1 -1
- package/lib/decaf-model/FromModelController.cjs +157 -0
- package/lib/decaf-model/FromModelController.d.ts +1 -0
- package/lib/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.d.ts +1 -0
- package/lib/esm/decaf-model/FromModelController.js +157 -0
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/events-module/DecafStreamModule.d.ts +4 -0
- package/lib/esm/events-module/DecafStreamModule.js +40 -0
- package/lib/esm/events-module/DecafStreamModule.js.map +1 -0
- package/lib/esm/events-module/constant.d.ts +1 -0
- package/lib/esm/events-module/constant.js +2 -0
- package/lib/esm/events-module/constant.js.map +1 -0
- package/lib/esm/events-module/events.controller.d.ts +10 -0
- package/lib/esm/events-module/events.controller.js +112 -0
- package/lib/esm/events-module/events.controller.js.map +1 -0
- package/lib/esm/events-module/index.d.ts +1 -0
- package/lib/esm/events-module/index.js +2 -0
- package/lib/esm/events-module/index.js.map +1 -0
- package/lib/esm/events-module/utils.d.ts +1 -0
- package/lib/esm/events-module/utils.js +9 -0
- package/lib/esm/events-module/utils.js.map +1 -0
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/module.js +4 -0
- package/lib/esm/module.js.map +1 -1
- package/lib/esm/types.d.ts +17 -0
- package/lib/events-module/DecafStreamModule.cjs +43 -0
- package/lib/events-module/DecafStreamModule.d.ts +4 -0
- package/lib/events-module/DecafStreamModule.js.map +1 -0
- package/lib/events-module/constant.cjs +5 -0
- package/lib/events-module/constant.d.ts +1 -0
- package/lib/events-module/constant.js.map +1 -0
- package/lib/events-module/events.controller.cjs +115 -0
- package/lib/events-module/events.controller.d.ts +10 -0
- package/lib/events-module/events.controller.js.map +1 -0
- package/lib/events-module/index.cjs +18 -0
- package/lib/events-module/index.d.ts +1 -0
- package/lib/events-module/index.js.map +1 -0
- package/lib/events-module/utils.cjs +12 -0
- package/lib/events-module/utils.d.ts +1 -0
- package/lib/events-module/utils.js.map +1 -0
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/module.cjs +4 -0
- package/lib/module.js.map +1 -1
- package/lib/types.d.ts +17 -0
- package/package.json +2 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function normalizeEventResponse(args) {
|
|
2
|
+
const [modelConstr, operation, id, payload] = args;
|
|
3
|
+
const modelName = modelConstr?.name ?? modelConstr;
|
|
4
|
+
const serializedPayload = Array.isArray(payload)
|
|
5
|
+
? payload.map((e) => e.serialize())
|
|
6
|
+
: payload?.serialize();
|
|
7
|
+
return [modelName, operation, id, serializedPayload];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/events-module/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,sBAAsB,CAAC,IAAW;IAChD,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEnD,MAAM,SAAS,GAAG,WAAW,EAAE,IAAI,IAAI,WAAW,CAAC;IAEnD,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACnC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;IAEzB,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACvD,CAAC"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -38,7 +38,7 @@ export * from "./utils.js";
|
|
|
38
38
|
* @constant
|
|
39
39
|
* @type {string}
|
|
40
40
|
*/
|
|
41
|
-
export const VERSION = "0.2.
|
|
41
|
+
export const VERSION = "0.2.16";
|
|
42
42
|
export const PACKAGE_NAME = "@decaf-ts/for-nest";
|
|
43
43
|
Metadata.registerLibrary(PACKAGE_NAME, VERSION);
|
|
44
44
|
//# sourceMappingURL=index.js.map
|
package/lib/esm/module.js
CHANGED
|
@@ -8,6 +8,7 @@ var DecafModule_1;
|
|
|
8
8
|
import { Module } from "@nestjs/common";
|
|
9
9
|
import { DecafCoreModule } from "./core-module.js";
|
|
10
10
|
import { getModuleFor } from "./decaf-model/index.js";
|
|
11
|
+
import { DecafStreamModule } from "./events-module/index.js";
|
|
11
12
|
/**
|
|
12
13
|
* @publicApi
|
|
13
14
|
*/
|
|
@@ -25,6 +26,9 @@ let DecafModule = DecafModule_1 = class DecafModule {
|
|
|
25
26
|
}));
|
|
26
27
|
});
|
|
27
28
|
}
|
|
29
|
+
if (options.observerOptions?.enableObserverEvents) {
|
|
30
|
+
imports.push(DecafStreamModule.forFlavours(flavours));
|
|
31
|
+
}
|
|
28
32
|
return {
|
|
29
33
|
module: DecafModule_1,
|
|
30
34
|
imports: imports,
|
package/lib/esm/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAmC,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,yBAAsB;AAEhD,OAAO,EAAE,YAAY,EAAE,+BAA4B;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAmC,MAAM,EAAQ,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,yBAAsB;AAEhD,OAAO,EAAE,YAAY,EAAE,+BAA4B;AACnD,OAAO,EAAE,iBAAiB,EAAE,iCAAwB;AAEpD;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE5D,MAAM,QAAQ,GACZ,MAAM,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,OAAO,GAOG,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;oBACrC,YAAY;oBACZ,QAAQ;iBACT,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,oBAAoB,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAvCY,WAAW;IADvB,MAAM,CAAC,EAAE,CAAC;GACE,WAAW,CAuCvB"}
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -6,6 +6,22 @@ import { DecafRequestContext } from "./request/index";
|
|
|
6
6
|
export interface DecafRequestHandler<C extends DecafRequestContext = DecafRequestContext> {
|
|
7
7
|
handle(context: C, req: Request, res: Response): Promise<void>;
|
|
8
8
|
}
|
|
9
|
+
export interface ObserverEventsOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Enables or disables SSE stream events globally
|
|
12
|
+
*/
|
|
13
|
+
enableObserverEvents?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* List of adapter flavours that will emit stream events
|
|
16
|
+
* If omitted, all registered flavours may be used
|
|
17
|
+
*/
|
|
18
|
+
observerFlavours?: any[];
|
|
19
|
+
/**
|
|
20
|
+
* SSE endpoint path
|
|
21
|
+
* @default "/events"
|
|
22
|
+
*/
|
|
23
|
+
observerApiPath?: string;
|
|
24
|
+
}
|
|
9
25
|
/**
|
|
10
26
|
* @publicApi
|
|
11
27
|
*/
|
|
@@ -21,6 +37,7 @@ export type DecafModuleOptions<CONF = any, A extends Adapter<CONF, any, any, any
|
|
|
21
37
|
alias?: string;
|
|
22
38
|
autoControllers: boolean;
|
|
23
39
|
autoServices?: boolean;
|
|
40
|
+
observerOptions?: ObserverEventsOptions;
|
|
24
41
|
handlers?: Type<DecafRequestHandler>[];
|
|
25
42
|
};
|
|
26
43
|
/**
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var DecafStreamModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.DecafStreamModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const events_controller_1 = require("./events.controller");
|
|
13
|
+
const core_1 = require("@nestjs/core");
|
|
14
|
+
const constant_1 = require("./constant.cjs");
|
|
15
|
+
const index_1 = require("./../request/index.cjs");
|
|
16
|
+
let DecafStreamModule = DecafStreamModule_1 = class DecafStreamModule {
|
|
17
|
+
static forFlavours(flavours, path = "events") {
|
|
18
|
+
return {
|
|
19
|
+
module: DecafStreamModule_1,
|
|
20
|
+
controllers: [events_controller_1.EventsController],
|
|
21
|
+
imports: [
|
|
22
|
+
core_1.RouterModule.register([
|
|
23
|
+
{
|
|
24
|
+
path: path.replace(/^\//, ""),
|
|
25
|
+
module: DecafStreamModule_1,
|
|
26
|
+
},
|
|
27
|
+
]),
|
|
28
|
+
],
|
|
29
|
+
providers: [
|
|
30
|
+
index_1.DecafRequestContext,
|
|
31
|
+
{
|
|
32
|
+
provide: constant_1.LISTENING_ADAPTERS_FLAVOURS,
|
|
33
|
+
useValue: flavours ?? [],
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.DecafStreamModule = DecafStreamModule;
|
|
40
|
+
exports.DecafStreamModule = DecafStreamModule = DecafStreamModule_1 = __decorate([
|
|
41
|
+
(0, common_1.Module)({})
|
|
42
|
+
], DecafStreamModule);
|
|
43
|
+
//# sourceMappingURL=DecafStreamModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecafStreamModule.js","sourceRoot":"","sources":["../../src/events-module/DecafStreamModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,2DAAuD;AACvD,uCAA4C;AAC5C,6CAAyD;AACzD,kDAAuD;AAGhD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B,MAAM,CAAC,WAAW,CAChB,QAAkB,EAClB,OAAe,QAAQ;QAEvB,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,WAAW,EAAE,CAAC,oCAAgB,CAAC;YAC/B,OAAO,EAAE;gBACP,mBAAY,CAAC,QAAQ,CAAC;oBACpB;wBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;wBAC7B,MAAM,EAAE,mBAAiB;qBAC1B;iBACF,CAAC;aACH;YACD,SAAS,EAAE;gBACT,2BAAmB;gBACnB;oBACE,OAAO,EAAE,sCAA2B;oBACpC,QAAQ,EAAE,QAAQ,IAAI,EAAE;iBACzB;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAyB7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LISTENING_ADAPTERS_FLAVOURS: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/events-module/constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,MAAM,CAC/C,6BAA6B,CAC9B,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var EventsController_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.EventsController = void 0;
|
|
17
|
+
const controllers_1 = require("./../controllers.cjs");
|
|
18
|
+
const index_1 = require("./../request/index.cjs");
|
|
19
|
+
const core_1 = require("@decaf-ts/core");
|
|
20
|
+
const common_1 = require("@nestjs/common");
|
|
21
|
+
const rxjs_1 = require("rxjs");
|
|
22
|
+
const logging_1 = require("@decaf-ts/logging");
|
|
23
|
+
const constant_1 = require("./constant.cjs");
|
|
24
|
+
const utils_1 = require("./utils.cjs");
|
|
25
|
+
let EventsController = EventsController_1 = class EventsController extends controllers_1.DecafController {
|
|
26
|
+
constructor(clientContext, flavours) {
|
|
27
|
+
super(clientContext, EventsController_1.name);
|
|
28
|
+
this.adapters = flavours.map((flavour) => core_1.Adapter.get(flavour)); // change to Adapter.cache("")
|
|
29
|
+
}
|
|
30
|
+
listen() {
|
|
31
|
+
const logger = logging_1.Logging.for(EventsController_1.name);
|
|
32
|
+
return new rxjs_1.Observable((observer) => {
|
|
33
|
+
const cb = new (class {
|
|
34
|
+
refresh(...args) {
|
|
35
|
+
return Promise.resolve().then(() => {
|
|
36
|
+
const data = (0, utils_1.normalizeEventResponse)(args);
|
|
37
|
+
observer.next({ data });
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
})();
|
|
41
|
+
// if (!events || events.length === 0)
|
|
42
|
+
// return observer.error({
|
|
43
|
+
// message: `${NotFoundError.name} - No events available to listen for role: ${type}.`,
|
|
44
|
+
// });
|
|
45
|
+
try {
|
|
46
|
+
for (const adapter of this.adapters) {
|
|
47
|
+
adapter.observe(cb);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
observer.error(`Failed to observe event: ${e.message || e}`);
|
|
52
|
+
}
|
|
53
|
+
return () => {
|
|
54
|
+
try {
|
|
55
|
+
for (const adapter of this.adapters) {
|
|
56
|
+
adapter.unObserve(cb);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
logger.error(e);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
listenForModel(model) {
|
|
66
|
+
const logger = logging_1.Logging.for(EventsController_1.name);
|
|
67
|
+
return new rxjs_1.Observable((observer) => {
|
|
68
|
+
const cb = new (class {
|
|
69
|
+
refresh(...args) {
|
|
70
|
+
return Promise.resolve().then(() => {
|
|
71
|
+
observer.next({ data: args });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
})();
|
|
75
|
+
try {
|
|
76
|
+
for (const adapter of this.adapters) {
|
|
77
|
+
adapter.observe(cb);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
observer.error(`Failed to observe event: ${e.message || e}`);
|
|
82
|
+
}
|
|
83
|
+
return () => {
|
|
84
|
+
try {
|
|
85
|
+
for (const adapter of this.adapters) {
|
|
86
|
+
adapter.unObserve(cb);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
logger.error(e);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
exports.EventsController = EventsController;
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, common_1.Sse)(),
|
|
99
|
+
__metadata("design:type", Function),
|
|
100
|
+
__metadata("design:paramtypes", []),
|
|
101
|
+
__metadata("design:returntype", rxjs_1.Observable)
|
|
102
|
+
], EventsController.prototype, "listen", null);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, common_1.Sse)("/:model"),
|
|
105
|
+
__param(0, (0, common_1.Query)("model")),
|
|
106
|
+
__metadata("design:type", Function),
|
|
107
|
+
__metadata("design:paramtypes", [String]),
|
|
108
|
+
__metadata("design:returntype", rxjs_1.Observable)
|
|
109
|
+
], EventsController.prototype, "listenForModel", null);
|
|
110
|
+
exports.EventsController = EventsController = EventsController_1 = __decorate([
|
|
111
|
+
(0, common_1.Controller)(),
|
|
112
|
+
__param(1, (0, common_1.Inject)(constant_1.LISTENING_ADAPTERS_FLAVOURS)),
|
|
113
|
+
__metadata("design:paramtypes", [index_1.DecafRequestContext, Array])
|
|
114
|
+
], EventsController);
|
|
115
|
+
//# sourceMappingURL=events.controller.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DecafController } from "../controllers";
|
|
2
|
+
import { DecafRequestContext } from "../request/index";
|
|
3
|
+
import { Observable } from "rxjs";
|
|
4
|
+
import { DecafServerCtx } from "../constants";
|
|
5
|
+
export declare class EventsController extends DecafController<DecafServerCtx> {
|
|
6
|
+
private readonly adapters;
|
|
7
|
+
constructor(clientContext: DecafRequestContext, flavours: string[]);
|
|
8
|
+
listen(): Observable<MessageEvent>;
|
|
9
|
+
listenForModel(model: string): Observable<MessageEvent>;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.controller.js","sourceRoot":"","sources":["../../src/events-module/events.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./DecafStreamModule.cjs"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DecafStreamModule";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events-module/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAoC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeEventResponse = normalizeEventResponse;
|
|
4
|
+
function normalizeEventResponse(args) {
|
|
5
|
+
const [modelConstr, operation, id, payload] = args;
|
|
6
|
+
const modelName = modelConstr?.name ?? modelConstr;
|
|
7
|
+
const serializedPayload = Array.isArray(payload)
|
|
8
|
+
? payload.map((e) => e.serialize())
|
|
9
|
+
: payload?.serialize();
|
|
10
|
+
return [modelName, operation, id, serializedPayload];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function normalizeEventResponse(args: any[]): unknown[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/events-module/utils.ts"],"names":[],"mappings":";;AAAA,wDAUC;AAVD,SAAgB,sBAAsB,CAAC,IAAW;IAChD,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEnD,MAAM,SAAS,GAAG,WAAW,EAAE,IAAI,IAAI,WAAW,CAAC;IAEnD,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACnC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;IAEzB,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACvD,CAAC"}
|
package/lib/index.cjs
CHANGED
|
@@ -55,7 +55,7 @@ __exportStar(require("./utils.cjs"), exports);
|
|
|
55
55
|
* @constant
|
|
56
56
|
* @type {string}
|
|
57
57
|
*/
|
|
58
|
-
exports.VERSION = "0.2.
|
|
58
|
+
exports.VERSION = "0.2.16";
|
|
59
59
|
exports.PACKAGE_NAME = "@decaf-ts/for-nest";
|
|
60
60
|
decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
|
|
61
61
|
//# sourceMappingURL=index.js.map
|
package/lib/index.d.ts
CHANGED
package/lib/module.cjs
CHANGED
|
@@ -11,6 +11,7 @@ exports.DecafModule = void 0;
|
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const core_module_1 = require("./core-module.cjs");
|
|
13
13
|
const index_1 = require("./decaf-model/index.cjs");
|
|
14
|
+
const events_module_1 = require("./events-module/index.cjs");
|
|
14
15
|
/**
|
|
15
16
|
* @publicApi
|
|
16
17
|
*/
|
|
@@ -28,6 +29,9 @@ let DecafModule = DecafModule_1 = class DecafModule {
|
|
|
28
29
|
}));
|
|
29
30
|
});
|
|
30
31
|
}
|
|
32
|
+
if (options.observerOptions?.enableObserverEvents) {
|
|
33
|
+
imports.push(events_module_1.DecafStreamModule.forFlavours(flavours));
|
|
34
|
+
}
|
|
31
35
|
return {
|
|
32
36
|
module: DecafModule_1,
|
|
33
37
|
imports: imports,
|
package/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAE/E,mDAAgD;AAEhD,mDAAmD;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAE/E,mDAAgD;AAEhD,mDAAmD;AACnD,6DAAoD;AAEpD;;GAEG;AAEI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE5D,MAAM,QAAQ,GACZ,MAAM,6BAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,MAAM,OAAO,GAOG,CAAC,6BAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,OAAO,CAAC,IAAI,CACV,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;oBACrC,YAAY;oBACZ,QAAQ;iBACT,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,oBAAoB,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,iCAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAvCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAuCvB"}
|
package/lib/types.d.ts
CHANGED
|
@@ -6,6 +6,22 @@ import { DecafRequestContext } from "./request/index";
|
|
|
6
6
|
export interface DecafRequestHandler<C extends DecafRequestContext = DecafRequestContext> {
|
|
7
7
|
handle(context: C, req: Request, res: Response): Promise<void>;
|
|
8
8
|
}
|
|
9
|
+
export interface ObserverEventsOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Enables or disables SSE stream events globally
|
|
12
|
+
*/
|
|
13
|
+
enableObserverEvents?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* List of adapter flavours that will emit stream events
|
|
16
|
+
* If omitted, all registered flavours may be used
|
|
17
|
+
*/
|
|
18
|
+
observerFlavours?: any[];
|
|
19
|
+
/**
|
|
20
|
+
* SSE endpoint path
|
|
21
|
+
* @default "/events"
|
|
22
|
+
*/
|
|
23
|
+
observerApiPath?: string;
|
|
24
|
+
}
|
|
9
25
|
/**
|
|
10
26
|
* @publicApi
|
|
11
27
|
*/
|
|
@@ -21,6 +37,7 @@ export type DecafModuleOptions<CONF = any, A extends Adapter<CONF, any, any, any
|
|
|
21
37
|
alias?: string;
|
|
22
38
|
autoControllers: boolean;
|
|
23
39
|
autoServices?: boolean;
|
|
40
|
+
observerOptions?: ObserverEventsOptions;
|
|
24
41
|
handlers?: Type<DecafRequestHandler>[];
|
|
25
42
|
};
|
|
26
43
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/for-nest",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.16",
|
|
4
4
|
"description": "NestJS decaf integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
"@nestjs/testing": "^11.0.1",
|
|
100
100
|
"@types/lodash": "^4.17.20",
|
|
101
101
|
"commander": "^13.1.0",
|
|
102
|
+
"eventsource": "^4.1.0",
|
|
102
103
|
"supertest": "^7.1.4"
|
|
103
104
|
},
|
|
104
105
|
"dependencies": {
|