@e22m4u/ts-rest-router 0.0.3 → 0.0.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.
@@ -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);