@e22m4u/ts-rest-router 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -556,9 +556,7 @@ var _ControllerRegistry = class _ControllerRegistry extends DebuggableService {
556
556
  const dataValidator = this.getService(import_ts_data_schema2.DataValidator);
557
557
  return (requestContext2) => {
558
558
  this.debug("Executing route handler for %s.%s.", controllerCtor.name, actionName);
559
- const args = Array(argsNumber).map((value, index) => {
560
- if (value != null)
561
- return value;
559
+ const args = Array(argsNumber).fill(void 0).map((_, index) => {
562
560
  const requestContextMd = requestContextMetadataMap.get(index);
563
561
  if (requestContextMd != null) {
564
562
  this.debug("Argument %v has request context metadata.", index);
@@ -186,9 +186,9 @@ export class ControllerRegistry extends DebuggableService {
186
186
  const dataValidator = this.getService(DataValidator);
187
187
  return (requestContext) => {
188
188
  this.debug('Executing route handler for %s.%s.', controllerCtor.name, actionName);
189
- const args = Array(argsNumber).map((value, index) => {
190
- if (value != null)
191
- return value;
189
+ const args = Array(argsNumber)
190
+ .fill(undefined)
191
+ .map((_, index) => {
192
192
  // заполнение аргументов операции
193
193
  // значениями из контекста запроса
194
194
  const requestContextMd = requestContextMetadataMap.get(index);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e22m4u/ts-rest-router",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "Controllers-based REST router implementation for TypeScript",
5
5
  "author": "e22m4u <e22m4u@yandex.ru>",
6
6
  "keywords": [
@@ -48,28 +48,28 @@
48
48
  "http-errors": "~2.0.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@commitlint/cli": "~19.5.0",
52
- "@commitlint/config-conventional": "~19.5.0",
53
- "@eslint/js": "~9.14.0",
51
+ "@commitlint/cli": "~19.6.0",
52
+ "@commitlint/config-conventional": "~19.6.0",
53
+ "@eslint/js": "~9.15.0",
54
54
  "@types/chai": "~5.0.1",
55
55
  "@types/debug": "~4.1.12",
56
56
  "@types/http-errors": "~2.0.4",
57
- "@types/mocha": "~10.0.9",
58
- "@types/node": "~22.9.0",
57
+ "@types/mocha": "~10.0.10",
58
+ "@types/node": "~22.9.3",
59
59
  "c8": "~10.1.2",
60
60
  "chai": "~5.1.2",
61
61
  "esbuild": "~0.24.0",
62
- "eslint": "~9.14.0",
62
+ "eslint": "~9.15.0",
63
63
  "eslint-config-prettier": "~9.1.0",
64
64
  "eslint-plugin-chai-expect": "~3.1.0",
65
65
  "eslint-plugin-mocha": "~10.5.0",
66
- "husky": "~9.1.6",
66
+ "husky": "~9.1.7",
67
67
  "mocha": "~10.8.2",
68
68
  "prettier": "~3.3.3",
69
69
  "rimraf": "~6.0.1",
70
70
  "tsx": "~4.19.2",
71
71
  "typescript": "~5.6.3",
72
- "typescript-eslint": "~8.13.0"
72
+ "typescript-eslint": "~8.15.0"
73
73
  },
74
74
  "license": "MIT"
75
75
  }
@@ -253,100 +253,101 @@ export class ControllerRegistry extends DebuggableService {
253
253
  controllerCtor.name,
254
254
  actionName,
255
255
  );
256
- const args = Array(argsNumber).map((value, index) => {
257
- if (value != null) return value;
258
- // заполнение аргументов операции
259
- // значениями из контекста запроса
260
- const requestContextMd = requestContextMetadataMap.get(index);
261
- if (requestContextMd != null) {
262
- this.debug('Argument %v has request context metadata.', index);
263
- // если свойство контекста не определено,
264
- // то используем весь объект контекста
265
- // в качестве значения текущего аргумента
266
- if (requestContextMd.property == null) {
267
- this.debug('Request context property is not specified.');
268
- this.debug('Argument %v is set to %v.', index, requestContext);
269
- return requestContext;
270
- }
271
- // если свойство контекста определено,
272
- // то используем значение этого свойства
273
- // в качестве текущего аргумента
274
- const propName = requestContextMd.property;
275
- const propValue = requestContext[propName];
276
- this.debug('Request context property is %v.', propName);
277
- this.debug('Argument %v is set to %v.', index, propValue);
278
- return propValue;
279
- } else {
280
- this.debug(
281
- 'No RequestContextMetadata specified for %v argument.',
282
- index,
283
- );
284
- }
285
- // заполнение аргументов операции
286
- // значениями из данных запроса
287
- const requestDataMd = requestDataMetadataMap.get(index);
288
- if (requestDataMd != null) {
289
- this.debug('Argument %v has request data metadata.', index);
290
- // получение данных
291
- // согласно источнику
292
- let data: unknown;
293
- switch (requestDataMd.source) {
294
- case RequestDataSource.PARAMS:
295
- data = requestContext.params;
296
- break;
297
- case RequestDataSource.QUERY:
298
- data = requestContext.query;
299
- break;
300
- case RequestDataSource.HEADERS:
301
- data = requestContext.headers;
302
- break;
303
- case RequestDataSource.COOKIE:
304
- data = requestContext.cookie;
305
- break;
306
- case RequestDataSource.BODY:
307
- data = requestContext.body;
308
- break;
309
- }
310
- this.debug('Request data source is %v.', requestDataMd.source);
311
- // при наличии схемы данных выполняется
312
- // их конвертация и валидация
313
- if (requestDataMd.schema) {
314
- data = dataTypeCaster.cast(data, requestDataMd.schema, {
315
- noTypeCastError: true,
316
- sourcePath: requestDataMd.source,
317
- });
318
- this.debug('Data type casting is passed.');
319
- dataValidator.validate(
320
- data,
321
- requestDataMd.schema,
322
- requestDataMd.source,
256
+ const args = Array(argsNumber)
257
+ .fill(undefined)
258
+ .map((_, index) => {
259
+ // заполнение аргументов операции
260
+ // значениями из контекста запроса
261
+ const requestContextMd = requestContextMetadataMap.get(index);
262
+ if (requestContextMd != null) {
263
+ this.debug('Argument %v has request context metadata.', index);
264
+ // если свойство контекста не определено,
265
+ // то используем весь объект контекста
266
+ // в качестве значения текущего аргумента
267
+ if (requestContextMd.property == null) {
268
+ this.debug('Request context property is not specified.');
269
+ this.debug('Argument %v is set to %v.', index, requestContext);
270
+ return requestContext;
271
+ }
272
+ // если свойство контекста определено,
273
+ // то используем значение этого свойства
274
+ // в качестве текущего аргумента
275
+ const propName = requestContextMd.property;
276
+ const propValue = requestContext[propName];
277
+ this.debug('Request context property is %v.', propName);
278
+ this.debug('Argument %v is set to %v.', index, propValue);
279
+ return propValue;
280
+ } else {
281
+ this.debug(
282
+ 'No RequestContextMetadata specified for %v argument.',
283
+ index,
323
284
  );
324
- this.debug('Data validation is passed.');
325
285
  }
326
- // если свойство данных не определено,
327
- // то используем весь объекта данных
328
- // в качестве значения текущего аргумента
329
- if (requestDataMd.property == null) {
330
- this.debug('Request data property is not specified.');
331
- this.debug('Argument %v is set to %v.', index, data);
332
- return data;
286
+ // заполнение аргументов операции
287
+ // значениями из данных запроса
288
+ const requestDataMd = requestDataMetadataMap.get(index);
289
+ if (requestDataMd != null) {
290
+ this.debug('Argument %v has request data metadata.', index);
291
+ // получение данных
292
+ // согласно источнику
293
+ let data: unknown;
294
+ switch (requestDataMd.source) {
295
+ case RequestDataSource.PARAMS:
296
+ data = requestContext.params;
297
+ break;
298
+ case RequestDataSource.QUERY:
299
+ data = requestContext.query;
300
+ break;
301
+ case RequestDataSource.HEADERS:
302
+ data = requestContext.headers;
303
+ break;
304
+ case RequestDataSource.COOKIE:
305
+ data = requestContext.cookie;
306
+ break;
307
+ case RequestDataSource.BODY:
308
+ data = requestContext.body;
309
+ break;
310
+ }
311
+ this.debug('Request data source is %v.', requestDataMd.source);
312
+ // при наличии схемы данных выполняется
313
+ // их конвертация и валидация
314
+ if (requestDataMd.schema) {
315
+ data = dataTypeCaster.cast(data, requestDataMd.schema, {
316
+ noTypeCastError: true,
317
+ sourcePath: requestDataMd.source,
318
+ });
319
+ this.debug('Data type casting is passed.');
320
+ dataValidator.validate(
321
+ data,
322
+ requestDataMd.schema,
323
+ requestDataMd.source,
324
+ );
325
+ this.debug('Data validation is passed.');
326
+ }
327
+ // если свойство данных не определено,
328
+ // то используем весь объекта данных
329
+ // в качестве значения текущего аргумента
330
+ if (requestDataMd.property == null) {
331
+ this.debug('Request data property is not specified.');
332
+ this.debug('Argument %v is set to %v.', index, data);
333
+ return data;
334
+ }
335
+ // если свойство данных определено,
336
+ // то используем значение этого свойства
337
+ // в качестве текущего аргумента
338
+ const dataAsObject = data as Record<string, unknown>;
339
+ const propName = requestDataMd.property;
340
+ const propValue = dataAsObject[propName];
341
+ this.debug('Request data property is %v.', propName);
342
+ this.debug('Argument %v is set to %v.', index, propValue);
343
+ return propValue;
344
+ } else {
345
+ this.debug(
346
+ 'No RequestDataMetadata specified for %v argument.',
347
+ index,
348
+ );
333
349
  }
334
- // если свойство данных определено,
335
- // то используем значение этого свойства
336
- // в качестве текущего аргумента
337
- const dataAsObject = data as Record<string, unknown>;
338
- const propName = requestDataMd.property;
339
- const propValue = dataAsObject[propName];
340
- this.debug('Request data property is %v.', propName);
341
- this.debug('Argument %v is set to %v.', index, propValue);
342
- return propValue;
343
- } else {
344
- this.debug(
345
- 'No RequestDataMetadata specified for %v argument.',
346
- index,
347
- );
348
- }
349
- });
350
+ });
350
351
  // выполнение операции контроллера
351
352
  const controller = this.getService(controllerCtor);
352
353
  return (controller as AnyObject)[actionName](...args);