@spinajs/http 2.0.486 → 2.0.487

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 (74) hide show
  1. package/README.md +370 -5
  2. package/lib/cjs/base-controller.d.ts +35 -0
  3. package/lib/cjs/base-controller.d.ts.map +1 -0
  4. package/lib/cjs/base-controller.js +100 -0
  5. package/lib/cjs/base-controller.js.map +1 -0
  6. package/lib/cjs/cache.d.ts +25 -3
  7. package/lib/cjs/cache.d.ts.map +1 -1
  8. package/lib/cjs/cache.js +26 -9
  9. package/lib/cjs/cache.js.map +1 -1
  10. package/lib/cjs/cli/GenerateControllerCache.d.ts +13 -4
  11. package/lib/cjs/cli/GenerateControllerCache.d.ts.map +1 -1
  12. package/lib/cjs/cli/GenerateControllerCache.js +37 -10
  13. package/lib/cjs/cli/GenerateControllerCache.js.map +1 -1
  14. package/lib/cjs/controller-sources.d.ts +36 -0
  15. package/lib/cjs/controller-sources.d.ts.map +1 -0
  16. package/lib/cjs/controller-sources.js +73 -0
  17. package/lib/cjs/controller-sources.js.map +1 -0
  18. package/lib/cjs/controllers.d.ts +19 -36
  19. package/lib/cjs/controllers.d.ts.map +1 -1
  20. package/lib/cjs/controllers.js +98 -302
  21. package/lib/cjs/controllers.js.map +1 -1
  22. package/lib/cjs/exceptions.d.ts +12 -0
  23. package/lib/cjs/exceptions.d.ts.map +1 -1
  24. package/lib/cjs/exceptions.js +15 -1
  25. package/lib/cjs/exceptions.js.map +1 -1
  26. package/lib/cjs/index.d.ts +4 -0
  27. package/lib/cjs/index.d.ts.map +1 -1
  28. package/lib/cjs/index.js +4 -0
  29. package/lib/cjs/index.js.map +1 -1
  30. package/lib/cjs/middlewares/RequestId.d.ts.map +1 -1
  31. package/lib/cjs/middlewares/RequestId.js +4 -0
  32. package/lib/cjs/middlewares/RequestId.js.map +1 -1
  33. package/lib/cjs/route-builder.d.ts +61 -0
  34. package/lib/cjs/route-builder.d.ts.map +1 -0
  35. package/lib/cjs/route-builder.js +228 -0
  36. package/lib/cjs/route-builder.js.map +1 -0
  37. package/lib/mjs/base-controller.d.ts +35 -0
  38. package/lib/mjs/base-controller.d.ts.map +1 -0
  39. package/lib/mjs/base-controller.js +93 -0
  40. package/lib/mjs/base-controller.js.map +1 -0
  41. package/lib/mjs/cache.d.ts +25 -3
  42. package/lib/mjs/cache.d.ts.map +1 -1
  43. package/lib/mjs/cache.js +25 -10
  44. package/lib/mjs/cache.js.map +1 -1
  45. package/lib/mjs/cli/GenerateControllerCache.d.ts +13 -4
  46. package/lib/mjs/cli/GenerateControllerCache.d.ts.map +1 -1
  47. package/lib/mjs/cli/GenerateControllerCache.js +39 -12
  48. package/lib/mjs/cli/GenerateControllerCache.js.map +1 -1
  49. package/lib/mjs/controller-sources.d.ts +36 -0
  50. package/lib/mjs/controller-sources.d.ts.map +1 -0
  51. package/lib/mjs/controller-sources.js +69 -0
  52. package/lib/mjs/controller-sources.js.map +1 -0
  53. package/lib/mjs/controllers.d.ts +19 -36
  54. package/lib/mjs/controllers.d.ts.map +1 -1
  55. package/lib/mjs/controllers.js +95 -298
  56. package/lib/mjs/controllers.js.map +1 -1
  57. package/lib/mjs/exceptions.d.ts +12 -0
  58. package/lib/mjs/exceptions.d.ts.map +1 -1
  59. package/lib/mjs/exceptions.js +12 -0
  60. package/lib/mjs/exceptions.js.map +1 -1
  61. package/lib/mjs/index.d.ts +4 -0
  62. package/lib/mjs/index.d.ts.map +1 -1
  63. package/lib/mjs/index.js +4 -0
  64. package/lib/mjs/index.js.map +1 -1
  65. package/lib/mjs/middlewares/RequestId.d.ts.map +1 -1
  66. package/lib/mjs/middlewares/RequestId.js +4 -0
  67. package/lib/mjs/middlewares/RequestId.js.map +1 -1
  68. package/lib/mjs/route-builder.d.ts +61 -0
  69. package/lib/mjs/route-builder.d.ts.map +1 -0
  70. package/lib/mjs/route-builder.js +216 -0
  71. package/lib/mjs/route-builder.js.map +1 -0
  72. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  73. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  74. package/package.json +11 -11
@@ -12,270 +12,62 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Controllers = exports.BaseController = void 0;
16
- const node_async_hooks_1 = require("node:async_hooks");
17
- const util_1 = require("@spinajs/util");
15
+ exports.Controllers = void 0;
18
16
  const express_1 = __importDefault(require("express"));
19
- const lodash_1 = __importDefault(require("lodash"));
20
17
  const di_1 = require("@spinajs/di");
21
- const exceptions_1 = require("@spinajs/exceptions");
22
- const reflection_1 = require("@spinajs/reflection");
23
18
  const log_1 = require("@spinajs/log");
24
- const validation_1 = require("@spinajs/validation");
25
- const configuration_1 = require("@spinajs/configuration");
26
19
  const server_js_1 = require("./server.js");
27
- const interfaces_js_1 = require("./interfaces.js");
28
- const decorators_js_1 = require("./decorators.js");
29
- const util_2 = require("@spinajs/util");
20
+ const util_1 = require("@spinajs/util");
30
21
  const cache_js_1 = require("./cache.js");
31
- const response_js_1 = require("./response.js");
32
- const error_js_1 = require("./error.js");
33
- class BaseController extends di_1.AsyncService {
22
+ const base_controller_js_1 = require("./base-controller.js");
23
+ const controller_sources_js_1 = require("./controller-sources.js");
24
+ const exceptions_js_1 = require("./exceptions.js");
25
+ class Controllers extends di_1.AsyncService {
26
+ constructor() {
27
+ super(...arguments);
28
+ /**
29
+ * Tracks which controller types have already been route-registered so
30
+ * {@link add} is idempotent.
31
+ */
32
+ this.RegisteredTypes = new Set();
33
+ }
34
34
  /**
35
- * Express router with middleware stack
35
+ * Merged, deduped controller list from all registered
36
+ * {@link ControllerSource} services (no instances until `resolve()` patches
37
+ * them in). Kept as a public accessor for API compatibility — http-swagger
38
+ * and app code read it to enumerate controllers.
36
39
  */
37
- get Router() {
38
- return this._router;
40
+ get Controllers() {
41
+ return (this._listed ??= this.listControllers());
39
42
  }
40
43
  /**
41
- * Controller descriptor
44
+ * Resolves all registered controller discovery services. Override point
45
+ * for tests and for apps that want full control over discovery.
42
46
  */
43
- get Descriptor() {
44
- return Reflect.getMetadata(decorators_js_1.CONTROLLED_DESCRIPTOR_SYMBOL, this);
47
+ async getSources() {
48
+ return (await di_1.DI.resolve(Array.ofType(controller_sources_js_1.ControllerSource)));
45
49
  }
46
50
  /**
47
- * Base path for all controller routes eg. my/custom/path/
48
- *
49
- * It can be defined via `@BasePath` decorator, defaults to controller name without `Controller` part.
51
+ * Gathers controllers from every source and dedupes them: for the same
52
+ * type an entry with a real on-disk file wins over a `<di>` / `<dynamic>`
53
+ * sentinel (the file path feeds ControllersCache source parsing).
50
54
  */
51
- get BasePath() {
52
- return this.Descriptor.BasePath ? this.Descriptor.BasePath : this.constructor.name.toLowerCase();
53
- }
54
- async resolve() {
55
- await super.resolve();
56
- const self = this;
57
- if (!this.Descriptor) {
58
- this._log.warn(`Controller ${this.constructor.name} does not have descriptor. It its abstract or base class ignore this message.`);
59
- return;
60
- }
61
- this._router = express_1.default.Router();
62
- for (const [, route] of this.Descriptor.Routes) {
63
- const handlers = [];
64
- let path = '';
65
- if (route.Path) {
66
- if (route.Path === '/') {
67
- path = `/${this.BasePath}`;
68
- }
69
- else {
70
- if (this.BasePath === '/') {
71
- path = `/${route.Path}`;
72
- }
73
- else {
74
- path = `/${this.BasePath}/${route.Path}`;
75
- }
76
- }
77
- }
78
- else {
79
- path = `/${this.BasePath}/${String(route.Method)}`;
55
+ async listControllers() {
56
+ const sources = await this.getSources();
57
+ const lists = await Promise.all(sources.map((s) => s.getControllers()));
58
+ const byType = new Map();
59
+ const untyped = [];
60
+ for (const ci of lists.flat()) {
61
+ if (!ci.type) {
62
+ untyped.push(ci);
63
+ continue;
80
64
  }
81
- // add global route path prefix
82
- if (this._cfg.get('http.controllers.route.prefix')) {
83
- path = `/${this._cfg.get('http.controllers.route.prefix')}${path}`;
65
+ const existing = byType.get(ci.type);
66
+ if (!existing || (!(0, cache_js_1.isOnDiskSource)(existing.file) && (0, cache_js_1.isOnDiskSource)(ci.file))) {
67
+ byType.set(ci.type, ci);
84
68
  }
85
- const middlewares = await Promise.all(this.Descriptor.Middlewares.concat(route.Middlewares || []).map((m) => {
86
- return self._container.resolve(m.Type, m.Options);
87
- }));
88
- const policies = await Promise.all(this.Descriptor.Policies.concat(route.Policies || [])
89
- .map((m) => {
90
- if (lodash_1.default.isString(m.Type)) {
91
- const policyType = this._cfg.get(m.Type);
92
- if (!di_1.DI.checkType(interfaces_js_1.BasePolicy, policyType)) {
93
- self._log.warn(`No policy named ${policyType} is registered ( check your configuration at ${m.Type})`);
94
- return null;
95
- }
96
- else {
97
- self._log.trace(`Policy ${policyType} is used in controller ${self.constructor.name}::${String(route.Method)} at path ${path}`);
98
- return self._container.resolve(policyType, m.Options);
99
- }
100
- }
101
- else {
102
- self._log.trace(`Policy ${m.Type.name} is used in controller ${self.constructor.name}::${String(route.Method)} at path ${path}`);
103
- return self._container.resolve(m.Type, m.Options);
104
- }
105
- })
106
- .filter((x) => x !== null));
107
- const enabledMiddlewares = middlewares.filter((m) => m.isEnabled(route, this));
108
- this._log.trace(`Registering route ${route.Type.toUpperCase()} ${this.constructor.name}::${String(route.Method)} at ${path}`);
109
- // Execute all policies for route
110
- // If at least ONE policy returns no error allow route to execute
111
- // It allows to use multiple access to resource eg. token access & session
112
- handlers.push((req, _res, next) => {
113
- // Only policies enabled for this concrete route participate in the gate.
114
- // A route whose policies are ALL disabled has no active authorization
115
- // check, so it is allowed through — same semantics as having no policies
116
- // at all. Computing this up front is what prevents the request from
117
- // hanging: `Promise.allSettled([])` resolves to `[]`, which matches
118
- // neither the fulfilled nor the rejected branch below, so `next` would
119
- // never be called.
120
- const enabledPolicies = policies.filter((p) => p.isEnabled(route, this));
121
- if (enabledPolicies.length === 0) {
122
- next();
123
- return;
124
- }
125
- Promise.allSettled(enabledPolicies
126
- .map((p) => {
127
- return p
128
- .execute(req, route, this)
129
- .then(() => {
130
- this._log.trace(`Policy succeded for route ${self.constructor.name}:${String(route.Method)} ${self.BasePath}/${String(route.Path || route.Method)}, policy: ${p.constructor.name}`);
131
- })
132
- .catch((err) => {
133
- this._log.trace(`Policy failed for route ${self.constructor.name}:${String(route.Method)} ${self.BasePath}/${String(route.Path || route.Method)} error ${err}, policy: ${p.constructor.name}`);
134
- throw err;
135
- });
136
- })).then((results) => {
137
- const fullfilled = results.find(r => r.status === 'fulfilled');
138
- if (fullfilled) {
139
- this._log.trace(`Policy for route ${self.constructor.name}:${String(route.Method)} ${self.BasePath}/${String(route.Path || route.Method)} succeded, continue execution`);
140
- next();
141
- return;
142
- }
143
- // Every policy rejected — forward the first failure to the express
144
- // error handler. Use next(err) directly (not `throw next(...)`,
145
- // which would reject this .then() with `undefined` as an unhandled
146
- // rejection while the error was already forwarded).
147
- const failed = results.find(r => r.status === 'rejected');
148
- next(failed ? failed.reason : new exceptions_1.UnexpectedServerError('Policy evaluation produced no result'));
149
- })
150
- // Guard against unexpected throws in the settle/handler chain so the
151
- // request can never stall without a response.
152
- .catch((err) => next(err));
153
- });
154
- handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onBefore.bind(m), route)));
155
- const acionWrapper = async (req, res, next) => {
156
- try {
157
- await this._actionLocalStorage.run(req.storage, async () => {
158
- const args = (await _extractRouteArgs(route, req, res)).concat([req, res, next]);
159
- try {
160
- const result = this[route.Method].call(this, ...args);
161
- if ((0, util_1.isPromise)(result)) {
162
- result
163
- .then((r) => {
164
- if (r instanceof interfaces_js_1.Response) {
165
- enabledMiddlewares.forEach((x) => x.onResponse(r, route, this));
166
- }
167
- res.locals.response = r;
168
- next();
169
- })
170
- .catch((err) => {
171
- next(err);
172
- });
173
- }
174
- else {
175
- if (result instanceof interfaces_js_1.Response) {
176
- enabledMiddlewares.forEach((x) => x.onResponse(result, route, this));
177
- }
178
- res.locals.response = result;
179
- next();
180
- }
181
- }
182
- catch (err) {
183
- next(err);
184
- }
185
- });
186
- }
187
- catch (err) {
188
- next(err);
189
- }
190
- };
191
- Object.defineProperty(acionWrapper, 'name', {
192
- value: this.constructor.name,
193
- writable: true,
194
- });
195
- handlers.push(acionWrapper);
196
- handlers.push(...enabledMiddlewares.map((m) => _invokeAction(m, m.onAfter.bind(m), route)));
197
- // register to express router
198
- if (route.InternalType === 'unknown') {
199
- this._log.warn(`Unknown route type for ${this.constructor.name}::${String(route.Method)} at path ${path}`);
200
- return;
201
- }
202
- handlers.push((0, response_js_1.__handle_response__)());
203
- handlers.push((0, error_js_1.__handle_error__)());
204
- this._router[route.InternalType](path, handlers);
205
69
  }
206
- function _invokeAction(source, action, route) {
207
- const wrapper = (req, res, next) => {
208
- action(req, res, route, self)
209
- .then(() => {
210
- next();
211
- })
212
- .catch((err) => {
213
- next(err);
214
- });
215
- };
216
- Object.defineProperty(wrapper, 'name', {
217
- value: source.constructor.name,
218
- writable: true,
219
- });
220
- return wrapper;
221
- }
222
- async function _extractRouteArgs(route, req, res) {
223
- const callArgs = new Array(route.Parameters.size);
224
- const argsCache = new Map();
225
- let callData = {
226
- Payload: {},
227
- };
228
- // Sort parameters by priority (higher priority first)
229
- // Get all parameters as array, resolve their handlers to check priority, then sort
230
- const paramsWithPriority = await Promise.all(Array.from(route.Parameters.values()).map(async (param) => {
231
- const handler = await (0, util_2.tryGetHash)(argsCache, param.Type, () => di_1.DI.resolve(param.Type));
232
- return { param, handler, priority: handler?.Priority ?? 0 };
233
- }));
234
- // Sort by priority descending (higher priority first)
235
- const sortedParams = paramsWithPriority.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
236
- for (const { param, handler: routeArgsHandler } of sortedParams) {
237
- if (!routeArgsHandler) {
238
- throw new exceptions_1.UnexpectedServerError(`Route parameter not registered for parameter: ${param.Name},
239
- in method: ${String(route.Method)},
240
- in controller: ${self.constructor.name}. Check if you have registered it in DI container.`);
241
- }
242
- const { Args, CallData } = await routeArgsHandler.extract(callData, callArgs, param, req, res, route);
243
- callData = CallData;
244
- callArgs[param.Index] = Args;
245
- }
246
- return callArgs;
247
- }
248
- }
249
- }
250
- exports.BaseController = BaseController;
251
- __decorate([
252
- (0, di_1.Autoinject)(di_1.Container),
253
- __metadata("design:type", Object)
254
- ], BaseController.prototype, "_container", void 0);
255
- __decorate([
256
- (0, di_1.Autoinject)(),
257
- __metadata("design:type", validation_1.DataValidator)
258
- ], BaseController.prototype, "_validator", void 0);
259
- __decorate([
260
- (0, log_1.Logger)('http'),
261
- __metadata("design:type", log_1.Log)
262
- ], BaseController.prototype, "_log", void 0);
263
- __decorate([
264
- (0, di_1.Autoinject)(),
265
- __metadata("design:type", node_async_hooks_1.AsyncLocalStorage)
266
- ], BaseController.prototype, "_actionLocalStorage", void 0);
267
- __decorate([
268
- (0, di_1.Autoinject)(configuration_1.Configuration),
269
- __metadata("design:type", configuration_1.Configuration)
270
- ], BaseController.prototype, "_cfg", void 0);
271
- class Controllers extends di_1.AsyncService {
272
- constructor() {
273
- super(...arguments);
274
- /**
275
- * Tracks which controller types have already been route-registered so
276
- * {@link add} is idempotent.
277
- */
278
- this.RegisteredTypes = new Set();
70
+ return [...byType.values(), ...untyped];
279
71
  }
280
72
  /**
281
73
  * Dynamically register a controller after startup. Equivalent to having
@@ -295,16 +87,26 @@ class Controllers extends di_1.AsyncService {
295
87
  this.Log.trace(`Controller ${type.name} already registered, skipping`);
296
88
  return;
297
89
  }
298
- di_1.DI.register(type).as(BaseController);
299
- const instance = (await di_1.DI.resolve(type));
300
- const ci = new di_1.ClassInfo();
301
- ci.name = type.name;
302
- ci.type = type;
303
- ci.instance = instance;
304
- // Source file was captured at decoration time by the route decorators.
305
- // Sentinel only if nothing was captured (no route decorators ran).
306
- ci.file = instance.Descriptor?.SourceFile ?? '<dynamic>';
307
- await this.register(ci);
90
+ di_1.DI.register(type).as(base_controller_js_1.BaseController);
91
+ try {
92
+ const instance = (await di_1.DI.resolve(type));
93
+ const ci = new di_1.ClassInfo();
94
+ ci.name = type.name;
95
+ ci.type = type;
96
+ ci.instance = instance;
97
+ // Source file was captured at decoration time by the route decorators.
98
+ // Sentinel only if nothing was captured (no route decorators ran).
99
+ ci.file = instance.Descriptor?.SourceFile ?? '<dynamic>';
100
+ await this.register(ci);
101
+ }
102
+ catch (err) {
103
+ // Roll back so the broken type is not silently mounted by a later
104
+ // Array.ofType(BaseController) resolve, and so a fixed retry can
105
+ // register cleanly.
106
+ di_1.DI.unregister(type);
107
+ di_1.DI.uncache(base_controller_js_1.BaseController);
108
+ throw err;
109
+ }
308
110
  }
309
111
  async register(controller) {
310
112
  this.Log.trace(`Loading controller: ${controller.name}`);
@@ -312,32 +114,35 @@ class Controllers extends di_1.AsyncService {
312
114
  this.Log.trace(`Controller ${controller.name} already registered, skipping`);
313
115
  return;
314
116
  }
315
- const parameters = await this.ControllersCache.getCache(controller);
316
117
  if (!controller.instance) {
317
- this.Log.warn(`Controller ${controller.name} in file ${controller.file} is not resolved. Make sure it is decorated with @injectable and has a public constructor without required parameters`);
318
- return;
118
+ throw new exceptions_js_1.ControllerRegistrationException(`Controller ${controller.name} in file ${controller.file} is not resolved. Make sure it is decorated with @injectable and has a public constructor without required parameters`);
319
119
  }
120
+ const parameters = await this.ControllersCache.getCache(controller);
320
121
  if (!controller.instance.Descriptor) {
321
122
  this.Log.warn(`Controller ${controller.name} in file ${controller.file} dont have descriptor or routes defined`);
322
123
  }
323
124
  else {
324
125
  for (const [name, route] of controller.instance.Descriptor.Routes) {
325
- if (parameters[name]) {
326
- const member = parameters[name];
327
- for (const [index, rParam] of route.Parameters) {
328
- const pName = member[index];
329
- if (pName) {
330
- rParam.Name = pName;
331
- }
126
+ let member = parameters[name];
127
+ if (!member) {
128
+ const action = controller.instance[name];
129
+ if (typeof action !== 'function') {
130
+ throw new exceptions_js_1.RouteRegistrationException(`Controller ${controller.name} does not have member ${String(name)} for route ${route.Path}`);
332
131
  }
132
+ // Route inherited from a base class declared in another source file
133
+ // — the parsed source of THIS class has no such member. Extract
134
+ // parameter names from the runtime function instead.
135
+ member = (0, cache_js_1.parseFnParamNames)(action);
333
136
  }
334
- else {
335
- this.Log.error(`Controller ${controller.name} does not have member ${name} for route ${route.Path}`);
137
+ for (const [index, rParam] of route.Parameters) {
138
+ const pName = member[index];
139
+ if (pName) {
140
+ rParam.Name = pName;
141
+ }
336
142
  }
337
143
  }
338
144
  if (!controller.instance.Router) {
339
- this.Log.warn(`Controller ${controller.name} in file ${controller.file} has no router instance. Check if it extends BaseController and super.resolve() is called in resolve method`);
340
- return;
145
+ throw new exceptions_js_1.ControllerRegistrationException(`Controller ${controller.name} in file ${controller.file} has no router instance. Check if it extends BaseController and super.resolve() is called in resolve method`);
341
146
  }
342
147
  this.ControllersRouter.use(controller.instance.Router);
343
148
  if (controller.type) {
@@ -351,34 +156,28 @@ class Controllers extends di_1.AsyncService {
351
156
  // one mounts onto Express exactly once. Dynamic adds land here too,
352
157
  // which is how `add()` avoids the old Express-stack juggling.
353
158
  this.ControllersRouter = express_1.default.Router();
354
- // Two registration paths converge here:
355
- // 1. Directory-scanned controllers (existing behavior). @ListFromFiles
356
- // hands us the class types; we register each as `BaseController` so
357
- // they show up in the DI collection.
358
- // 2. Bootstrapper-registered controllers. A package's Bootstrapper can
359
- // conditionally call `DI.register(MyController).as(BaseController)`
360
- // before this service resolves. Those classes are already in the
361
- // collection by the time we get here.
362
- // Resolving `Array.ofType(BaseController)` then instantiates everything
363
- // in a single pass — file-scanned + bootstrap-registered, with class
364
- // identity dedupe (multiple `as(BaseController)` calls for the same type
365
- // resolve to one singleton).
159
+ // Discovery is delegated to ControllerSource services (filesystem scan,
160
+ // DI registry, custom app sources). All lists are merged and deduped in
161
+ // listControllers(); each discovered type is registered as
162
+ // `BaseController` below, then resolving `Array.ofType(BaseController)`
163
+ // instantiates everything in a single pass with class-identity dedupe
164
+ // (multiple `as(BaseController)` calls for the same type resolve to one
165
+ // singleton).
366
166
  const listed = await this.Controllers;
367
167
  // Remember the original file path per type so the second loop can preserve
368
168
  // it. Without this every controller would end up tagged `<di>`, breaking
369
169
  // ControllersCache.getCache() which expects a real on-disk source file.
370
170
  const fileByType = new Map();
371
- for (const ci of (0, util_2.uniqueBy)(listed, c => c.name)) {
171
+ for (const ci of (0, util_1.uniqueBy)(listed, (c) => c.name)) {
372
172
  if (!ci.type) {
373
173
  this.Log.warn(`Controller ${ci.name} in file ${ci.file} has no type. Make sure it is decorated with @injectable and has a public constructor without required parameters`);
374
174
  continue;
375
175
  }
376
- ;
377
176
  fileByType.set(ci.type, ci);
378
- di_1.DI.register(ci.type).as(BaseController);
177
+ di_1.DI.register(ci.type).as(base_controller_js_1.BaseController);
379
178
  this.Log.trace(`Controller ${ci.name} from ${ci.file} registered as BaseController`);
380
179
  }
381
- const instances = (await di_1.DI.resolve(Array.ofType(BaseController)));
180
+ const instances = (await di_1.DI.resolve(Array.ofType(base_controller_js_1.BaseController)));
382
181
  // Report on scanned controllers that someone else derives from. Both
383
182
  // outcomes are otherwise invisible: an override leaves no trace at all, and
384
183
  // an accidental shadow leaves two controllers answering the same paths.
@@ -406,16 +205,17 @@ class Controllers extends di_1.AsyncService {
406
205
  for (const instance of instances) {
407
206
  const type = instance.constructor;
408
207
  const originalCi = fileByType.get(type);
409
- const ci = originalCi ?? Object.assign(new di_1.ClassInfo(), {
410
- name: type.name,
411
- type,
412
- instance,
413
- // For DI-registered controllers without a file scan entry, fall back
414
- // to the source file captured at decoration time by `Controller()`.
415
- // Only sentinel '<di>' if nothing was captured (abstract base, or no
416
- // route decorators ran).
417
- file: instance.Descriptor?.SourceFile ?? '<di>',
418
- });
208
+ const ci = originalCi ??
209
+ Object.assign(new di_1.ClassInfo(), {
210
+ name: type.name,
211
+ type,
212
+ instance,
213
+ // For DI-registered controllers without a file scan entry, fall back
214
+ // to the source file captured at decoration time by `Controller()`.
215
+ // Only sentinel '<di>' if nothing was captured (abstract base, or no
216
+ // route decorators ran).
217
+ file: instance.Descriptor?.SourceFile ?? '<di>',
218
+ });
419
219
  // The file-scanned entry has no instance (List, not Resolve) — patch it.
420
220
  if (!ci.instance)
421
221
  ci.instance = instance;
@@ -431,10 +231,6 @@ class Controllers extends di_1.AsyncService {
431
231
  }
432
232
  }
433
233
  exports.Controllers = Controllers;
434
- __decorate([
435
- (0, reflection_1.ListFromFiles)('/**/!(*.d).{ts,js}', 'system.dirs.controllers'),
436
- __metadata("design:type", Promise)
437
- ], Controllers.prototype, "Controllers", void 0);
438
234
  __decorate([
439
235
  (0, log_1.Logger)('http'),
440
236
  __metadata("design:type", log_1.Log)
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/controllers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/controllers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,16 @@
1
1
  import { Exception } from '@spinajs/exceptions';
2
2
  export declare class EntityTooLargeException extends Exception {
3
3
  }
4
+ /**
5
+ * Controller-level registration failure (unresolved instance, missing router).
6
+ * Thrown during startup — fail fast, do not start with broken controllers.
7
+ */
8
+ export declare class ControllerRegistrationException extends Exception {
9
+ }
10
+ /**
11
+ * Route-level registration failure (unknown route type, unresolvable policy,
12
+ * missing route member). Thrown during startup — fail fast.
13
+ */
14
+ export declare class RouteRegistrationException extends Exception {
15
+ }
4
16
  //# sourceMappingURL=exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,uBAAwB,SAAQ,SAAS;CAAG"}
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,uBAAwB,SAAQ,SAAS;CAAG;AAEzD;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,SAAS;CAAG;AAEjE;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;CAAG"}
@@ -1,8 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityTooLargeException = void 0;
3
+ exports.RouteRegistrationException = exports.ControllerRegistrationException = exports.EntityTooLargeException = void 0;
4
4
  const exceptions_1 = require("@spinajs/exceptions");
5
5
  class EntityTooLargeException extends exceptions_1.Exception {
6
6
  }
7
7
  exports.EntityTooLargeException = EntityTooLargeException;
8
+ /**
9
+ * Controller-level registration failure (unresolved instance, missing router).
10
+ * Thrown during startup — fail fast, do not start with broken controllers.
11
+ */
12
+ class ControllerRegistrationException extends exceptions_1.Exception {
13
+ }
14
+ exports.ControllerRegistrationException = ControllerRegistrationException;
15
+ /**
16
+ * Route-level registration failure (unknown route type, unresolvable policy,
17
+ * missing route member). Thrown during startup — fail fast.
18
+ */
19
+ class RouteRegistrationException extends exceptions_1.Exception {
20
+ }
21
+ exports.RouteRegistrationException = RouteRegistrationException;
8
22
  //# sourceMappingURL=exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAEhD,MAAa,uBAAwB,SAAQ,sBAAS;CAAG;AAAzD,0DAAyD"}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAEhD,MAAa,uBAAwB,SAAQ,sBAAS;CAAG;AAAzD,0DAAyD;AAEzD;;;GAGG;AACH,MAAa,+BAAgC,SAAQ,sBAAS;CAAG;AAAjE,0EAAiE;AAEjE;;;GAGG;AACH,MAAa,0BAA2B,SAAQ,sBAAS;CAAG;AAA5D,gEAA4D"}
@@ -3,6 +3,10 @@ export * from './response-methods/index.js';
3
3
  export * from './decorators.js';
4
4
  export * from './responses.js';
5
5
  export * from './route-args/index.js';
6
+ export * from './exceptions.js';
7
+ export * from './base-controller.js';
8
+ export * from './controller-sources.js';
9
+ export * from './route-builder.js';
6
10
  export * from './controllers.js';
7
11
  export * from './server.js';
8
12
  export * from './transformers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC"}
package/lib/cjs/index.js CHANGED
@@ -19,6 +19,10 @@ __exportStar(require("./response-methods/index.js"), exports);
19
19
  __exportStar(require("./decorators.js"), exports);
20
20
  __exportStar(require("./responses.js"), exports);
21
21
  __exportStar(require("./route-args/index.js"), exports);
22
+ __exportStar(require("./exceptions.js"), exports);
23
+ __exportStar(require("./base-controller.js"), exports);
24
+ __exportStar(require("./controller-sources.js"), exports);
25
+ __exportStar(require("./route-builder.js"), exports);
22
26
  __exportStar(require("./controllers.js"), exports);
23
27
  __exportStar(require("./server.js"), exports);
24
28
  __exportStar(require("./transformers/index.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,8DAA4C;AAC5C,kDAAgC;AAChC,iDAA+B;AAC/B,wDAAsC;AACtC,mDAAiC;AACjC,8CAA4B;AAC5B,0DAAwC;AACxC,8DAA4C;AAC5C,iDAA+B;AAC/B,6CAA2B;AAC3B,4DAA0C;AAC1C,gEAA8C;AAC9C,6DAA2C;AAC3C,+DAA6C;AAC7C,wDAAsC;AACtC,sEAAoD;AACpD,gEAA8C;AAC9C,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,8DAA4C;AAC5C,kDAAgC;AAChC,iDAA+B;AAC/B,wDAAsC;AACtC,kDAAgC;AAChC,uDAAqC;AACrC,0DAAwC;AACxC,qDAAmC;AACnC,mDAAiC;AACjC,8CAA4B;AAC5B,0DAAwC;AACxC,8DAA4C;AAC5C,iDAA+B;AAC/B,6CAA2B;AAC3B,4DAA0C;AAC1C,gEAA8C;AAC9C,6DAA2C;AAC3C,+DAA6C;AAC7C,wDAAsC;AACtC,sEAAoD;AACpD,gEAA8C;AAC9C,8DAA4C"}
@@ -1 +1 @@
1
- {"version":3,"file":"RequestId.d.ts","sourceRoot":"","sources":["../../../src/middlewares/RequestId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMzE,qBACa,SAAU,SAAQ,gBAAgB;;IAMtC,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI;CAqBtG"}
1
+ {"version":3,"file":"RequestId.d.ts","sourceRoot":"","sources":["../../../src/middlewares/RequestId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMzE,qBACa,SAAU,SAAQ,gBAAgB;;IAMtC,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI;CA0BtG"}