@rapidrest/service-core 2.0.0 → 2.1.1

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 (85) hide show
  1. package/dist/lib/BackgroundServiceManager.js +51 -9
  2. package/dist/lib/BackgroundServiceManager.js.map +1 -1
  3. package/dist/lib/EventListenerManager.js +35 -2
  4. package/dist/lib/EventListenerManager.js.map +1 -1
  5. package/dist/lib/NetUtils.js +215 -21
  6. package/dist/lib/NetUtils.js.map +1 -1
  7. package/dist/lib/ObjectFactory.js +7 -2
  8. package/dist/lib/ObjectFactory.js.map +1 -1
  9. package/dist/lib/RateLimiter.js.map +1 -1
  10. package/dist/lib/Server.js +121 -80
  11. package/dist/lib/Server.js.map +1 -1
  12. package/dist/lib/auth/AuthMiddleware.js +160 -100
  13. package/dist/lib/auth/AuthMiddleware.js.map +1 -1
  14. package/dist/lib/auth/JWTStrategy.js +6 -2
  15. package/dist/lib/auth/JWTStrategy.js.map +1 -1
  16. package/dist/lib/database/ConnectionManager.js +50 -2
  17. package/dist/lib/database/ConnectionManager.js.map +1 -1
  18. package/dist/lib/database/DatabaseErrors.js +88 -0
  19. package/dist/lib/database/DatabaseErrors.js.map +1 -0
  20. package/dist/lib/database/MongoRepository.js +31 -3
  21. package/dist/lib/database/MongoRepository.js.map +1 -1
  22. package/dist/lib/database/MongoSchemaSync.js +7 -1
  23. package/dist/lib/database/MongoSchemaSync.js.map +1 -1
  24. package/dist/lib/database/TypeOrmSupport.js +49 -15
  25. package/dist/lib/database/TypeOrmSupport.js.map +1 -1
  26. package/dist/lib/database/index.js +1 -0
  27. package/dist/lib/database/index.js.map +1 -1
  28. package/dist/lib/decorators/PersistenceDecorators.js +23 -0
  29. package/dist/lib/decorators/PersistenceDecorators.js.map +1 -1
  30. package/dist/lib/decorators/RouteDecorators.js +4 -2
  31. package/dist/lib/decorators/RouteDecorators.js.map +1 -1
  32. package/dist/lib/http/bun/BunRouter.js +119 -9
  33. package/dist/lib/http/bun/BunRouter.js.map +1 -1
  34. package/dist/lib/http/index.js +1 -0
  35. package/dist/lib/http/index.js.map +1 -1
  36. package/dist/lib/http/session/sessionMiddleware.js +62 -14
  37. package/dist/lib/http/session/sessionMiddleware.js.map +1 -1
  38. package/dist/lib/http/types.js +10 -1
  39. package/dist/lib/http/types.js.map +1 -1
  40. package/dist/lib/http/uWS/Adapters.js +31 -13
  41. package/dist/lib/http/uWS/Adapters.js.map +1 -1
  42. package/dist/lib/http/uWS/Router.js +80 -16
  43. package/dist/lib/http/uWS/Router.js.map +1 -1
  44. package/dist/lib/http/uWS/WebSocket.js +4 -2
  45. package/dist/lib/http/uWS/WebSocket.js.map +1 -1
  46. package/dist/lib/models/ModelUtils.js +255 -81
  47. package/dist/lib/models/ModelUtils.js.map +1 -1
  48. package/dist/lib/models/RepoUtils.js +863 -266
  49. package/dist/lib/models/RepoUtils.js.map +1 -1
  50. package/dist/lib/routes/BaseAdminRoute.js +5 -4
  51. package/dist/lib/routes/BaseAdminRoute.js.map +1 -1
  52. package/dist/lib/routes/BasePushRoute.js +104 -40
  53. package/dist/lib/routes/BasePushRoute.js.map +1 -1
  54. package/dist/lib/routes/CRUDRoute.js +31 -17
  55. package/dist/lib/routes/CRUDRoute.js.map +1 -1
  56. package/dist/lib/routes/RouteUtils.js +120 -29
  57. package/dist/lib/routes/RouteUtils.js.map +1 -1
  58. package/dist/lib/security/ACLUtils.js +170 -34
  59. package/dist/lib/security/ACLUtils.js.map +1 -1
  60. package/dist/types/BackgroundServiceManager.d.ts +6 -0
  61. package/dist/types/EventListenerManager.d.ts +4 -0
  62. package/dist/types/NetUtils.d.ts +65 -6
  63. package/dist/types/RateLimiter.d.ts +4 -3
  64. package/dist/types/Server.d.ts +33 -2
  65. package/dist/types/auth/AuthMiddleware.d.ts +35 -4
  66. package/dist/types/database/ConnectionManager.d.ts +18 -0
  67. package/dist/types/database/DatabaseErrors.d.ts +26 -0
  68. package/dist/types/database/MongoRepository.d.ts +21 -2
  69. package/dist/types/database/TypeOrmSupport.d.ts +11 -2
  70. package/dist/types/database/index.d.ts +1 -0
  71. package/dist/types/decorators/PersistenceDecorators.d.ts +31 -0
  72. package/dist/types/decorators/RouteDecorators.d.ts +4 -2
  73. package/dist/types/http/bun/BunRouter.d.ts +23 -2
  74. package/dist/types/http/index.d.ts +2 -1
  75. package/dist/types/http/session/sessionMiddleware.d.ts +14 -4
  76. package/dist/types/http/types.d.ts +40 -0
  77. package/dist/types/http/uWS/Adapters.d.ts +10 -1
  78. package/dist/types/http/uWS/Router.d.ts +15 -2
  79. package/dist/types/models/ModelUtils.d.ts +96 -1
  80. package/dist/types/models/RepoUtils.d.ts +240 -4
  81. package/dist/types/routes/BasePushRoute.d.ts +5 -0
  82. package/dist/types/routes/CRUDRoute.d.ts +10 -0
  83. package/dist/types/routes/RouteUtils.d.ts +37 -1
  84. package/dist/types/security/ACLUtils.d.ts +68 -7
  85. package/package.json +1 -1
@@ -18,6 +18,10 @@ import { DEFAULT_MAX_BODY_SIZE } from "./http/uWS/Adapters.js";
18
18
  import { isBunRuntime } from "./http/RuntimeDetect.js";
19
19
  import { SessionManager } from "./http/session/SessionManager.js";
20
20
  import { createSessionMiddleware } from "./http/session/sessionMiddleware.js";
21
+ /** The metrics label used for every request that didn't match a registered application route. */
22
+ export const UNMATCHED_ROUTE_LABEL = "<unmatched>";
23
+ /** Default time `Server.stop()` waits for in-flight requests to finish, in milliseconds (`shutdown:drain_timeout`). */
24
+ export const DEFAULT_DRAIN_TIMEOUT_MS = 10000;
21
25
  /**
22
26
  * Provides an HTTP server utilizing uWebSockets.js. The server automatically registers all routes, and
23
27
  * establishes database connections for all configured data stores. Additionally provides automatic authentication
@@ -134,19 +138,22 @@ export class Server {
134
138
  ///////////////////////////////////////////////////////////////////////////
135
139
  // METRICS VARIABLES
136
140
  ///////////////////////////////////////////////////////////////////////////
141
+ // The `path` label of the request metrics is the matched route pattern (e.g. `/items/:id`), or
142
+ // `UNMATCHED_ROUTE_LABEL` for a request no route matched - never the raw request path, which a client controls and
143
+ // which would create a new, never-released time series per distinct URL.
137
144
  this.metricRequestPath = new prom.Counter({
138
145
  name: "request_path",
139
- help: "A acount of the number of handled requests by the requested path.",
146
+ help: "A count of the number of handled requests by the matched route pattern.",
140
147
  labelNames: ["path"],
141
148
  });
142
149
  this.metricRequestStatus = new prom.Counter({
143
150
  name: "request_status",
144
- help: "A count of the resulting status code of handled requests by the requested method and path.",
151
+ help: "A count of the resulting status code of handled requests by the requested method and matched route pattern.",
145
152
  labelNames: ["method", "path", "statusCode"],
146
153
  });
147
154
  this.metricRequestTime = new prom.Histogram({
148
155
  name: "request_time_milliseconds",
149
- help: "A histogram of the response time of handled requests by the requested method, path and code.",
156
+ help: "A histogram of the response time of handled requests by the requested method, matched route pattern and code.",
150
157
  labelNames: ["method", "path", "statusCode"],
151
158
  buckets: [5, 10, 25, 50, 100, 250, 500, 1000, 5000],
152
159
  });
@@ -303,7 +310,7 @@ export class Server {
303
310
  if (allowCredentials) {
304
311
  res.setHeader("access-control-allow-credentials", "true");
305
312
  }
306
- res.setHeader("access-control-allow-methods", "GET,HEAD,OPTIONS,PUT,POST,DELETE");
313
+ res.setHeader("access-control-allow-methods", "GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE");
307
314
  res.setHeader("access-control-allow-headers", corsAllowedHeaders);
308
315
  }
309
316
  // A real, app-registered `OPTIONS` route (e.g. an EAS route's `MS-ASProtocolVersions`
@@ -396,80 +403,8 @@ export class Server {
396
403
  }
397
404
  // Error handling. NOTE: Must be defined last.
398
405
  // 4-param signature signals error handler to runChain
399
- this.app.use(((err, _req, res, next) => {
400
- if (err) {
401
- // Only log 500-level errors. 400-level errors are the client's fault and
402
- // we don't need to spam the logs because of that.
403
- if (!(err instanceof ApiError) || err.status >= 500) {
404
- this.logger.error(err);
405
- }
406
- else {
407
- this.logger.debug(err);
408
- }
409
- if (typeof err === "string") {
410
- if (!res.headersSent) {
411
- res.status(500);
412
- }
413
- res.json({ message: "Internal Server Error", status: 500 });
414
- }
415
- else if (err instanceof BulkError) {
416
- const errs = err.errors;
417
- if (err.stack && process.env.NODE_ENV !== "development") {
418
- for (const err of errs) {
419
- if (err) {
420
- delete err.stack;
421
- }
422
- }
423
- }
424
- if (!res.headersSent) {
425
- res.status(err.status);
426
- }
427
- // `Error.message` (and `ApiError`'s own `message`) is non-enumerable, so
428
- // `JSON.stringify` silently drops it unless each error is reconstructed with it
429
- // as an explicit own property first — the same fix the single-error branch below
430
- // already applies.
431
- res.json(errs.map((e) => (e ? { ...e, message: e.message } : e)));
432
- }
433
- else {
434
- if (!(err instanceof ApiError)) {
435
- const tmp = new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
436
- tmp.stack = err.stack;
437
- err = tmp;
438
- }
439
- // leverage NODE_ENV or another config?
440
- if (err.stack && process.env.NODE_ENV !== "development") {
441
- delete err.stack;
442
- }
443
- if (!res.headersSent) {
444
- res.status(err.status);
445
- }
446
- const formattedError = {
447
- ...err,
448
- // https://stackoverflow.com/a/25245824
449
- level: err.level ? err.level.replace(/\[.*?m/g, "") : undefined, // eslint-disable-line no-control-regex
450
- message: err.message,
451
- };
452
- res.json(formattedError);
453
- }
454
- this.metricFailedRequests.inc(1);
455
- }
456
- return next();
457
- }));
458
- this.app.use((req, res) => {
459
- const start = req._metricsStart;
460
- if (start !== undefined) {
461
- this.metricRequestTime
462
- .labels(req.method, req.path, String(res.statusCode))
463
- .observe(Date.now() - start);
464
- }
465
- this.metricRequestPath.labels(req.path).inc();
466
- this.metricRequestStatus.labels(req.method, req.path, String(res.statusCode)).inc();
467
- this.metricTotalRequests.inc(1);
468
- this.metricCompletedRequests.inc(1);
469
- if (!res.writableEnded) {
470
- res.send();
471
- }
472
- });
406
+ this.app.use(((err, req, res, next) => this.handleError(err, req, res, next)));
407
+ this.app.use((req, res) => this.recordRequestMetrics(req, res));
473
408
  await this.postStart();
474
409
  // IPv6: set listen_host to "::" in config; default binds to all IPv4 interfaces
475
410
  const listenHost = this.config.get("listen_host") || "0.0.0.0";
@@ -484,7 +419,99 @@ export class Server {
484
419
  });
485
420
  }
486
421
  /**
487
- * Stops the HTTP listen server.
422
+ * Serializes one error for a client response. An `ApiError` keeps its own fields (`code`, `status`, `message`,
423
+ * ...). Anything else, such as a raw database driver error carrying the failed SQL `query` and its `parameters`,
424
+ * is replaced by the generic internal error so none of its details reach the client. Stack traces are never
425
+ * included.
426
+ *
427
+ * @param err The error to serialize.
428
+ */
429
+ serializeError(err) {
430
+ if (!(err instanceof ApiError)) {
431
+ return { code: ApiErrors.INTERNAL_ERROR, status: 500, message: ApiErrorMessages.INTERNAL_ERROR };
432
+ }
433
+ const result = {
434
+ ...err,
435
+ // https://stackoverflow.com/a/25245824
436
+ level: err.level ? err.level.replace(/\[.*?m/g, "") : undefined,
437
+ // `Error.message` (and `ApiError`'s own `message`) is non-enumerable, so `JSON.stringify` silently drops
438
+ // it unless it is copied as an explicit own property.
439
+ message: err.message,
440
+ };
441
+ delete result.stack;
442
+ return result;
443
+ }
444
+ /**
445
+ * The final error handling middleware. Logs the error and sends it to the client as JSON (see `serializeError()`).
446
+ */
447
+ handleError(err, _req, res, next) {
448
+ if (err) {
449
+ // Only log 500-level errors. 400-level errors are the client's fault and
450
+ // we don't need to spam the logs because of that.
451
+ if (!(err instanceof ApiError) || err.status >= 500) {
452
+ this.logger.error(err);
453
+ }
454
+ else {
455
+ this.logger.debug(err);
456
+ }
457
+ if (typeof err === "string") {
458
+ if (!res.headersSent) {
459
+ res.status(500);
460
+ }
461
+ res.json({ message: "Internal Server Error", status: 500 });
462
+ }
463
+ else if (err instanceof BulkError) {
464
+ // Log the individual non-ApiError failures, since only a generic error is sent for them.
465
+ for (const item of err.errors) {
466
+ if (item && !(item instanceof ApiError)) {
467
+ this.logger.error(item);
468
+ }
469
+ }
470
+ if (!res.headersSent) {
471
+ res.status(err.status);
472
+ }
473
+ res.json(err.errors.map((e) => (e ? this.serializeError(e) : e)));
474
+ }
475
+ else {
476
+ if (!res.headersSent) {
477
+ res.status(err instanceof ApiError ? err.status : 500);
478
+ }
479
+ res.json(this.serializeError(err));
480
+ }
481
+ this.metricFailedRequests.inc(1);
482
+ }
483
+ return next();
484
+ }
485
+ /**
486
+ * The final middleware of every request: records the request metrics and ends the response if nothing else did.
487
+ * Metrics are labeled with `req.routePattern` rather than the raw path, so their cardinality is bounded by the
488
+ * application's routes.
489
+ */
490
+ recordRequestMetrics(req, res) {
491
+ const route = req.routePattern ?? UNMATCHED_ROUTE_LABEL;
492
+ const statusCode = String(res.statusCode);
493
+ const start = req._metricsStart;
494
+ if (start !== undefined) {
495
+ this.metricRequestTime.labels(req.method, route, statusCode).observe(Date.now() - start);
496
+ }
497
+ this.metricRequestPath.labels(route).inc();
498
+ this.metricRequestStatus.labels(req.method, route, statusCode).inc();
499
+ this.metricTotalRequests.inc(1);
500
+ this.metricCompletedRequests.inc(1);
501
+ if (!res.writableEnded) {
502
+ res.send();
503
+ }
504
+ }
505
+ /**
506
+ * Stops the server gracefully:
507
+ *
508
+ * 1. Stops all background services.
509
+ * 2. Stops accepting new connections and waits up to `shutdown:drain_timeout` milliseconds (default 10000) for
510
+ * in-flight requests to finish, then closes the remaining keep-alive and WebSocket connections.
511
+ * 3. Destroys the event listener manager, closing its redis subscription.
512
+ * 4. Closes all database connections.
513
+ *
514
+ * The whole sequence is bounded by a 30 second watchdog.
488
515
  */
489
516
  stop() {
490
517
  return new Promise(async (resolve, reject) => {
@@ -500,7 +527,21 @@ export class Server {
500
527
  this.logger.info("Stopping server...");
501
528
  try {
502
529
  if (this.app?.isListening) {
503
- this.app.close();
530
+ if (typeof this.app.shutdown === "function") {
531
+ const drainTimeout = Number(this.config?.get("shutdown:drain_timeout") ?? DEFAULT_DRAIN_TIMEOUT_MS);
532
+ this.logger.info("Waiting for in-flight requests to finish...");
533
+ await this.app.shutdown(Number.isFinite(drainTimeout) ? drainTimeout : DEFAULT_DRAIN_TIMEOUT_MS);
534
+ }
535
+ else {
536
+ this.app.close();
537
+ }
538
+ }
539
+ if (this.eventListenerManager) {
540
+ this.logger.info("Stopping event manager...");
541
+ // Through the object factory, so the destroyed instance is also dropped from it and a restart
542
+ // creates a new one instead of reusing this one's closed redis client.
543
+ await this.objectFactory.destroy(this.eventListenerManager);
544
+ this.eventListenerManager = undefined;
504
545
  }
505
546
  this.logger.info("Closing database connections...");
506
547
  await this.connectionManager?.disconnect();
@@ -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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"}