@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.
Files changed (52) hide show
  1. package/README.md +45 -3
  2. package/dist/lib/ApiErrors.js +3 -1
  3. package/dist/lib/ApiErrors.js.map +1 -1
  4. package/dist/lib/BackgroundServiceManager.js +20 -2
  5. package/dist/lib/BackgroundServiceManager.js.map +1 -1
  6. package/dist/lib/EventListenerManager.js +14 -1
  7. package/dist/lib/EventListenerManager.js.map +1 -1
  8. package/dist/lib/Server.js +4 -3
  9. package/dist/lib/Server.js.map +1 -1
  10. package/dist/lib/auth/JWTStrategy.js +20 -4
  11. package/dist/lib/auth/JWTStrategy.js.map +1 -1
  12. package/dist/lib/database/ConnectionManager.js +70 -51
  13. package/dist/lib/database/ConnectionManager.js.map +1 -1
  14. package/dist/lib/decorators/ModelDecorators.js +8 -4
  15. package/dist/lib/decorators/ModelDecorators.js.map +1 -1
  16. package/dist/lib/decorators/RouteDecorators.js +8 -4
  17. package/dist/lib/decorators/RouteDecorators.js.map +1 -1
  18. package/dist/lib/http/MiddlewareChain.js +18 -6
  19. package/dist/lib/http/MiddlewareChain.js.map +1 -1
  20. package/dist/lib/http/bun/BunRouter.js +11 -2
  21. package/dist/lib/http/bun/BunRouter.js.map +1 -1
  22. package/dist/lib/http/uWS/Router.js +15 -4
  23. package/dist/lib/http/uWS/Router.js.map +1 -1
  24. package/dist/lib/models/ModelUtils.js +39 -16
  25. package/dist/lib/models/ModelUtils.js.map +1 -1
  26. package/dist/lib/models/RecoverableBaseEntity.js +5 -1
  27. package/dist/lib/models/RecoverableBaseEntity.js.map +1 -1
  28. package/dist/lib/models/RepoUtils.js +57 -30
  29. package/dist/lib/models/RepoUtils.js.map +1 -1
  30. package/dist/lib/routes/BaseAdminRoute.js +16 -5
  31. package/dist/lib/routes/BaseAdminRoute.js.map +1 -1
  32. package/dist/lib/routes/BasePushRoute.js +63 -26
  33. package/dist/lib/routes/BasePushRoute.js.map +1 -1
  34. package/dist/lib/routes/CRUDRoute.js +3 -3
  35. package/dist/lib/routes/CRUDRoute.js.map +1 -1
  36. package/dist/lib/routes/RouteUtils.js +32 -14
  37. package/dist/lib/routes/RouteUtils.js.map +1 -1
  38. package/dist/lib/security/ACLUtils.js +4 -0
  39. package/dist/lib/security/ACLUtils.js.map +1 -1
  40. package/dist/lib/security/BaseACLRoute.js +7 -7
  41. package/dist/lib/security/BaseACLRoute.js.map +1 -1
  42. package/dist/types/ApiErrors.d.ts +3 -1
  43. package/dist/types/BackgroundServiceManager.d.ts +1 -0
  44. package/dist/types/EventListenerManager.d.ts +1 -0
  45. package/dist/types/auth/JWTStrategy.d.ts +1 -0
  46. package/dist/types/database/ConnectionManager.d.ts +15 -0
  47. package/dist/types/http/MiddlewareChain.d.ts +8 -1
  48. package/dist/types/models/RecoverableBaseEntity.d.ts +3 -1
  49. package/dist/types/routes/BaseAdminRoute.d.ts +1 -1
  50. package/dist/types/routes/BasePushRoute.d.ts +10 -0
  51. package/dist/types/routes/RouteUtils.d.ts +5 -0
  52. package/package.json +2 -2
package/README.md CHANGED
@@ -4,16 +4,58 @@
4
4
  [![Coverage Status](https://coveralls.io/repos/github/rapidrest/service-core/badge.svg?branch=main)](https://coveralls.io/github/rapidrest/service-core?branch=main)
5
5
  [![npm version](https://img.shields.io/npm/v/@rapidrest/service-core)](https://www.npmjs.com/package/@rapidrest/service-core)
6
6
 
7
- Provides common functionality and utilities for RapidREST based REST API service projects.
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
- ## NPM
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
- ## Yarn
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).
@@ -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["AUTH_REQUIRES_ELEVATION"] = "api-103";
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,SAiBX;AAjBD,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,gDAAmC,CAAA;AACvC,CAAC,EAjBW,SAAS,KAAT,SAAS,QAiBpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBAiBX;AAjBD,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,kFAA8D,CAAA;AAClE,CAAC,EAjBW,gBAAgB,KAAhB,gBAAgB,QAiB3B"}
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, service.run.bind(service));
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":"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"}
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
- if (evt.type.match(new RegExp(entry[0], "i"))) {
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":"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"}
1
+ {"version":3,"file":"EventListenerManager.js","sourceRoot":"","sources":["../../src/EventListenerManager.ts"],"names":[],"mappings":"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"}
@@ -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
  }
@@ -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 in headers) {
103
- const parts = headers[header].split(" ");
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":"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"}
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
- // Go through each datastore in the configuration and attempt to make a connection
73
+ const pending = [];
67
74
  for (const name in datastores) {
68
- const datastore = datastores[name];
69
- // It's possible that the connection was already configured during a previous run. In that case we will
70
- // attempt to reconnect instead of creating a new connection.
71
- let connection = this.connections.get(name);
72
- if (connection && isSqlDataSource(connection) && !connection.isInitialized) {
73
- this.logger.info(`Reconnecting to database ${name}...`);
74
- await connection.initialize();
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
- if (!connection) {
77
- datastore.name = name;
78
- const url = this.buildConnectionUri(datastore);
79
- this.logger.info(`Connecting to database ${name} [${url.replace(datastore.username, "****").replace(datastore.password, "****")}]...`);
80
- if (datastore.type === "redis") {
81
- connection = new Redis(url);
82
- }
83
- else {
84
- // Make an array of all entities associated with this connection
85
- const entities = [];
86
- for (const className of models.keys()) {
87
- // Get the class type
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
- else {
115
- // Connect using TypeORM
116
- await this.importOptionalDependency("typeorm", name, datastore.type);
117
- const orm = await import("./TypeOrmSupport.js");
118
- connection = await orm.connect(name, datastore, entities, url);
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.logger.info(`Successfully connected to all configured databases.`);
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":"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"}
1
+ {"version":3,"file":"ConnectionManager.js","sourceRoot":"","sources":["../../../src/database/ConnectionManager.ts"],"names":[],"mappings":"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"}
@@ -118,14 +118,18 @@ export function Protect(classACL = {
118
118
  ],
119
119
  }, recordACL = false) {
120
120
  return function (target) {
121
- if (!classACL.uid || classACL.uid === "<ClassName>") {
122
- classACL.uid = target.name;
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", classACL, target);
128
+ Reflect.defineMetadata("rrst:classACL", resolvedACL, target);
125
129
  Object.defineProperty(target, "classACL", {
126
130
  enumerable: true,
127
131
  writable: false,
128
- value: classACL,
132
+ value: resolvedACL,
129
133
  });
130
134
  Reflect.defineMetadata("rrst:recordACL", recordACL, target);
131
135
  Object.defineProperty(target, "recordACL", {