@spinajs/http 2.0.476 → 2.0.477

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 (103) hide show
  1. package/lib/cjs/cache.d.ts +9 -0
  2. package/lib/cjs/cache.d.ts.map +1 -1
  3. package/lib/cjs/cache.js +55 -0
  4. package/lib/cjs/cache.js.map +1 -1
  5. package/lib/cjs/controllers.d.ts +33 -3
  6. package/lib/cjs/controllers.d.ts.map +1 -1
  7. package/lib/cjs/controllers.js +97 -70
  8. package/lib/cjs/controllers.js.map +1 -1
  9. package/lib/cjs/decorators.d.ts.map +1 -1
  10. package/lib/cjs/decorators.js +55 -0
  11. package/lib/cjs/decorators.js.map +1 -1
  12. package/lib/cjs/index.d.ts +7 -0
  13. package/lib/cjs/index.d.ts.map +1 -1
  14. package/lib/cjs/index.js +7 -0
  15. package/lib/cjs/index.js.map +1 -1
  16. package/lib/cjs/interfaces.d.ts +27 -1
  17. package/lib/cjs/interfaces.d.ts.map +1 -1
  18. package/lib/cjs/interfaces.js.map +1 -1
  19. package/lib/cjs/middlewares/AccessLog.d.ts +23 -0
  20. package/lib/cjs/middlewares/AccessLog.d.ts.map +1 -0
  21. package/lib/cjs/middlewares/AccessLog.js +73 -0
  22. package/lib/cjs/middlewares/AccessLog.js.map +1 -0
  23. package/lib/cjs/middlewares/Compression.d.ts +21 -0
  24. package/lib/cjs/middlewares/Compression.d.ts.map +1 -0
  25. package/lib/cjs/middlewares/Compression.js +62 -0
  26. package/lib/cjs/middlewares/Compression.js.map +1 -0
  27. package/lib/cjs/middlewares/Cors.d.ts +25 -0
  28. package/lib/cjs/middlewares/Cors.d.ts.map +1 -0
  29. package/lib/cjs/middlewares/Cors.js +81 -0
  30. package/lib/cjs/middlewares/Cors.js.map +1 -0
  31. package/lib/cjs/middlewares/ErrorHandler.d.ts +17 -0
  32. package/lib/cjs/middlewares/ErrorHandler.d.ts.map +1 -0
  33. package/lib/cjs/middlewares/ErrorHandler.js +42 -0
  34. package/lib/cjs/middlewares/ErrorHandler.js.map +1 -0
  35. package/lib/cjs/middlewares/NotFound.d.ts +18 -0
  36. package/lib/cjs/middlewares/NotFound.d.ts.map +1 -0
  37. package/lib/cjs/middlewares/NotFound.js +48 -0
  38. package/lib/cjs/middlewares/NotFound.js.map +1 -0
  39. package/lib/cjs/middlewares/ServerTiming.d.ts +25 -0
  40. package/lib/cjs/middlewares/ServerTiming.d.ts.map +1 -0
  41. package/lib/cjs/middlewares/ServerTiming.js +78 -0
  42. package/lib/cjs/middlewares/ServerTiming.js.map +1 -0
  43. package/lib/cjs/middlewares/SlowRequestWarning.d.ts +20 -0
  44. package/lib/cjs/middlewares/SlowRequestWarning.d.ts.map +1 -0
  45. package/lib/cjs/middlewares/SlowRequestWarning.js +74 -0
  46. package/lib/cjs/middlewares/SlowRequestWarning.js.map +1 -0
  47. package/lib/cjs/server.d.ts +7 -0
  48. package/lib/cjs/server.d.ts.map +1 -1
  49. package/lib/cjs/server.js +9 -24
  50. package/lib/cjs/server.js.map +1 -1
  51. package/lib/mjs/cache.d.ts +9 -0
  52. package/lib/mjs/cache.d.ts.map +1 -1
  53. package/lib/mjs/cache.js +55 -0
  54. package/lib/mjs/cache.js.map +1 -1
  55. package/lib/mjs/controllers.d.ts +33 -3
  56. package/lib/mjs/controllers.d.ts.map +1 -1
  57. package/lib/mjs/controllers.js +99 -39
  58. package/lib/mjs/controllers.js.map +1 -1
  59. package/lib/mjs/decorators.d.ts.map +1 -1
  60. package/lib/mjs/decorators.js +55 -0
  61. package/lib/mjs/decorators.js.map +1 -1
  62. package/lib/mjs/index.d.ts +7 -0
  63. package/lib/mjs/index.d.ts.map +1 -1
  64. package/lib/mjs/index.js +7 -0
  65. package/lib/mjs/index.js.map +1 -1
  66. package/lib/mjs/interfaces.d.ts +27 -1
  67. package/lib/mjs/interfaces.d.ts.map +1 -1
  68. package/lib/mjs/interfaces.js.map +1 -1
  69. package/lib/mjs/middlewares/AccessLog.d.ts +23 -0
  70. package/lib/mjs/middlewares/AccessLog.d.ts.map +1 -0
  71. package/lib/mjs/middlewares/AccessLog.js +70 -0
  72. package/lib/mjs/middlewares/AccessLog.js.map +1 -0
  73. package/lib/mjs/middlewares/Compression.d.ts +21 -0
  74. package/lib/mjs/middlewares/Compression.d.ts.map +1 -0
  75. package/lib/mjs/middlewares/Compression.js +56 -0
  76. package/lib/mjs/middlewares/Compression.js.map +1 -0
  77. package/lib/mjs/middlewares/Cors.d.ts +25 -0
  78. package/lib/mjs/middlewares/Cors.d.ts.map +1 -0
  79. package/lib/mjs/middlewares/Cors.js +75 -0
  80. package/lib/mjs/middlewares/Cors.js.map +1 -0
  81. package/lib/mjs/middlewares/ErrorHandler.d.ts +17 -0
  82. package/lib/mjs/middlewares/ErrorHandler.d.ts.map +1 -0
  83. package/lib/mjs/middlewares/ErrorHandler.js +39 -0
  84. package/lib/mjs/middlewares/ErrorHandler.js.map +1 -0
  85. package/lib/mjs/middlewares/NotFound.d.ts +18 -0
  86. package/lib/mjs/middlewares/NotFound.d.ts.map +1 -0
  87. package/lib/mjs/middlewares/NotFound.js +45 -0
  88. package/lib/mjs/middlewares/NotFound.js.map +1 -0
  89. package/lib/mjs/middlewares/ServerTiming.d.ts +25 -0
  90. package/lib/mjs/middlewares/ServerTiming.d.ts.map +1 -0
  91. package/lib/mjs/middlewares/ServerTiming.js +75 -0
  92. package/lib/mjs/middlewares/ServerTiming.js.map +1 -0
  93. package/lib/mjs/middlewares/SlowRequestWarning.d.ts +20 -0
  94. package/lib/mjs/middlewares/SlowRequestWarning.d.ts.map +1 -0
  95. package/lib/mjs/middlewares/SlowRequestWarning.js +71 -0
  96. package/lib/mjs/middlewares/SlowRequestWarning.js.map +1 -0
  97. package/lib/mjs/server.d.ts +7 -0
  98. package/lib/mjs/server.d.ts.map +1 -1
  99. package/lib/mjs/server.js +9 -24
  100. package/lib/mjs/server.js.map +1 -1
  101. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  102. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  103. package/package.json +11 -11
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ErrorHandlerMiddleware = void 0;
13
+ const di_1 = require("@spinajs/di");
14
+ const interfaces_js_1 = require("../interfaces.js");
15
+ const error_js_1 = require("../error.js");
16
+ /**
17
+ * Last-resort error handler. Wraps the existing `__handle_error__` factory
18
+ * (which produces a 4-arg Express error middleware that maps errors to
19
+ * configured HTTP responses) into the standard ServerMiddleware lifecycle.
20
+ *
21
+ * Order MIN_SAFE_INTEGER places it at the very tail of the Express stack
22
+ * after `HttpServer.start()` reverses by Order — exactly where Express
23
+ * expects error middleware to live.
24
+ */
25
+ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware extends interfaces_js_1.ServerMiddleware {
26
+ constructor() {
27
+ super();
28
+ this.Order = Number.MIN_SAFE_INTEGER - 1;
29
+ }
30
+ before() {
31
+ return null;
32
+ }
33
+ after() {
34
+ return (0, error_js_1.__handle_error__)();
35
+ }
36
+ };
37
+ exports.ErrorHandlerMiddleware = ErrorHandlerMiddleware;
38
+ exports.ErrorHandlerMiddleware = ErrorHandlerMiddleware = __decorate([
39
+ (0, di_1.Injectable)(interfaces_js_1.ServerMiddleware),
40
+ __metadata("design:paramtypes", [])
41
+ ], ErrorHandlerMiddleware);
42
+ //# sourceMappingURL=ErrorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../../../src/middlewares/ErrorHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oCAAyC;AAEzC,oDAAoD;AACpD,0CAA+C;AAE/C;;;;;;;;GAQG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,gCAAgB;IAC1D;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,OAAO,IAAA,2BAAgB,GAAE,CAAC;IAC5B,CAAC;CACF,CAAA;AAbY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,eAAU,EAAC,gCAAgB,CAAC;;GAChB,sBAAsB,CAalC"}
@@ -0,0 +1,18 @@
1
+ import * as express from 'express';
2
+ import { ServerMiddleware } from '../interfaces.js';
3
+ /**
4
+ * Catches requests that no controller route matched and turns them into a
5
+ * standard ResourceNotFound error so {@link ErrorHandlerMiddleware} can
6
+ * produce a proper HTTP response.
7
+ *
8
+ * Registered as a normal ServerMiddleware so it participates in the
9
+ * established lifecycle (HttpServer.start() reverses by Order and applies
10
+ * after()). Its Order is one step above MIN_SAFE_INTEGER so it lands at the
11
+ * Express stack tail, just before the error handler.
12
+ */
13
+ export declare class NotFoundMiddleware extends ServerMiddleware {
14
+ constructor();
15
+ before(): null;
16
+ after(): (req: express.Request, res: express.Response, next: express.NextFunction) => void;
17
+ }
18
+ //# sourceMappingURL=NotFound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotFound.d.ts","sourceRoot":"","sources":["../../../src/middlewares/NotFound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;GASG;AACH,qBACa,kBAAmB,SAAQ,gBAAgB;;IAS/C,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI;CAKlG"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NotFoundMiddleware = void 0;
13
+ const di_1 = require("@spinajs/di");
14
+ const exceptions_1 = require("@spinajs/exceptions");
15
+ const interfaces_js_1 = require("../interfaces.js");
16
+ /**
17
+ * Catches requests that no controller route matched and turns them into a
18
+ * standard ResourceNotFound error so {@link ErrorHandlerMiddleware} can
19
+ * produce a proper HTTP response.
20
+ *
21
+ * Registered as a normal ServerMiddleware so it participates in the
22
+ * established lifecycle (HttpServer.start() reverses by Order and applies
23
+ * after()). Its Order is one step above MIN_SAFE_INTEGER so it lands at the
24
+ * Express stack tail, just before the error handler.
25
+ */
26
+ let NotFoundMiddleware = class NotFoundMiddleware extends interfaces_js_1.ServerMiddleware {
27
+ constructor() {
28
+ super();
29
+ // Reverse-iteration over after() means lowest Order runs LAST and ends up
30
+ // at the Express stack tail. We want NotFound right before ErrorHandler
31
+ // (which uses MIN_SAFE_INTEGER), so we sit one step above.
32
+ this.Order = Number.MIN_SAFE_INTEGER;
33
+ }
34
+ before() {
35
+ return null;
36
+ }
37
+ after() {
38
+ return (req, _res, next) => {
39
+ next(new exceptions_1.ResourceNotFound(`Route not found: ${req.method} ${req.originalUrl}`));
40
+ };
41
+ }
42
+ };
43
+ exports.NotFoundMiddleware = NotFoundMiddleware;
44
+ exports.NotFoundMiddleware = NotFoundMiddleware = __decorate([
45
+ (0, di_1.Injectable)(interfaces_js_1.ServerMiddleware),
46
+ __metadata("design:paramtypes", [])
47
+ ], NotFoundMiddleware);
48
+ //# sourceMappingURL=NotFound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotFound.js","sourceRoot":"","sources":["../../../src/middlewares/NotFound.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oCAAyC;AACzC,oDAAuD;AAEvD,oDAAoD;AAEpD;;;;;;;;;GASG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,gCAAgB;IACtD;QACE,KAAK,EAAE,CAAC;QACR,0EAA0E;QAC1E,wEAAwE;QACxE,2DAA2D;QAC3D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACvC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,IAAI,6BAAgB,CAAC,oBAAoB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAU,EAAC,gCAAgB,CAAC;;GAChB,kBAAkB,CAkB9B"}
@@ -0,0 +1,25 @@
1
+ import * as express from 'express';
2
+ import { ServerMiddleware, Request as sRequest } from '../interfaces.js';
3
+ /**
4
+ * Emits a `Server-Timing` response header so browsers / devtools can show
5
+ * internal phase durations alongside the network waterfall.
6
+ *
7
+ * By default it emits a single `total;dur=<ms>` entry. Other code can push
8
+ * additional entries during the request:
9
+ *
10
+ * req.storage.serverTiming.push({ name: 'db', dur: 12, desc: 'main query' });
11
+ *
12
+ * Header is written by monkey-patching `res.end` so it lands on the response
13
+ * regardless of how the controller flushed — Express ServerMiddleware.after()
14
+ * does not run for normal route responses.
15
+ *
16
+ * Config:
17
+ * http.serverTiming.enabled (default true)
18
+ */
19
+ export declare class ServerTiming extends ServerMiddleware {
20
+ protected Enabled: boolean;
21
+ constructor();
22
+ before(): ((req: sRequest, res: express.Response, next: express.NextFunction) => void) | null;
23
+ after(): null;
24
+ }
25
+ //# sourceMappingURL=ServerTiming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerTiming.d.ts","sourceRoot":"","sources":["../../../src/middlewares/ServerTiming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAsB,MAAM,kBAAkB,CAAC;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,qBACa,YAAa,SAAQ,gBAAgB;IAEhD,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;;IAOrB,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI;IAoB7F,KAAK,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ServerTiming = void 0;
13
+ const di_1 = require("@spinajs/di");
14
+ const configuration_1 = require("@spinajs/configuration");
15
+ const interfaces_js_1 = require("../interfaces.js");
16
+ /**
17
+ * Emits a `Server-Timing` response header so browsers / devtools can show
18
+ * internal phase durations alongside the network waterfall.
19
+ *
20
+ * By default it emits a single `total;dur=<ms>` entry. Other code can push
21
+ * additional entries during the request:
22
+ *
23
+ * req.storage.serverTiming.push({ name: 'db', dur: 12, desc: 'main query' });
24
+ *
25
+ * Header is written by monkey-patching `res.end` so it lands on the response
26
+ * regardless of how the controller flushed — Express ServerMiddleware.after()
27
+ * does not run for normal route responses.
28
+ *
29
+ * Config:
30
+ * http.serverTiming.enabled (default true)
31
+ */
32
+ let ServerTiming = class ServerTiming extends interfaces_js_1.ServerMiddleware {
33
+ constructor() {
34
+ super();
35
+ this.Order = 2;
36
+ }
37
+ before() {
38
+ if (!this.Enabled)
39
+ return null;
40
+ return (req, res, next) => {
41
+ const startedAt = Date.now();
42
+ req.storage.serverTiming = req.storage.serverTiming ?? [];
43
+ const originalEnd = res.end.bind(res);
44
+ res.end = function patchedEnd(...args) {
45
+ if (!res.headersSent) {
46
+ const entries = req.storage.serverTiming ?? [];
47
+ entries.push({ name: 'total', dur: Date.now() - startedAt });
48
+ res.setHeader('Server-Timing', entries.map(formatEntry).join(', '));
49
+ }
50
+ return originalEnd(...args);
51
+ };
52
+ next();
53
+ };
54
+ }
55
+ after() {
56
+ return null;
57
+ }
58
+ };
59
+ exports.ServerTiming = ServerTiming;
60
+ __decorate([
61
+ (0, configuration_1.Config)('http.serverTiming.enabled', { defaultValue: true }),
62
+ __metadata("design:type", Boolean)
63
+ ], ServerTiming.prototype, "Enabled", void 0);
64
+ exports.ServerTiming = ServerTiming = __decorate([
65
+ (0, di_1.Injectable)(interfaces_js_1.ServerMiddleware),
66
+ __metadata("design:paramtypes", [])
67
+ ], ServerTiming);
68
+ function formatEntry(e) {
69
+ // Per the RFC each metric is "name;dur=<ms>;desc=\"...\"" — quotes are
70
+ // required when the description contains anything but ASCII identifiers.
71
+ const parts = [e.name];
72
+ if (typeof e.dur === 'number')
73
+ parts.push(`dur=${e.dur}`);
74
+ if (e.desc)
75
+ parts.push(`desc="${e.desc.replace(/"/g, '\\"')}"`);
76
+ return parts.join(';');
77
+ }
78
+ //# sourceMappingURL=ServerTiming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerTiming.js","sourceRoot":"","sources":["../../../src/middlewares/ServerTiming.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oCAAyC;AACzC,0DAAgD;AAEhD,oDAA6F;AAE7F;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gCAAgB;IAIhD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;YAE1D,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAmB,CAAC;YACvD,GAAG,CAAC,GAAW,GAAG,SAAS,UAAU,CAAyB,GAAG,IAAW;gBAC3E,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAyB,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;oBACrE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;oBAC7D,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC;YAEF,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAhCY,oCAAY;AAEb;IADT,IAAA,sBAAM,EAAC,2BAA2B,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;6CAChC;uBAFjB,YAAY;IADxB,IAAA,eAAU,EAAC,gCAAgB,CAAC;;GAChB,YAAY,CAgCxB;AAED,SAAS,WAAW,CAAC,CAAqB;IACxC,uEAAuE;IACvE,yEAAyE;IACzE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import * as express from 'express';
2
+ import { Log } from '@spinajs/log';
3
+ import { ServerMiddleware, Request as sRequest } from '../interfaces.js';
4
+ /**
5
+ * Logs a warning when a request exceeds a configurable duration threshold.
6
+ * Cheap diagnostic visibility for performance regressions.
7
+ *
8
+ * Config:
9
+ * http.slowRequest.enabled (default true)
10
+ * http.slowRequest.thresholdMs (default 1000)
11
+ */
12
+ export declare class SlowRequestWarning extends ServerMiddleware {
13
+ protected Enabled: boolean;
14
+ protected ThresholdMs: number;
15
+ protected Log: Log;
16
+ constructor();
17
+ before(): ((req: sRequest, res: express.Response, next: express.NextFunction) => void) | null;
18
+ after(): null;
19
+ }
20
+ //# sourceMappingURL=SlowRequestWarning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlowRequestWarning.d.ts","sourceRoot":"","sources":["../../../src/middlewares/SlowRequestWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzE;;;;;;;GAOG;AACH,qBACa,kBAAmB,SAAQ,gBAAgB;IAEtD,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAG5B,SAAS,CAAC,WAAW,EAAG,MAAM,CAAC;IAG/B,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;;IAOb,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI;IAuB7F,KAAK,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SlowRequestWarning = void 0;
13
+ const di_1 = require("@spinajs/di");
14
+ const configuration_1 = require("@spinajs/configuration");
15
+ const log_1 = require("@spinajs/log");
16
+ const interfaces_js_1 = require("../interfaces.js");
17
+ /**
18
+ * Logs a warning when a request exceeds a configurable duration threshold.
19
+ * Cheap diagnostic visibility for performance regressions.
20
+ *
21
+ * Config:
22
+ * http.slowRequest.enabled (default true)
23
+ * http.slowRequest.thresholdMs (default 1000)
24
+ */
25
+ let SlowRequestWarning = class SlowRequestWarning extends interfaces_js_1.ServerMiddleware {
26
+ constructor() {
27
+ super();
28
+ this.Order = 2;
29
+ }
30
+ before() {
31
+ if (!this.Enabled)
32
+ return null;
33
+ const log = this.Log;
34
+ const threshold = this.ThresholdMs;
35
+ return (req, res, next) => {
36
+ const startedAt = Date.now();
37
+ res.on('finish', () => {
38
+ const ms = Date.now() - startedAt;
39
+ if (ms >= threshold) {
40
+ log.warn(`Slow request: ${req.method} ${req.originalUrl} took ${ms}ms (threshold ${threshold}ms)`, {
41
+ method: req.method,
42
+ path: req.originalUrl,
43
+ ms,
44
+ threshold,
45
+ status: res.statusCode,
46
+ requestId: req.storage?.requestId,
47
+ });
48
+ }
49
+ });
50
+ next();
51
+ };
52
+ }
53
+ after() {
54
+ return null;
55
+ }
56
+ };
57
+ exports.SlowRequestWarning = SlowRequestWarning;
58
+ __decorate([
59
+ (0, configuration_1.Config)('http.slowRequest.enabled', { defaultValue: true }),
60
+ __metadata("design:type", Boolean)
61
+ ], SlowRequestWarning.prototype, "Enabled", void 0);
62
+ __decorate([
63
+ (0, configuration_1.Config)('http.slowRequest.thresholdMs', { defaultValue: 1000 }),
64
+ __metadata("design:type", Number)
65
+ ], SlowRequestWarning.prototype, "ThresholdMs", void 0);
66
+ __decorate([
67
+ (0, log_1.Logger)('http'),
68
+ __metadata("design:type", log_1.Log)
69
+ ], SlowRequestWarning.prototype, "Log", void 0);
70
+ exports.SlowRequestWarning = SlowRequestWarning = __decorate([
71
+ (0, di_1.Injectable)(interfaces_js_1.ServerMiddleware),
72
+ __metadata("design:paramtypes", [])
73
+ ], SlowRequestWarning);
74
+ //# sourceMappingURL=SlowRequestWarning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlowRequestWarning.js","sourceRoot":"","sources":["../../../src/middlewares/SlowRequestWarning.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oCAAyC;AACzC,0DAAgD;AAChD,sCAA2C;AAE3C,oDAAyE;AAEzE;;;;;;;GAOG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,gCAAgB;IAUtD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACpB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAClC,IAAI,EAAE,IAAI,SAAS,EAAE,CAAC;oBACpB,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,SAAS,EAAE,iBAAiB,SAAS,KAAK,EAAE;wBACjG,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,IAAI,EAAE,GAAG,CAAC,WAAW;wBACrB,EAAE;wBACF,SAAS;wBACT,MAAM,EAAE,GAAG,CAAC,UAAU;wBACtB,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS;qBAClC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAzCY,gDAAkB;AAEnB;IADT,IAAA,sBAAM,EAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;mDAC/B;AAGlB;IADT,IAAA,sBAAM,EAAC,8BAA8B,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;uDAChC;AAGrB;IADT,IAAA,YAAM,EAAC,MAAM,CAAC;8BACC,SAAG;+CAAC;6BART,kBAAkB;IAD9B,IAAA,eAAU,EAAC,gCAAgB,CAAC;;GAChB,kBAAkB,CAyC9B"}
@@ -11,6 +11,13 @@ import './middlewares/ResponseTime.js';
11
11
  import './middlewares/RequestId.js';
12
12
  import './middlewares/RealIp.js';
13
13
  import './middlewares/ReqStorage.js';
14
+ import './middlewares/NotFound.js';
15
+ import './middlewares/ErrorHandler.js';
16
+ import './middlewares/AccessLog.js';
17
+ import './middlewares/Compression.js';
18
+ import './middlewares/Cors.js';
19
+ import './middlewares/SlowRequestWarning.js';
20
+ import './middlewares/ServerTiming.js';
14
21
  export declare class HttpServer extends AsyncService {
15
22
  protected Configuration: Configuration;
16
23
  protected Container: IContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAG3E,OAAO,OAAO,EAAE,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AAErC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAG,aAAa,CAAC;IAGxC,SAAS,CAAC,SAAS,EAAG,UAAU,CAAC;IAGjC,SAAS,CAAC,WAAW,EAAG,gBAAgB,EAAE,CAAC;IAG3C,SAAS,CAAC,UAAU,EAAG,wBAAwB,CAAC;IAGhD,SAAS,CAAC,YAAY,EAAG,OAAO,CAAC;IAKjC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC,OAAO,CAAC;IAEpC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,YAAY,EAAG,KAAK,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,YAAY,WAAkB;IAExC,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;;IAMP,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DrC;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACI,KAAK;IAwBL,IAAI;IAMX;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;;OAIG;IACI,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,mBAAmB,GAAG,IAAI;CAGnE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAE3E,OAAO,OAAO,EAAE,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AACrC,OAAO,2BAA2B,CAAC;AACnC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AACtC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qCAAqC,CAAC;AAC7C,OAAO,+BAA+B,CAAC;AAEvC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAG,aAAa,CAAC;IAGxC,SAAS,CAAC,SAAS,EAAG,UAAU,CAAC;IAGjC,SAAS,CAAC,WAAW,EAAG,gBAAgB,EAAE,CAAC;IAG3C,SAAS,CAAC,UAAU,EAAG,wBAAwB,CAAC;IAGhD,SAAS,CAAC,YAAY,EAAG,OAAO,CAAC;IAKjC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC,OAAO,CAAC;IAEpC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,YAAY,EAAG,KAAK,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,YAAY,WAAkB;IAExC,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;;IAMP,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCrC;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACI,KAAK;IAwBL,IAAI;IAMX;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;;OAIG;IACI,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,mBAAmB,GAAG,IAAI;CAGnE"}
package/lib/cjs/server.js CHANGED
@@ -21,7 +21,6 @@ require("@spinajs/templates-pug");
21
21
  const http_1 = require("http");
22
22
  const https_1 = require("https");
23
23
  const fs_1 = require("fs");
24
- const cors_1 = __importDefault(require("cors"));
25
24
  const express_1 = __importDefault(require("express"));
26
25
  const lodash_1 = __importDefault(require("lodash"));
27
26
  const fs_2 = __importDefault(require("fs"));
@@ -31,6 +30,13 @@ require("./middlewares/ResponseTime.js");
31
30
  require("./middlewares/RequestId.js");
32
31
  require("./middlewares/RealIp.js");
33
32
  require("./middlewares/ReqStorage.js");
33
+ require("./middlewares/NotFound.js");
34
+ require("./middlewares/ErrorHandler.js");
35
+ require("./middlewares/AccessLog.js");
36
+ require("./middlewares/Compression.js");
37
+ require("./middlewares/Cors.js");
38
+ require("./middlewares/SlowRequestWarning.js");
39
+ require("./middlewares/ServerTiming.js");
34
40
  let HttpServer = class HttpServer extends di_1.AsyncService {
35
41
  get Server() {
36
42
  return this.HttpsEnabled ? this._httpsServer : this._httpServer;
@@ -60,29 +66,8 @@ let HttpServer = class HttpServer extends di_1.AsyncService {
60
66
  this.Log.info(`Using server middleware::before() - ${m.constructor.name}`);
61
67
  this.use(m);
62
68
  });
63
- /**
64
- * Register cors options
65
- */
66
- const cOptions = this.Configuration.get('http.cors', undefined);
67
- if (!cOptions) {
68
- this.Log.warn(`CORS options not set, server may be unavaible from outside ! Please set http.cors configuration option.`);
69
- }
70
- else {
71
- const corsOptions = {
72
- origin(origin, callback) {
73
- if (!cOptions || cOptions.origins.length === 0 || cOptions.origins.indexOf(origin) !== -1) {
74
- callback(null, true);
75
- }
76
- else {
77
- callback(new Error('cors not allowed'));
78
- }
79
- },
80
- exposedHeaders: cOptions.exposedHeaders,
81
- allowedHeaders: cOptions.allowedHeaders,
82
- credentials: true,
83
- };
84
- this.use((0, cors_1.default)(corsOptions));
85
- }
69
+ // CORS is now provided by CorsMiddleware (registered as ServerMiddleware,
70
+ // applied through the standard `Middlewares.before()` loop below).
86
71
  // register other server middlewares
87
72
  this.Middlewares.forEach((m) => {
88
73
  const f = m.before();
@@ -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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"}
@@ -85,6 +85,15 @@ export declare class DefaultControllerCache extends AsyncService {
85
85
  resolve(): Promise<void>;
86
86
  /** Returns parameter-name map used for route argument binding. */
87
87
  getCache(controller: ClassInfo<BaseController>): Promise<Record<string, string[]>>;
88
+ /** Whether `file` points at a real on-disk source we can parse. */
89
+ private isResolvableSource;
90
+ /**
91
+ * Fallback: derive route method parameter names by parsing each method's
92
+ * Function.toString() output. Loses JSDoc documentation (no @param tags
93
+ * etc.) but keeps argument binding working for DI-registered controllers
94
+ * that have no source file on disk.
95
+ */
96
+ private extractParametersAtRuntime;
88
97
  /** Returns the JSDoc / TypeScript-annotation documentation for a controller. */
89
98
  getDocumentation(controller: ClassInfo<BaseController>): Promise<IControllerDocumentation>;
90
99
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"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"}
package/lib/mjs/cache.js CHANGED
@@ -53,6 +53,13 @@ let DefaultControllerCache = class DefaultControllerCache extends AsyncService {
53
53
  }
54
54
  /** Returns parameter-name map used for route argument binding. */
55
55
  async getCache(controller) {
56
+ // Sentinel values like `<di>` are set by Controllers.resolve() / add() for
57
+ // controllers registered through DI rather than a file scan. There's no
58
+ // on-disk source to parse, so fall back to a runtime extraction of
59
+ // parameter names from each method's Function.toString().
60
+ if (!this.isResolvableSource(controller.file)) {
61
+ return this.extractParametersAtRuntime(controller);
62
+ }
56
63
  const file = resolvePath(controller.file.replace('.js', '.d.ts'));
57
64
  const hash = await this.Hasher.hash(file);
58
65
  const docHash = `doc_${hash}`;
@@ -69,8 +76,40 @@ let DefaultControllerCache = class DefaultControllerCache extends AsyncService {
69
76
  }
70
77
  return this.CacheFS.read(hash).then((x) => JSON.parse(x.toString()));
71
78
  }
79
+ /** Whether `file` points at a real on-disk source we can parse. */
80
+ isResolvableSource(file) {
81
+ if (!file)
82
+ return false;
83
+ // Bracketed sentinels (e.g. `<di>`, `<dynamic>`) are used by Controllers
84
+ // for entries that were never loaded from a file.
85
+ return !(file.startsWith('<') && file.endsWith('>'));
86
+ }
87
+ /**
88
+ * Fallback: derive route method parameter names by parsing each method's
89
+ * Function.toString() output. Loses JSDoc documentation (no @param tags
90
+ * etc.) but keeps argument binding working for DI-registered controllers
91
+ * that have no source file on disk.
92
+ */
93
+ extractParametersAtRuntime(controller) {
94
+ const parameters = {};
95
+ const instance = controller.instance;
96
+ if (!instance || !instance.Descriptor)
97
+ return parameters;
98
+ for (const [methodName] of instance.Descriptor.Routes) {
99
+ const fn = instance[methodName];
100
+ if (typeof fn !== 'function')
101
+ continue;
102
+ parameters[methodName] = parseFnParamNames(fn);
103
+ }
104
+ return parameters;
105
+ }
72
106
  /** Returns the JSDoc / TypeScript-annotation documentation for a controller. */
73
107
  async getDocumentation(controller) {
108
+ // No source file → no JSDoc to extract. Return an empty shell so callers
109
+ // (e.g. http-swagger) gracefully skip the controller instead of throwing.
110
+ if (!this.isResolvableSource(controller.file)) {
111
+ return { className: controller.name, methods: {} };
112
+ }
74
113
  const file = resolvePath(controller.file.replace('.js', '.d.ts'));
75
114
  const hash = await this.Hasher.hash(file);
76
115
  const docHash = `doc_${hash}`;
@@ -502,4 +541,20 @@ export { DefaultControllerCache };
502
541
  function entityNameRight(name) {
503
542
  return ts.isIdentifier(name) ? name.text : name.right.text;
504
543
  }
544
+ /**
545
+ * Pull parameter names from `Function.prototype.toString()` output. Modern V8
546
+ * preserves the literal signature so we can regex out `(a, b = 1, ...rest)`.
547
+ * Stripped of default values and TypeScript type annotations.
548
+ */
549
+ function parseFnParamNames(fn) {
550
+ const src = Function.prototype.toString.call(fn);
551
+ const match = src.match(/^[^(]*\(([\s\S]*?)\)/);
552
+ if (!match)
553
+ return [];
554
+ return match[1]
555
+ .split(',')
556
+ .map((p) => p.trim())
557
+ .filter(Boolean)
558
+ .map((p) => p.replace(/^\.\.\./, '').split(/[=:]/)[0].trim());
559
+ }
505
560
  //# sourceMappingURL=cache.js.map