@morojs/moro 1.8.3 → 1.8.5

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 (102) hide show
  1. package/dist/core/config/config-sources.js.map +1 -1
  2. package/dist/core/framework.d.ts +11 -0
  3. package/dist/core/framework.js +107 -36
  4. package/dist/core/framework.js.map +1 -1
  5. package/dist/core/graphql/core.js.map +1 -1
  6. package/dist/core/grpc/types.js.map +1 -1
  7. package/dist/core/http/http-server.js +18 -1
  8. package/dist/core/http/http-server.js.map +1 -1
  9. package/dist/core/http/http2-server.js +13 -0
  10. package/dist/core/http/http2-server.js.map +1 -1
  11. package/dist/core/http/moro-engine-server.js +13 -0
  12. package/dist/core/http/moro-engine-server.js.map +1 -1
  13. package/dist/core/http/uws-http-server.js +16 -1
  14. package/dist/core/http/uws-http-server.js.map +1 -1
  15. package/dist/core/mail/mail-adapter.js.map +1 -1
  16. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +5 -1
  17. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  18. package/dist/core/middleware/built-in/cloudwatch/index.d.ts +4 -0
  19. package/dist/core/middleware/built-in/cloudwatch/index.js +5 -0
  20. package/dist/core/middleware/built-in/cloudwatch/index.js.map +1 -0
  21. package/dist/core/middleware/built-in/cloudwatch/middleware.d.ts +31 -0
  22. package/dist/core/middleware/built-in/cloudwatch/middleware.js +52 -0
  23. package/dist/core/middleware/built-in/cloudwatch/middleware.js.map +1 -0
  24. package/dist/core/middleware/built-in/error-tracker/index.d.ts +3 -1
  25. package/dist/core/middleware/built-in/error-tracker/index.js +3 -2
  26. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
  27. package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +6 -3
  28. package/dist/core/middleware/built-in/error-tracker/middleware.js +18 -13
  29. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
  30. package/dist/core/middleware/built-in/index.d.ts +43 -7
  31. package/dist/core/middleware/built-in/index.js +37 -7
  32. package/dist/core/middleware/built-in/index.js.map +1 -1
  33. package/dist/core/middleware/built-in/performance-monitor/index.d.ts +3 -1
  34. package/dist/core/middleware/built-in/performance-monitor/index.js +3 -2
  35. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
  36. package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +3 -3
  37. package/dist/core/middleware/built-in/performance-monitor/middleware.js +19 -17
  38. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
  39. package/dist/core/middleware/built-in/prometheus/core.d.ts +27 -0
  40. package/dist/core/middleware/built-in/prometheus/core.js +0 -0
  41. package/dist/core/middleware/built-in/prometheus/core.js.map +1 -0
  42. package/dist/core/middleware/built-in/prometheus/index.d.ts +5 -0
  43. package/dist/core/middleware/built-in/prometheus/index.js +6 -0
  44. package/dist/core/middleware/built-in/prometheus/index.js.map +1 -0
  45. package/dist/core/middleware/built-in/prometheus/middleware.d.ts +15 -0
  46. package/dist/core/middleware/built-in/prometheus/middleware.js +30 -0
  47. package/dist/core/middleware/built-in/prometheus/middleware.js.map +1 -0
  48. package/dist/core/middleware/built-in/request-logger/index.d.ts +3 -1
  49. package/dist/core/middleware/built-in/request-logger/index.js +3 -2
  50. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
  51. package/dist/core/middleware/built-in/request-logger/middleware.d.ts +4 -4
  52. package/dist/core/middleware/built-in/request-logger/middleware.js +14 -12
  53. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
  54. package/dist/core/middleware/index.d.ts +3 -1
  55. package/dist/core/middleware/index.js +6 -1
  56. package/dist/core/middleware/index.js.map +1 -1
  57. package/dist/core/pooling/index.d.ts +3 -0
  58. package/dist/core/pooling/index.js +5 -0
  59. package/dist/core/pooling/index.js.map +1 -0
  60. package/dist/core/pooling/lru-cache.d.ts +32 -0
  61. package/dist/core/pooling/lru-cache.js +74 -0
  62. package/dist/core/pooling/lru-cache.js.map +1 -0
  63. package/dist/core/pooling/object-pool-manager.d.ts +3 -1
  64. package/dist/core/pooling/object-pool-manager.js +37 -140
  65. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  66. package/dist/core/pooling/object-pool.d.ts +42 -0
  67. package/dist/core/pooling/object-pool.js +78 -0
  68. package/dist/core/pooling/object-pool.js.map +1 -0
  69. package/dist/core/routing/create-router.js.map +1 -1
  70. package/dist/core/routing/path-matcher.js +1 -43
  71. package/dist/core/routing/path-matcher.js.map +1 -1
  72. package/dist/core/routing/unified-router.d.ts +2 -0
  73. package/dist/core/routing/unified-router.js +15 -0
  74. package/dist/core/routing/unified-router.js.map +1 -1
  75. package/dist/core/utilities/hooks.d.ts +5 -5
  76. package/dist/core/utilities/hooks.js +9 -6
  77. package/dist/core/utilities/hooks.js.map +1 -1
  78. package/dist/core/utilities/index.d.ts +0 -1
  79. package/dist/core/utilities/index.js +0 -2
  80. package/dist/core/utilities/index.js.map +1 -1
  81. package/dist/core/workers/facade.d.ts +20 -4
  82. package/dist/core/workers/facade.js +15 -7
  83. package/dist/core/workers/facade.js.map +1 -1
  84. package/dist/core/workers/worker-manager.d.ts +12 -0
  85. package/dist/core/workers/worker-manager.js +27 -0
  86. package/dist/core/workers/worker-manager.js.map +1 -1
  87. package/dist/core/workers/worker.d.ts +17 -1
  88. package/dist/core/workers/worker.js +28 -26
  89. package/dist/core/workers/worker.js.map +1 -1
  90. package/dist/index.d.ts +39 -2
  91. package/dist/index.js +14 -2
  92. package/dist/index.js.map +1 -1
  93. package/dist/moro.d.ts +1 -0
  94. package/dist/moro.js +82 -15
  95. package/dist/moro.js.map +1 -1
  96. package/dist/types/config.js.map +1 -1
  97. package/dist/types/core.d.ts +1 -0
  98. package/dist/types/core.js.map +1 -1
  99. package/dist/types/hooks.d.ts +2 -0
  100. package/dist/types/hooks.js.map +1 -1
  101. package/dist/types/module.js.map +1 -1
  102. package/package.json +3 -3
@@ -469,7 +469,9 @@ export class UWebSocketsHttpServer {
469
469
  // request through the full pipeline instead
470
470
  if (this.globalMiddleware.length !== 0 ||
471
471
  (this.hookManager &&
472
- (this.hookManager.hasHooks === undefined || this.hookManager.hasHooks('request')))) {
472
+ (this.hookManager.hasHooks === undefined ||
473
+ this.hookManager.hasHooks('request') ||
474
+ this.hookManager.hasHooks('response')))) {
473
475
  void this.handleRequest(req, res);
474
476
  return;
475
477
  }
@@ -660,6 +662,13 @@ export class UWebSocketsHttpServer {
660
662
  response: httpRes,
661
663
  });
662
664
  }
665
+ // Post-response hooks (session persistence, auth session refresh, CDN
666
+ // invalidation) run after the response is flushed, off the critical path.
667
+ if (hookManager && (hookManager.hasHooks === undefined || hookManager.hasHooks('response'))) {
668
+ httpRes.once('finish', () => {
669
+ void Promise.resolve(hookManager.execute('response', { request: httpReq, response: httpRes })).catch((error) => this.logger?.error?.(`Response hook error: ${error?.message || error}`, 'Hooks'));
670
+ });
671
+ }
663
672
  // Execute global middleware chain
664
673
  if (this.globalMiddleware.length > 0) {
665
674
  httpReq.materialize();
@@ -707,6 +716,12 @@ export class UWebSocketsHttpServer {
707
716
  return;
708
717
  }
709
718
  this.logger.error(`Request handling error: ${error instanceof Error ? error.message : String(error)}`, 'RequestError');
719
+ // Error hooks are observational: fire-and-forget so a slow or throwing
720
+ // observer can never delay or alter the error response.
721
+ const errorHooks = this.hookManager;
722
+ if (errorHooks && (errorHooks.hasHooks === undefined || errorHooks.hasHooks('error'))) {
723
+ void Promise.resolve(errorHooks.execute('error', { request: httpReq, response: httpRes, error })).catch((hookError) => this.logger?.error?.(`Error hook error: ${hookError?.message || hookError}`, 'Hooks'));
724
+ }
710
725
  // Send error response if not already sent
711
726
  if (!res.aborted) {
712
727
  try {