@rapidrest/service-core 1.0.0-rc.34 → 1.0.0-rc.36
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 +45 -3
- package/dist/lib/ApiErrors.js +3 -1
- package/dist/lib/ApiErrors.js.map +1 -1
- package/dist/lib/BackgroundServiceManager.js +20 -2
- package/dist/lib/BackgroundServiceManager.js.map +1 -1
- package/dist/lib/EventListenerManager.js +14 -1
- package/dist/lib/EventListenerManager.js.map +1 -1
- package/dist/lib/Server.js +4 -3
- package/dist/lib/Server.js.map +1 -1
- package/dist/lib/auth/JWTStrategy.js +20 -4
- package/dist/lib/auth/JWTStrategy.js.map +1 -1
- package/dist/lib/database/ConnectionManager.js +70 -51
- package/dist/lib/database/ConnectionManager.js.map +1 -1
- package/dist/lib/decorators/ModelDecorators.js +8 -4
- package/dist/lib/decorators/ModelDecorators.js.map +1 -1
- package/dist/lib/decorators/RouteDecorators.js +8 -4
- package/dist/lib/decorators/RouteDecorators.js.map +1 -1
- package/dist/lib/http/MiddlewareChain.js +18 -6
- package/dist/lib/http/MiddlewareChain.js.map +1 -1
- package/dist/lib/http/bun/BunRouter.js +11 -2
- package/dist/lib/http/bun/BunRouter.js.map +1 -1
- package/dist/lib/http/uWS/Router.js +15 -4
- package/dist/lib/http/uWS/Router.js.map +1 -1
- package/dist/lib/models/ModelUtils.js +39 -16
- package/dist/lib/models/ModelUtils.js.map +1 -1
- package/dist/lib/models/RecoverableBaseEntity.js +5 -1
- package/dist/lib/models/RecoverableBaseEntity.js.map +1 -1
- package/dist/lib/models/RepoUtils.js +57 -30
- package/dist/lib/models/RepoUtils.js.map +1 -1
- package/dist/lib/routes/BaseAdminRoute.js +16 -5
- package/dist/lib/routes/BaseAdminRoute.js.map +1 -1
- package/dist/lib/routes/BasePushRoute.js +63 -26
- package/dist/lib/routes/BasePushRoute.js.map +1 -1
- package/dist/lib/routes/CRUDRoute.js +3 -3
- package/dist/lib/routes/CRUDRoute.js.map +1 -1
- package/dist/lib/routes/RouteUtils.js +32 -14
- package/dist/lib/routes/RouteUtils.js.map +1 -1
- package/dist/lib/security/ACLUtils.js +4 -0
- package/dist/lib/security/ACLUtils.js.map +1 -1
- package/dist/lib/security/BaseACLRoute.js +7 -7
- package/dist/lib/security/BaseACLRoute.js.map +1 -1
- package/dist/types/ApiErrors.d.ts +3 -1
- package/dist/types/BackgroundServiceManager.d.ts +1 -0
- package/dist/types/EventListenerManager.d.ts +1 -0
- package/dist/types/auth/JWTStrategy.d.ts +1 -0
- package/dist/types/database/ConnectionManager.d.ts +15 -0
- package/dist/types/http/MiddlewareChain.d.ts +8 -1
- package/dist/types/models/RecoverableBaseEntity.d.ts +3 -1
- package/dist/types/routes/BaseAdminRoute.d.ts +1 -1
- package/dist/types/routes/BasePushRoute.d.ts +10 -0
- package/dist/types/routes/RouteUtils.d.ts +5 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,16 +4,58 @@
|
|
|
4
4
|
[](https://coveralls.io/github/rapidrest/service-core?branch=main)
|
|
5
5
|
[](https://www.npmjs.com/package/@rapidrest/service-core)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
A library for implementing REST API services and backend applications using a decorator-driven, aspect oriented programming (AOP), architecture. It
|
|
8
|
+
combines a high-performance HTTP engine, built on [uWebSockets.js](https://github.com/uNetworking/uWebSockets.js/) or [Bun](https://bun.sh/), with
|
|
9
|
+
integrated database abstraction with native MongoDB and SQL (via (TypeORM)[https://typeorm.io/]) support, sessions, JWT-based authenticaiton, Roles Based Access Control, and more.
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
For complete documentation please visit [RapidREST.dev](https://rapidrest.dev).
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Ultrafast HTTP engine ([uWebSockets.js](https://github.com/uNetworking/uWebSockets.js/)/[Bun](https://bun.sh/))
|
|
16
|
+
- Simple decorator-driven HTTP routing
|
|
17
|
+
- OpenAPI spec generation
|
|
18
|
+
- Built-in JWT authentication
|
|
19
|
+
- Roles Based Access Control && Access Control Lists
|
|
20
|
+
- Database abstraction (native MongoDB, TypeORM)
|
|
21
|
+
- Caching system (Redis)
|
|
22
|
+
- Telemetry (via Prometheus)
|
|
23
|
+
- External messaging (email, sms, slack, etc.)
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
### NPM
|
|
10
28
|
|
|
11
29
|
```
|
|
12
30
|
npm i @rapidrest/service-core
|
|
13
31
|
```
|
|
14
32
|
|
|
15
|
-
|
|
33
|
+
### Yarn
|
|
16
34
|
|
|
17
35
|
```
|
|
18
36
|
yarn add @rapidrest/service-core
|
|
19
37
|
```
|
|
38
|
+
|
|
39
|
+
## Requirements
|
|
40
|
+
|
|
41
|
+
This package targets Node.js `>=24.0.0` and is published as an ESM-only package.
|
|
42
|
+
|
|
43
|
+
It declares `@rapidrest/core` as required peer dependencies. The remaining peer
|
|
44
|
+
dependencies are optional and only need to be installed if you use the corresponding feature:
|
|
45
|
+
|
|
46
|
+
| Peer dependency | Required for |
|
|
47
|
+
| ------------------ | ---------------------------- |
|
|
48
|
+
| `@rapidrest/core` | Always |
|
|
49
|
+
| `ioredis` | When caching is enabled |
|
|
50
|
+
| `lodash-es` | Always |
|
|
51
|
+
| `mongodb` | When MongoDB is used |
|
|
52
|
+
| `openapi3-ts` | Always |
|
|
53
|
+
| `prom-client` | Always |
|
|
54
|
+
| `reflect-metadata` | Always |
|
|
55
|
+
| `typeorm` | When SQL is used |
|
|
56
|
+
| `uWebSockets.js` | When Node.js runtime is used |
|
|
57
|
+
| `winston` | Always |
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
MIT — see [LICENSE](./LICENSE).
|
package/dist/lib/ApiErrors.js
CHANGED
|
@@ -18,7 +18,8 @@ export var ApiErrors;
|
|
|
18
18
|
ApiErrors["AUTH_REQUIRED"] = "api-100";
|
|
19
19
|
ApiErrors["AUTH_FAILED"] = "api-101";
|
|
20
20
|
ApiErrors["AUTH_PERMISSION_FAILURE"] = "api-102";
|
|
21
|
-
ApiErrors["
|
|
21
|
+
ApiErrors["AUTH_REQUIRES_TRUSTED_ROLE"] = "api-103";
|
|
22
|
+
ApiErrors["AUTH_REQUIRES_ELEVATION"] = "api-104";
|
|
22
23
|
})(ApiErrors || (ApiErrors = {}));
|
|
23
24
|
/**
|
|
24
25
|
* Defines the default message of all common API errors.
|
|
@@ -40,6 +41,7 @@ export var ApiErrorMessages;
|
|
|
40
41
|
ApiErrorMessages["AUTH_REQUIRED"] = "Authorization is required to access this resource.";
|
|
41
42
|
ApiErrorMessages["AUTH_FAILED"] = "Invalid or missing authentication token.";
|
|
42
43
|
ApiErrorMessages["AUTH_PERMISSION_FAILURE"] = "User does not have permission to perform this action.";
|
|
44
|
+
ApiErrorMessages["AUTH_REQUIRES_TRUSTED_ROLE"] = "User does not have permission to perform this action.";
|
|
43
45
|
ApiErrorMessages["AUTH_REQUIRES_ELEVATION"] = "This operation requires elevation.";
|
|
44
46
|
})(ApiErrorMessages || (ApiErrorMessages = {}));
|
|
45
47
|
//# sourceMappingURL=ApiErrors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiErrors.js","sourceRoot":"","sources":["../../src/ApiErrors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"ApiErrors.js","sourceRoot":"","sources":["../../src/ApiErrors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,SAkBX;AAlBD,WAAY,SAAS;IACjB,gCAAmB,CAAA;IACnB,uCAA0B,CAAA;IAC1B,wCAA2B,CAAA;IAC3B,0CAA6B,CAAA;IAC7B,kCAAqB,CAAA;IACrB,0CAA6B,CAAA;IAC7B,+CAAkC,CAAA;IAClC,2CAA8B,CAAA;IAC9B,6CAAgC,CAAA;IAChC,oDAAuC,CAAA;IACvC,4CAA+B,CAAA;IAC/B,4CAA+B,CAAA;IAC/B,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;IACvB,gDAAmC,CAAA;IACnC,mDAAsC,CAAA;IACtC,gDAAmC,CAAA;AACvC,CAAC,EAlBW,SAAS,KAAT,SAAS,QAkBpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBAkBX;AAlBD,WAAY,gBAAgB;IACxB,gFAA4D,CAAA;IAC5D,uGAAmF,CAAA;IACnF,mEAA+C,CAAA;IAC/C,4FAAwE,CAAA;IACxE,2FAAuE,CAAA;IACvE,yFAAqE,CAAA;IACrE,sGAAkF,CAAA;IAClF,mGAA+E,CAAA;IAC/E,mHAA+F,CAAA;IAC/F,sGAAkF,CAAA;IAClF,iFAA6D,CAAA;IAC7D,iFAA6D,CAAA;IAC7D,wFAAoE,CAAA;IACpE,4EAAwD,CAAA;IACxD,qGAAiF,CAAA;IACjF,wGAAoF,CAAA;IACpF,kFAA8D,CAAA;AAClE,CAAC,EAlBW,gBAAgB,KAAhB,gBAAgB,QAkB3B"}
|
|
@@ -44,6 +44,9 @@ const { Config, Logger } = ObjectDecorators;
|
|
|
44
44
|
export class BackgroundServiceManager {
|
|
45
45
|
constructor(objectFactory, classes) {
|
|
46
46
|
this.jobs = {};
|
|
47
|
+
// Tracks which scheduled services currently have a `run()` in flight, so a new scheduled tick that fires
|
|
48
|
+
// before the previous one finished can be skipped instead of starting an overlapping, concurrent run.
|
|
49
|
+
this.runningJobs = new Set();
|
|
47
50
|
this.services = {};
|
|
48
51
|
this.classes = classes;
|
|
49
52
|
this.objectFactory = objectFactory;
|
|
@@ -96,9 +99,24 @@ export class BackgroundServiceManager {
|
|
|
96
99
|
this.services[serviceName] = service;
|
|
97
100
|
// Initialize the service
|
|
98
101
|
await service.start();
|
|
99
|
-
// Schedule the service for background execution
|
|
102
|
+
// Schedule the service for background execution. Guard against overlapping runs: node-schedule
|
|
103
|
+
// fires on every tick regardless of whether the previous invocation's `run()` has settled, so a
|
|
104
|
+
// service whose `run()` occasionally outlasts its own interval would otherwise get a second,
|
|
105
|
+
// concurrent invocation racing the first against the same external resources/DB writes.
|
|
100
106
|
if (service.schedule) {
|
|
101
|
-
const job = schedule.scheduleJob(service.schedule,
|
|
107
|
+
const job = schedule.scheduleJob(service.schedule, async () => {
|
|
108
|
+
if (this.runningJobs.has(serviceName)) {
|
|
109
|
+
this.logger.warn(`Background service '${serviceName}' is still running from a previous scheduled tick; skipping this invocation to avoid an overlapping run.`);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.runningJobs.add(serviceName);
|
|
113
|
+
try {
|
|
114
|
+
await service.run();
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
this.runningJobs.delete(serviceName);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
102
120
|
job.on("error", (err) => {
|
|
103
121
|
this.logger.error(`Background service '${serviceName}' failed during a scheduled run.`);
|
|
104
122
|
this.logger.debug(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundServiceManager.js","sourceRoot":"","sources":["../../src/BackgroundServiceManager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,wBAAwB;
|
|
1
|
+
{"version":3,"file":"BackgroundServiceManager.js","sourceRoot":"","sources":["../../src/BackgroundServiceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,9 @@ export class EventListenerManager {
|
|
|
22
22
|
constructor(objectFactory, redis) {
|
|
23
23
|
this.channels = [];
|
|
24
24
|
this.handlers = new Map();
|
|
25
|
+
// Compiled RegExp per registered handler-type key, populated lazily in onEvent() and reused across every
|
|
26
|
+
// dispatch — avoids recompiling a pattern from scratch for every incoming event.
|
|
27
|
+
this.typePatterns = new Map();
|
|
25
28
|
this.objectFactory = objectFactory;
|
|
26
29
|
this.redis = redis;
|
|
27
30
|
}
|
|
@@ -75,17 +78,27 @@ export class EventListenerManager {
|
|
|
75
78
|
async destroy() {
|
|
76
79
|
await this.redis.unsubscribe(...this.channels);
|
|
77
80
|
this.handlers.clear();
|
|
81
|
+
this.typePatterns.clear();
|
|
78
82
|
}
|
|
79
83
|
/**
|
|
80
84
|
* Handler function for events that arrive from redis.
|
|
81
85
|
*/
|
|
82
86
|
onEvent(evt) {
|
|
87
|
+
if (!evt || typeof evt.type !== "string") {
|
|
88
|
+
this.logger.error("EventManager: Received event with no valid type; ignoring.");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
83
91
|
// The registered event types can be regular expression patterns so we
|
|
84
92
|
// need to test each one against our type in order to idenity which
|
|
85
93
|
// handlers to send to.
|
|
86
94
|
for (const entry of this.handlers.entries()) {
|
|
87
95
|
// We'll perform regex comparisons with case-insentivity to make it easier
|
|
88
|
-
|
|
96
|
+
let pattern = this.typePatterns.get(entry[0]);
|
|
97
|
+
if (!pattern) {
|
|
98
|
+
pattern = new RegExp(entry[0], "i");
|
|
99
|
+
this.typePatterns.set(entry[0], pattern);
|
|
100
|
+
}
|
|
101
|
+
if (evt.type.match(pattern)) {
|
|
89
102
|
const handlers = entry[1];
|
|
90
103
|
if (handlers) {
|
|
91
104
|
for (const handler of handlers) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventListenerManager.js","sourceRoot":"","sources":["../../src/EventListenerManager.ts"],"names":[],"mappings":";;;;;;;;;AAIA,OAAO,EAAS,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"EventListenerManager.js","sourceRoot":"","sources":["../../src/EventListenerManager.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/Server.js
CHANGED
|
@@ -213,6 +213,7 @@ export class Server {
|
|
|
213
213
|
}
|
|
214
214
|
catch (e) {
|
|
215
215
|
reject(`[server-core|Server.ts]**ERR @ start, loading service classes: ${e}`);
|
|
216
|
+
return;
|
|
216
217
|
}
|
|
217
218
|
// Register all found classes with the object factory
|
|
218
219
|
for (const [name, clazz] of this.classLoader.getClasses().entries()) {
|
|
@@ -370,9 +371,6 @@ export class Server {
|
|
|
370
371
|
this.objectFactory.instances.forEach((obj) => {
|
|
371
372
|
this.eventListenerManager?.register(obj);
|
|
372
373
|
});
|
|
373
|
-
allRoutes.forEach((obj) => {
|
|
374
|
-
this.eventListenerManager?.register(obj);
|
|
375
|
-
});
|
|
376
374
|
}
|
|
377
375
|
}
|
|
378
376
|
// Perform automatic discovery of all other routes
|
|
@@ -387,6 +385,9 @@ export class Server {
|
|
|
387
385
|
const route = await this.objectFactory.newInstance(fqn, { name: "default" });
|
|
388
386
|
await this.routeUtils.registerRoute(this.app, route);
|
|
389
387
|
allRoutes.push(route);
|
|
388
|
+
// Routes are instantiated after the EventListenerManager registration pass above,
|
|
389
|
+
// so any `@OnEvent` handlers they declare must be registered here instead.
|
|
390
|
+
this.eventListenerManager?.register(route);
|
|
390
391
|
}
|
|
391
392
|
}
|
|
392
393
|
}
|
package/dist/lib/Server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { JWTUtils, ObjectDecorators } from "@rapidrest/core";
|
|
|
14
14
|
import dayjs from "dayjs";
|
|
15
15
|
import { createRequire } from "module";
|
|
16
16
|
import { NetUtils } from "../NetUtils.js";
|
|
17
|
-
const { Config, Init } = ObjectDecorators;
|
|
17
|
+
const { Config, Init, Logger } = ObjectDecorators;
|
|
18
18
|
const _require = createRequire(process.cwd() + "/package.json");
|
|
19
19
|
const duration = _require("dayjs/plugin/duration");
|
|
20
20
|
dayjs.extend(duration);
|
|
@@ -63,6 +63,15 @@ export class JWTStrategy {
|
|
|
63
63
|
this._headerSchemeRegex = new RegExp("^" + this.options.headerScheme + "$", "i");
|
|
64
64
|
}
|
|
65
65
|
init() {
|
|
66
|
+
// Signed-cookie verification was never implemented (req.signedCookies is always `{}` in both HTTP
|
|
67
|
+
// adapters — see getAuthToken() below), so enabling this option silently disables cookie-based
|
|
68
|
+
// authentication entirely rather than adding the extra verification an operator would expect from the
|
|
69
|
+
// name. Warn loudly at startup instead of letting that be discovered as a confusing runtime auth failure.
|
|
70
|
+
if (this.options.cookieSecure) {
|
|
71
|
+
this.logger?.warn("JWTStrategyOptions.cookieSecure is enabled, but signed-cookie verification is not implemented. " +
|
|
72
|
+
"Cookie-based authentication is disabled while this option is set to true — set it to false " +
|
|
73
|
+
"to authenticate via the plain `jwt` cookie instead.");
|
|
74
|
+
}
|
|
66
75
|
// Defense-in-depth only: the underlying jsonwebtoken library already restricts verification to
|
|
67
76
|
// algorithms compatible with the configured key's type when `options.algorithms` is left unset, so
|
|
68
77
|
// this isn't currently exploitable. Pinning it explicitly for the common case of a plain symmetric
|
|
@@ -99,8 +108,8 @@ export class JWTStrategy {
|
|
|
99
108
|
const value = req.headers[this.options.headerKey];
|
|
100
109
|
const headers = Array.isArray(value) ? value : typeof value === "string" ? [value] : [];
|
|
101
110
|
// Loop through the headers looking for Authentication and our scheme
|
|
102
|
-
for (const header
|
|
103
|
-
const parts =
|
|
111
|
+
for (const header of headers) {
|
|
112
|
+
const parts = header.split(" ");
|
|
104
113
|
if (parts.length !== 2) {
|
|
105
114
|
continue;
|
|
106
115
|
}
|
|
@@ -108,12 +117,15 @@ export class JWTStrategy {
|
|
|
108
117
|
continue;
|
|
109
118
|
}
|
|
110
119
|
authToken = parts[1];
|
|
120
|
+
break;
|
|
111
121
|
}
|
|
112
122
|
}
|
|
113
123
|
// Check the cookie header — lowest precedence, so only consulted if neither the query parameter
|
|
114
124
|
// nor the header supplied a token above.
|
|
125
|
+
// TODO Decrypt the signed cookie — until this is implemented, req.signedCookies is always `{}` (see
|
|
126
|
+
// both HTTP adapters), so this branch never finds a token; init() warns at startup when cookieSecure
|
|
127
|
+
// is enabled so that's not a silent failure.
|
|
115
128
|
if (!authToken && this.options.cookieSecure && this.options.cookieName && req.signedCookies) {
|
|
116
|
-
// TODO Decrypt the signed cookie
|
|
117
129
|
const cookieToken = req.signedCookies[this.options.cookieName];
|
|
118
130
|
if (cookieToken) {
|
|
119
131
|
authToken = cookieToken;
|
|
@@ -196,6 +208,10 @@ __decorate([
|
|
|
196
208
|
Config("auth"),
|
|
197
209
|
__metadata("design:type", Object)
|
|
198
210
|
], JWTStrategy.prototype, "config", void 0);
|
|
211
|
+
__decorate([
|
|
212
|
+
Logger,
|
|
213
|
+
__metadata("design:type", Object)
|
|
214
|
+
], JWTStrategy.prototype, "logger", void 0);
|
|
199
215
|
__decorate([
|
|
200
216
|
Init,
|
|
201
217
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JWTStrategy.js","sourceRoot":"","sources":["../../../src/auth/JWTStrategy.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gFAAgF;AAChF,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAsD,MAAM,iBAAiB,CAAC;AAEjH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"JWTStrategy.js","sourceRoot":"","sources":["../../../src/auth/JWTStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,13 @@ export class ConnectionManager {
|
|
|
40
40
|
return `${config.protocol ? config.protocol : config.type}://${config.username && config.password ? `${config.username}:${config.password}@` : ""}${config.host}${config.port ? `:${config.port}` : ""}${config.database ? `/${config.database}` : ""}${config.options ? `?${config.options}` : ""}`;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Redacts the userinfo (credentials) portion of a connection URI for safe logging, regardless of
|
|
45
|
+
* whether the URI came from a `url` config field or was built from separate username/password fields.
|
|
46
|
+
*/
|
|
47
|
+
redactUri(uri) {
|
|
48
|
+
return uri.replace(/:\/\/[^@/]+@/, "://****@");
|
|
49
|
+
}
|
|
43
50
|
/**
|
|
44
51
|
* Dynamically imports the given optional peer dependency, throwing a helpful error if it is not installed.
|
|
45
52
|
*
|
|
@@ -63,65 +70,77 @@ export class ConnectionManager {
|
|
|
63
70
|
*/
|
|
64
71
|
async connect(datastores, models) {
|
|
65
72
|
const processedModels = new Map();
|
|
66
|
-
|
|
73
|
+
const pending = [];
|
|
67
74
|
for (const name in datastores) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
pending.push(this.connectDatastore(name, datastores[name], models, processedModels));
|
|
76
|
+
}
|
|
77
|
+
await Promise.all(pending);
|
|
78
|
+
this.logger.info(`Successfully connected to all configured databases.`);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Establishes (or reconnects) a single configured datastore connection and stores it in `this.connections`.
|
|
82
|
+
*
|
|
83
|
+
* @param name The configured name of the datastore.
|
|
84
|
+
* @param datastore The datastore's configuration.
|
|
85
|
+
* @param models A map of model names and associated class definitions to establish database connections for.
|
|
86
|
+
* @param processedModels Tracks which datastore each model class has already been claimed as an entity for,
|
|
87
|
+
* shared across every concurrent call from `connect()` so a model claimed by two datastores is still caught.
|
|
88
|
+
*/
|
|
89
|
+
async connectDatastore(name, datastore, models, processedModels) {
|
|
90
|
+
// It's possible that the connection was already configured during a previous run. In that case we will
|
|
91
|
+
// attempt to reconnect instead of creating a new connection.
|
|
92
|
+
let connection = this.connections.get(name);
|
|
93
|
+
if (connection && isSqlDataSource(connection) && !connection.isInitialized) {
|
|
94
|
+
this.logger.info(`Reconnecting to database ${name}...`);
|
|
95
|
+
await connection.initialize();
|
|
96
|
+
}
|
|
97
|
+
if (!connection) {
|
|
98
|
+
datastore.name = name;
|
|
99
|
+
const url = this.buildConnectionUri(datastore);
|
|
100
|
+
this.logger.info(`Connecting to database ${name} [${this.redactUri(url)}]...`);
|
|
101
|
+
if (datastore.type === "redis") {
|
|
102
|
+
connection = new Redis(url);
|
|
75
103
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const clazz = models.get(className);
|
|
89
|
-
const ds = Reflect.getMetadata("rrst:datastore", clazz);
|
|
90
|
-
// Search for the associated datastore with the model via either config or @Model decorator
|
|
91
|
-
if (ds === name || (datastore.entities && datastore.entities.includes(className))) {
|
|
92
|
-
const processedDatastore = processedModels.get(clazz.name);
|
|
93
|
-
if (processedDatastore) {
|
|
94
|
-
throw new Error(`Model ${clazz.name} already defined as an entity for ${processedDatastore}`);
|
|
95
|
-
}
|
|
96
|
-
clazz.datastore = name;
|
|
97
|
-
entities.push(clazz);
|
|
98
|
-
processedModels.set(clazz.name, name);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (datastore.type === "mongodb" || datastore.type === "mongodb+srv") {
|
|
102
|
-
// Connect using the native MongoDB driver
|
|
103
|
-
const { MongoClient } = await this.importOptionalDependency("mongodb", name, datastore.type);
|
|
104
|
-
const client = new MongoClient(url, datastore.clientOptions);
|
|
105
|
-
await client.connect();
|
|
106
|
-
const db = client.db(datastore.database);
|
|
107
|
-
connection = new MongoConnection(name, client, db, entities);
|
|
108
|
-
// Perform structure synchronization when requested
|
|
109
|
-
if (datastore.synchronize) {
|
|
110
|
-
const schemaSync = new MongoSchemaSync(db, this.logger);
|
|
111
|
-
await schemaSync.synchronize(entities);
|
|
104
|
+
else {
|
|
105
|
+
// Make an array of all entities associated with this connection
|
|
106
|
+
const entities = [];
|
|
107
|
+
for (const className of models.keys()) {
|
|
108
|
+
// Get the class type
|
|
109
|
+
const clazz = models.get(className);
|
|
110
|
+
const ds = Reflect.getMetadata("rrst:datastore", clazz);
|
|
111
|
+
// Search for the associated datastore with the model via either config or @Model decorator
|
|
112
|
+
if (ds === name || (datastore.entities && datastore.entities.includes(className))) {
|
|
113
|
+
const processedDatastore = processedModels.get(clazz.name);
|
|
114
|
+
if (processedDatastore) {
|
|
115
|
+
throw new Error(`Model ${clazz.name} already defined as an entity for ${processedDatastore}`);
|
|
112
116
|
}
|
|
117
|
+
clazz.datastore = name;
|
|
118
|
+
entities.push(clazz);
|
|
119
|
+
processedModels.set(clazz.name, name);
|
|
113
120
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
121
|
+
}
|
|
122
|
+
if (datastore.type === "mongodb" || datastore.type === "mongodb+srv") {
|
|
123
|
+
// Connect using the native MongoDB driver
|
|
124
|
+
const { MongoClient } = await this.importOptionalDependency("mongodb", name, datastore.type);
|
|
125
|
+
const client = new MongoClient(url, datastore.clientOptions);
|
|
126
|
+
await client.connect();
|
|
127
|
+
const db = client.db(datastore.database);
|
|
128
|
+
connection = new MongoConnection(name, client, db, entities);
|
|
129
|
+
// Perform structure synchronization when requested
|
|
130
|
+
if (datastore.synchronize) {
|
|
131
|
+
const schemaSync = new MongoSchemaSync(db, this.logger);
|
|
132
|
+
await schemaSync.synchronize(entities);
|
|
119
133
|
}
|
|
120
134
|
}
|
|
135
|
+
else {
|
|
136
|
+
// Connect using TypeORM
|
|
137
|
+
await this.importOptionalDependency("typeorm", name, datastore.type);
|
|
138
|
+
const orm = await import("./TypeOrmSupport.js");
|
|
139
|
+
connection = await orm.connect(name, datastore, entities, url);
|
|
140
|
+
}
|
|
121
141
|
}
|
|
122
|
-
this.connections.set(name, connection);
|
|
123
142
|
}
|
|
124
|
-
this.
|
|
143
|
+
this.connections.set(name, connection);
|
|
125
144
|
}
|
|
126
145
|
/**
|
|
127
146
|
* Attempts to disconnect all active database connections.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionManager.js","sourceRoot":"","sources":["../../../src/database/ConnectionManager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gFAAgF;AAChF,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QACW,gBAAW,GAAsD,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ConnectionManager.js","sourceRoot":"","sources":["../../../src/database/ConnectionManager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gFAAgF;AAChF,kDAAkD;AAClD,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QACW,gBAAW,GAAsD,IAAI,GAAG,EAAE,CAAC;IA0KtF,CAAC;IAtKG;;OAEG;IACK,kBAAkB,CAAC,MAAW;QAClC,kEAAkE;QAClE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,GAAG,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzS,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,GAAW;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,wBAAwB,CAAC,GAAW,EAAE,aAAqB,EAAE,aAAqB;QAC5F,IAAI,CAAC;YACD,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACX,cAAc,aAAa,iBAAiB,aAAa,kDAAkD,GAAG,gCAAgC,GAAG,EAAE,CACtJ,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,UAAe,EAAE,MAAwB;QAC1D,MAAM,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;QAEvD,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,gBAAgB,CAC1B,IAAY,EACZ,SAAc,EACd,MAAwB,EACxB,eAAoC;QAEpC,uGAAuG;QACvG,6DAA6D;QAC7D,IAAI,UAAU,GAAqD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9F,IAAI,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAE,UAAyB,CAAC,aAAa,EAAE,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,KAAK,CAAC,CAAC;YACxD,MAAO,UAAyB,CAAC,UAAU,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;YACtB,MAAM,GAAG,GAAW,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE/E,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,UAAU,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,gEAAgE;gBAChE,MAAM,QAAQ,GAAU,EAAE,CAAC;gBAC3B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACpC,qBAAqB;oBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACpC,MAAM,EAAE,GAAW,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;oBAChE,2FAA2F;oBAC3F,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;wBAChF,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3D,IAAI,kBAAkB,EAAE,CAAC;4BACrB,MAAM,IAAI,KAAK,CACX,SAAS,KAAK,CAAC,IAAI,qCAAqC,kBAAkB,EAAE,CAC/E,CAAC;wBACN,CAAC;wBACD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;wBACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACrB,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC;gBAED,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACnE,0CAA0C;oBAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC7F,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;oBAC7D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;oBACvB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACzC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;oBAE7D,mDAAmD;oBACnD,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;wBACxB,MAAM,UAAU,GAAoB,IAAI,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBACzE,MAAM,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC3C,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,wBAAwB;oBACxB,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;oBAChD,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IAEU,AAAN,KAAK,CAAC,UAAU;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;oBAC/B,6EAA6E;oBAC7E,4EAA4E;oBAC5E,uEAAuE;oBACvE,mEAAmE;oBACnE,2EAA2E;oBAC3E,8BAA8B;oBAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;wBACxB,IAAI,CAAC,UAAU,EAAE,CAAC;oBACtB,CAAC;gBACL,CAAC;qBAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACjF,CAAC;CACJ;AAxKW;IADP,MAAM;;iDACa;AA8IP;IADZ,OAAO;;;;mDA0BP"}
|
|
@@ -118,14 +118,18 @@ export function Protect(classACL = {
|
|
|
118
118
|
],
|
|
119
119
|
}, recordACL = false) {
|
|
120
120
|
return function (target) {
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
// Clone rather than mutate the caller-supplied ACL: applying @Protect(sharedAcl) to more than one class
|
|
122
|
+
// without an explicit `uid` must not let a later class's default uid overwrite an earlier class's `uid`
|
|
123
|
+
// on the very same shared object (classACL is stored by reference on each decorated class).
|
|
124
|
+
const resolvedACL = { ...classACL };
|
|
125
|
+
if (!resolvedACL.uid || resolvedACL.uid === "<ClassName>") {
|
|
126
|
+
resolvedACL.uid = target.name;
|
|
123
127
|
}
|
|
124
|
-
Reflect.defineMetadata("rrst:classACL",
|
|
128
|
+
Reflect.defineMetadata("rrst:classACL", resolvedACL, target);
|
|
125
129
|
Object.defineProperty(target, "classACL", {
|
|
126
130
|
enumerable: true,
|
|
127
131
|
writable: false,
|
|
128
|
-
value:
|
|
132
|
+
value: resolvedACL,
|
|
129
133
|
});
|
|
130
134
|
Reflect.defineMetadata("rrst:recordACL", recordACL, target);
|
|
131
135
|
Object.defineProperty(target, "recordACL", {
|