@nsshunt/stsappframework 4.0.6 → 4.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exampleapp/app.js +30 -14
- package/dist/exampleapp/app.js.map +1 -1
- package/dist/plugins/stsexpresscontrollerplugin.js +61 -15
- package/dist/plugins/stsexpresscontrollerplugin.js.map +1 -1
- package/package.json +1 -1
- package/types/exampleapp/app.d.ts +8 -1
- package/types/exampleapp/app.d.ts.map +1 -1
- package/types/plugins/stsexpresscontrollerplugin.d.ts +42 -8
- package/types/plugins/stsexpresscontrollerplugin.d.ts.map +1 -1
package/dist/exampleapp/app.js
CHANGED
|
@@ -4,6 +4,7 @@ import os from "node:os";
|
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import cluster from "node:cluster";
|
|
6
6
|
import chalk from "chalk";
|
|
7
|
+
import { Router } from "express";
|
|
7
8
|
import { StatusCodes } from "http-status-codes";
|
|
8
9
|
import { inject, emptyLogger, SetInjectionContextStore, } from "@nsshunt/stsutils";
|
|
9
10
|
import { NodeInjectionContextStore } from "@nsshunt/stsutils/node";
|
|
@@ -48,6 +49,25 @@ const outputLogs = (app) => {
|
|
|
48
49
|
// We are in nodejs, so use the async local storage version of the injector. This ensure that we
|
|
49
50
|
// can use inject in async code before or after any awaits
|
|
50
51
|
SetInjectionContextStore(new NodeInjectionContextStore());
|
|
52
|
+
const stslatencyController = async (_req, res, next) => {
|
|
53
|
+
try {
|
|
54
|
+
const retVal = {
|
|
55
|
+
data: `Ping Completed At: ${Date.now()}`,
|
|
56
|
+
pid: process.pid,
|
|
57
|
+
ppid: process.ppid,
|
|
58
|
+
};
|
|
59
|
+
return res.status(StatusCodes.OK).send(retVal);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
next(error);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export class STSResourceRoute {
|
|
66
|
+
router = Router();
|
|
67
|
+
constructor() {
|
|
68
|
+
this.router.get("/latency", stslatencyController);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
51
71
|
if (cluster.isPrimary) {
|
|
52
72
|
const serviceProcessContext = CreateServiceProcessContext(goptions.rest01servicename, goptions.rest01serviceversion, randomUUID(), os.hostname(), process.pid, process.pid);
|
|
53
73
|
const app = new STSApp();
|
|
@@ -190,35 +210,31 @@ else {
|
|
|
190
210
|
}
|
|
191
211
|
};
|
|
192
212
|
*/
|
|
193
|
-
const stslatencyController = async (_req, res, next) => {
|
|
194
|
-
try {
|
|
195
|
-
const retVal = {
|
|
196
|
-
data: `Ping Completed At: ${Date.now()}`,
|
|
197
|
-
pid: process.pid,
|
|
198
|
-
ppid: process.ppid,
|
|
199
|
-
};
|
|
200
|
-
return res.status(StatusCodes.OK).send(retVal);
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
next(error);
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
213
|
app.use(app.createPlugin(STSExpressControllerPlugin), {
|
|
207
|
-
|
|
214
|
+
registrations: [
|
|
208
215
|
{
|
|
216
|
+
type: "router",
|
|
217
|
+
router: STSResourceRoute,
|
|
218
|
+
mountPath: goptions.rest01apiroot,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
type: "route",
|
|
209
222
|
method: "get",
|
|
210
223
|
mountPath: `${goptions.rest01apiroot}/`,
|
|
211
224
|
handlers: [stslatencyController],
|
|
212
225
|
},
|
|
226
|
+
/*
|
|
213
227
|
{
|
|
214
228
|
method: "get",
|
|
215
229
|
mountPath: `${goptions.rest01apiroot}/latency`,
|
|
216
230
|
handlers: [
|
|
217
231
|
// Use below for debugging only ...
|
|
218
232
|
//stslatencyMiddlewareController,
|
|
233
|
+
|
|
219
234
|
stslatencyController,
|
|
220
235
|
],
|
|
221
236
|
},
|
|
237
|
+
*/
|
|
222
238
|
],
|
|
223
239
|
});
|
|
224
240
|
outputLogs(app);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/exampleapp/app.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,wFAAwF,CAAC,UAAU;AACnG,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/exampleapp/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
2
|
/* eslint @typescript-eslint/no-empty-object-type: 0 */
|
|
3
|
-
import
|
|
4
|
-
import { inject } from "@nsshunt/stsutils";
|
|
3
|
+
import express from "express";
|
|
4
|
+
import { InjectionToken, inject } from "@nsshunt/stsutils";
|
|
5
5
|
import { STSLoggerPluginToken } from "./stsloggerplugin.js";
|
|
6
6
|
import { STSServerPluginToken } from "./stsserverplugin.js";
|
|
7
|
-
import express from "express";
|
|
8
7
|
export const STSExpressControllerPluginToken = new InjectionToken("__STSPlugin__ExpressController");
|
|
9
|
-
// STSOptions
|
|
10
8
|
export class STSExpressControllerPlugin {
|
|
11
9
|
logger = inject(STSLoggerPluginToken);
|
|
12
10
|
server = inject(STSServerPluginToken);
|
|
@@ -16,31 +14,79 @@ export class STSExpressControllerPlugin {
|
|
|
16
14
|
return injector.runInContext(() => handler(req, res, next));
|
|
17
15
|
};
|
|
18
16
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
#Register = (injector, expressServer, registrations) => {
|
|
18
|
+
for (const registration of registrations) {
|
|
19
|
+
switch (registration.type) {
|
|
20
|
+
case "route": {
|
|
21
|
+
const router = express.Router();
|
|
22
|
+
const handlers = registration.handlers.map((handler) => this.#RunInInjectionContext(injector, handler));
|
|
23
|
+
router[registration.method](registration.mountPath, ...handlers);
|
|
24
|
+
expressServer.Use(router);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
case "router": {
|
|
28
|
+
const routerInstance = injector.runInContext(() => new registration.router());
|
|
29
|
+
if (registration.mountPath) {
|
|
30
|
+
const router = express.Router();
|
|
31
|
+
router.use(registration.mountPath, routerInstance.router);
|
|
32
|
+
expressServer.Use(router);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
expressServer.Use(routerInstance.router);
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
22
40
|
}
|
|
23
|
-
|
|
24
|
-
|
|
41
|
+
};
|
|
42
|
+
#RegisterRouters = (injector, expressServer, routers) => {
|
|
43
|
+
for (const routerDefinition of routers) {
|
|
44
|
+
const routerInstance = injector.runInContext(() => new routerDefinition.router());
|
|
45
|
+
if (routerDefinition.mountPath) {
|
|
46
|
+
const router = express.Router();
|
|
47
|
+
router.use(routerDefinition.mountPath, routerInstance.router);
|
|
48
|
+
expressServer.Use(router);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
expressServer.Use(routerInstance.router);
|
|
25
52
|
}
|
|
53
|
+
};
|
|
54
|
+
#RegisterRoutes = (injector, expressServer, routes) => {
|
|
26
55
|
const router = express.Router();
|
|
27
|
-
for (const route of
|
|
56
|
+
for (const route of routes) {
|
|
28
57
|
const handlers = route.handlers.map((handler) => this.#RunInInjectionContext(injector, handler));
|
|
29
58
|
router[route.method](route.mountPath, ...handlers);
|
|
30
59
|
}
|
|
31
|
-
|
|
60
|
+
expressServer.Use(router);
|
|
61
|
+
};
|
|
62
|
+
install = (injector, options) => {
|
|
63
|
+
if (!options) {
|
|
64
|
+
throw new Error("STSExpressControllerPlugin requires options");
|
|
65
|
+
}
|
|
66
|
+
if (this.server.GetServerType() !== "EXPRESS") {
|
|
67
|
+
throw new Error(`STSExpressControllerPlugin: Server type: ` +
|
|
68
|
+
`[${this.server.GetServerType()}] ` +
|
|
69
|
+
`must be an express server`);
|
|
70
|
+
}
|
|
71
|
+
if (!options.registrations || options.registrations.length === 0) {
|
|
72
|
+
throw new Error("STSExpressControllerPlugin requires at least one registration");
|
|
73
|
+
}
|
|
74
|
+
const expressServer = this.server;
|
|
75
|
+
this.#Register(injector, expressServer, options.registrations);
|
|
32
76
|
injector.register({
|
|
33
77
|
provide: STSExpressControllerPluginToken,
|
|
34
78
|
useValue: this.expressController,
|
|
35
79
|
});
|
|
36
80
|
};
|
|
37
81
|
Start = async () => {
|
|
38
|
-
this.logger.info(`${process.pid}
|
|
39
|
-
|
|
82
|
+
this.logger.info(`${process.pid} ` +
|
|
83
|
+
`STSExpressControllerPlugin: Start() Starting ...`);
|
|
84
|
+
this.logger.info(`${process.pid} ` + `STSExpressControllerPlugin: Start() Started`);
|
|
40
85
|
};
|
|
41
86
|
Stop = async () => {
|
|
42
|
-
this.logger.info(`${process.pid}
|
|
43
|
-
|
|
87
|
+
this.logger.info(`${process.pid} ` +
|
|
88
|
+
`STSExpressControllerPlugin: Stop() Stopping ...`);
|
|
89
|
+
this.logger.info(`${process.pid} ` + `STSExpressControllerPlugin: Stop() Stopped`);
|
|
44
90
|
};
|
|
45
91
|
}
|
|
46
92
|
//# sourceMappingURL=stsexpresscontrollerplugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stsexpresscontrollerplugin.js","sourceRoot":"","sources":["../../src/plugins/stsexpresscontrollerplugin.ts"],"names":[],"mappings":"AAAA,wFAAwF,CAAC,UAAU;AACnG,uDAAuD;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"stsexpresscontrollerplugin.js","sourceRoot":"","sources":["../../src/plugins/stsexpresscontrollerplugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { Router } from "express";
|
|
2
|
+
export interface ISTSExpressRouter {
|
|
3
|
+
router: Router;
|
|
4
|
+
}
|
|
5
|
+
export declare class STSResourceRoute implements ISTSExpressRouter {
|
|
6
|
+
readonly router: import("express-serve-static-core").Router;
|
|
7
|
+
constructor();
|
|
8
|
+
}
|
|
2
9
|
//# sourceMappingURL=app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/exampleapp/app.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/exampleapp/app.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAkB,MAAM,SAAS,CAAC;AAgGjD,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,QAAQ,CAAC,MAAM,6CAAY;;CAK9B"}
|
|
@@ -1,15 +1,49 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { RequestHandler, Router } from "express";
|
|
3
|
+
import { InjectionToken, Injector } from "@nsshunt/stsutils";
|
|
3
4
|
import { IPlugin } from "./../commonTypes.js";
|
|
4
|
-
import { Injector } from "@nsshunt/stsutils";
|
|
5
|
-
import { RequestHandler } from "express";
|
|
6
5
|
export declare const STSExpressControllerPluginToken: InjectionToken<ISTSExpressController>;
|
|
6
|
+
export type STSExpressRouteMethod = "get" | "post" | "put" | "patch" | "delete";
|
|
7
|
+
export interface ISTSExpressRouter {
|
|
8
|
+
router: Router;
|
|
9
|
+
}
|
|
10
|
+
export type STSExpressRouterConstructor<T extends ISTSExpressRouter = ISTSExpressRouter> = new () => T;
|
|
11
|
+
/**
|
|
12
|
+
* Declarative route definitions.
|
|
13
|
+
*
|
|
14
|
+
* Maintained for simple controller registrations where a
|
|
15
|
+
* dedicated Router class is not required.
|
|
16
|
+
*/
|
|
17
|
+
export interface ISTSExpressRouteDefinition {
|
|
18
|
+
type: "route";
|
|
19
|
+
method: STSExpressRouteMethod;
|
|
20
|
+
mountPath: string;
|
|
21
|
+
handlers: RequestHandler[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Router classes created inside the plugin injection context.
|
|
25
|
+
*
|
|
26
|
+
* Example:
|
|
27
|
+
*
|
|
28
|
+
* routers: [
|
|
29
|
+
* {
|
|
30
|
+
* router: STSResourceRoute,
|
|
31
|
+
* mountPath: "/api/v1",
|
|
32
|
+
* },
|
|
33
|
+
* {
|
|
34
|
+
* router: STSHealthRoute,
|
|
35
|
+
* mountPath: "/",
|
|
36
|
+
* },
|
|
37
|
+
* ]
|
|
38
|
+
*/
|
|
39
|
+
export interface ISTSExpressRouterDefinition {
|
|
40
|
+
type: "router";
|
|
41
|
+
router: STSExpressRouterConstructor;
|
|
42
|
+
mountPath?: string;
|
|
43
|
+
}
|
|
44
|
+
export type ISTSExpressControllerRegistration = ISTSExpressRouteDefinition | ISTSExpressRouterDefinition;
|
|
7
45
|
export interface ISTSExpressControllerPluginOptions {
|
|
8
|
-
|
|
9
|
-
method: "get" | "post" | "put" | "patch" | "delete";
|
|
10
|
-
mountPath: string;
|
|
11
|
-
handlers: RequestHandler[];
|
|
12
|
-
}[];
|
|
46
|
+
registrations: ISTSExpressControllerRegistration[];
|
|
13
47
|
}
|
|
14
48
|
export interface ISTSExpressController {
|
|
15
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stsexpresscontrollerplugin.d.ts","sourceRoot":"","sources":["../../src/plugins/stsexpresscontrollerplugin.ts"],"names":[],"mappings":";AAGA,
|
|
1
|
+
{"version":3,"file":"stsexpresscontrollerplugin.d.ts","sourceRoot":"","sources":["../../src/plugins/stsexpresscontrollerplugin.ts"],"names":[],"mappings":";AAGA,OAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAU,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAO9C,eAAO,MAAM,+BAA+B,uCACmC,CAAC;AAEhF,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,2BAA2B,CACnC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IAC/C,UAAU,CAAC,CAAC;AAEhB;;;;;GAKG;AAEH,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,2BAA2B,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iCAAiC,GACvC,0BAA0B,GAC1B,2BAA2B,CAAC;AAElC,MAAM,WAAW,kCAAkC;IAC/C,aAAa,EAAE,iCAAiC,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB;CAAG;AAEzC,qBAAa,0BAA2B,YAAW,OAAO,CAAC,kCAAkC,CAAC;;IAC1F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IAEvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IAEvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAqG/D,OAAO,GACH,UAAU,QAAQ,EAClB,UAAU,kCAAkC,KAC7C,IAAI,CA2BL;IAEF,KAAK,QAAa,OAAO,CAAC,IAAI,CAAC,CAS7B;IAEF,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAS5B;CACL"}
|