@bool-ts/core 1.6.7 → 1.6.9

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.
@@ -2,7 +2,7 @@ import type { IService } from "./interfaces";
2
2
 
3
3
  import * as Zod from "zod";
4
4
 
5
- import { Body, Controller, Delete, Get, Inject, Options, Params, Patch, Post, Put, Param, Query } from "../src";
5
+ import { Body, Controller, Delete, Get, Inject, Options, Param, Params, Patch, Post, Put, Query, RequestHeaders } from "../src";
6
6
  import { TestService } from "./service";
7
7
 
8
8
  const postParamsSchema = Zod.object({
@@ -31,6 +31,10 @@ const stringSchema = Zod.object({}).refine(async (val) => {
31
31
  return val;
32
32
  });
33
33
 
34
+ const headersSchema = Zod.object({
35
+ "content-type": Zod.string()
36
+ });
37
+
34
38
  @Controller("test")
35
39
  export class TestController {
36
40
  constructor(
@@ -48,6 +52,8 @@ export class TestController {
48
52
 
49
53
  @Post("abc/:id/provider/:providerId")
50
54
  public async post(
55
+ @RequestHeaders(headersSchema)
56
+ headers: Zod.infer<typeof headersSchema>,
51
57
  @Params()
52
58
  params: any,
53
59
  @Query()
@@ -55,7 +61,7 @@ export class TestController {
55
61
  @Body(bodySchema)
56
62
  body: Zod.infer<typeof bodySchema>
57
63
  ) {
58
- console.log("req.headers", query);
64
+ console.log("req.headers", headers);
59
65
  console.log("===========================");
60
66
  }
61
67
 
@@ -1,9 +1,14 @@
1
1
  import * as Zod from "zod";
2
- import { bodyArgsKey, contextArgsKey, paramArgsKey, paramsArgsKey, queryArgsKey, requestArgsKey, requestHeadersArgsKey, responseHeadersArgsKey } from "../keys";
2
+ import { bodyArgsKey, contextArgsKey, paramArgsKey, paramsArgsKey, queryArgsKey, requestArgsKey, requestHeaderArgsKey, requestHeadersArgsKey, responseHeadersArgsKey } from "../keys";
3
3
  export type TArgumentsMetadata = {
4
4
  index: number;
5
5
  type: typeof requestHeadersArgsKey;
6
6
  zodSchema?: Zod.Schema;
7
+ } | {
8
+ index: number;
9
+ type: typeof requestHeaderArgsKey;
10
+ key: string;
11
+ zodSchema?: Zod.Schema;
7
12
  } | {
8
13
  index: number;
9
14
  type: typeof bodyArgsKey;
@@ -29,16 +34,17 @@ export type TArgumentsMetadata = {
29
34
  } | {
30
35
  index: number;
31
36
  type: typeof responseHeadersArgsKey;
32
- zodSchema?: Zod.Schema;
33
37
  } | {
34
38
  index: number;
35
39
  type: typeof contextArgsKey;
40
+ key?: symbol;
36
41
  };
37
- export declare const RequestHeaders: (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
38
- export declare const Body: (zodSchema?: Zod.Schema, parser?: "arrayBuffer" | "blob" | "formData" | "json" | "text") => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
39
- export declare const Params: (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
40
- export declare const Param: (key: string, zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
41
- export declare const Query: (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
42
- export declare const Request: (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
43
- export declare const ResponseHeaders: (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
44
- export declare const Context: () => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
42
+ export declare const RequestHeaders: (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
43
+ export declare const RequestHeader: (key: string, schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
44
+ export declare const Body: (schema?: Zod.Schema, parser?: "arrayBuffer" | "blob" | "formData" | "json" | "text") => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
45
+ export declare const Params: (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
46
+ export declare const Param: (key: string, schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
47
+ export declare const Query: (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
48
+ export declare const Request: (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
49
+ export declare const ResponseHeaders: () => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
50
+ export declare const Context: (key?: symbol) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => void;
@@ -1,6 +1,6 @@
1
1
  import * as Zod from "zod";
2
- import { argumentsKey, bodyArgsKey, contextArgsKey, paramArgsKey, paramsArgsKey, queryArgsKey, requestArgsKey, requestHeadersArgsKey, responseHeadersArgsKey } from "../keys";
3
- export const RequestHeaders = (zodSchema) => (target, methodName, parameterIndex) => {
2
+ import { argumentsKey, bodyArgsKey, contextArgsKey, paramArgsKey, paramsArgsKey, queryArgsKey, requestArgsKey, requestHeaderArgsKey, requestHeadersArgsKey, responseHeadersArgsKey } from "../keys";
3
+ export const RequestHeaders = (schema) => (target, methodName, parameterIndex) => {
4
4
  if (!methodName) {
5
5
  return;
6
6
  }
@@ -8,11 +8,24 @@ export const RequestHeaders = (zodSchema) => (target, methodName, parameterIndex
8
8
  requestHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
9
9
  index: parameterIndex,
10
10
  type: requestHeadersArgsKey,
11
- zodSchema: zodSchema
11
+ zodSchema: schema
12
12
  };
13
13
  Reflect.defineMetadata(argumentsKey, requestHeadersMetadata, target.constructor, methodName);
14
14
  };
15
- export const Body = (zodSchema, parser) => (target, methodName, parameterIndex) => {
15
+ export const RequestHeader = (key, schema) => (target, methodName, parameterIndex) => {
16
+ if (!methodName) {
17
+ return;
18
+ }
19
+ const requestHeaderMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
20
+ requestHeaderMetadata[`argumentIndexes.${parameterIndex}`] = {
21
+ index: parameterIndex,
22
+ type: requestHeaderArgsKey,
23
+ key: key,
24
+ zodSchema: schema
25
+ };
26
+ Reflect.defineMetadata(argumentsKey, requestHeaderMetadata, target.constructor, methodName);
27
+ };
28
+ export const Body = (schema, parser) => (target, methodName, parameterIndex) => {
16
29
  if (!methodName) {
17
30
  return;
18
31
  }
@@ -20,12 +33,12 @@ export const Body = (zodSchema, parser) => (target, methodName, parameterIndex)
20
33
  bodyMetadata[`argumentIndexes.${parameterIndex}`] = {
21
34
  index: parameterIndex,
22
35
  type: bodyArgsKey,
23
- zodSchema: zodSchema,
36
+ zodSchema: schema,
24
37
  parser: parser
25
38
  };
26
39
  Reflect.defineMetadata(argumentsKey, bodyMetadata, target.constructor, methodName);
27
40
  };
28
- export const Params = (zodSchema) => (target, methodName, parameterIndex) => {
41
+ export const Params = (schema) => (target, methodName, parameterIndex) => {
29
42
  if (!methodName) {
30
43
  return;
31
44
  }
@@ -33,11 +46,11 @@ export const Params = (zodSchema) => (target, methodName, parameterIndex) => {
33
46
  paramsMetadata[`argumentIndexes.${parameterIndex}`] = {
34
47
  index: parameterIndex,
35
48
  type: paramsArgsKey,
36
- zodSchema: zodSchema
49
+ zodSchema: schema
37
50
  };
38
51
  Reflect.defineMetadata(argumentsKey, paramsMetadata, target.constructor, methodName);
39
52
  };
40
- export const Param = (key, zodSchema) => (target, methodName, parameterIndex) => {
53
+ export const Param = (key, schema) => (target, methodName, parameterIndex) => {
41
54
  if (!methodName) {
42
55
  return;
43
56
  }
@@ -46,11 +59,11 @@ export const Param = (key, zodSchema) => (target, methodName, parameterIndex) =>
46
59
  index: parameterIndex,
47
60
  type: paramArgsKey,
48
61
  key: key,
49
- zodSchema: zodSchema
62
+ zodSchema: schema
50
63
  };
51
64
  Reflect.defineMetadata(argumentsKey, paramMetadata, target.constructor, methodName);
52
65
  };
53
- export const Query = (zodSchema) => (target, methodName, parameterIndex) => {
66
+ export const Query = (schema) => (target, methodName, parameterIndex) => {
54
67
  if (!methodName) {
55
68
  return;
56
69
  }
@@ -58,11 +71,11 @@ export const Query = (zodSchema) => (target, methodName, parameterIndex) => {
58
71
  queryMetadata[`argumentIndexes.${parameterIndex}`] = {
59
72
  index: parameterIndex,
60
73
  type: queryArgsKey,
61
- zodSchema: zodSchema
74
+ zodSchema: schema
62
75
  };
63
76
  Reflect.defineMetadata(argumentsKey, queryMetadata, target.constructor, methodName);
64
77
  };
65
- export const Request = (zodSchema) => (target, methodName, parameterIndex) => {
78
+ export const Request = (schema) => (target, methodName, parameterIndex) => {
66
79
  if (!methodName) {
67
80
  return;
68
81
  }
@@ -70,30 +83,30 @@ export const Request = (zodSchema) => (target, methodName, parameterIndex) => {
70
83
  requestMetadata[`argumentIndexes.${parameterIndex}`] = {
71
84
  index: parameterIndex,
72
85
  type: requestArgsKey,
73
- zodSchema: zodSchema
86
+ zodSchema: schema
74
87
  };
75
88
  Reflect.defineMetadata(argumentsKey, requestMetadata, target.constructor, methodName);
76
89
  };
77
- export const ResponseHeaders = (zodSchema) => (target, methodName, parameterIndex) => {
90
+ export const ResponseHeaders = () => (target, methodName, parameterIndex) => {
78
91
  if (!methodName) {
79
92
  return;
80
93
  }
81
94
  const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
82
95
  responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
83
96
  index: parameterIndex,
84
- type: responseHeadersArgsKey,
85
- zodSchema: zodSchema
97
+ type: responseHeadersArgsKey
86
98
  };
87
99
  Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
88
100
  };
89
- export const Context = () => (target, methodName, parameterIndex) => {
101
+ export const Context = (key) => (target, methodName, parameterIndex) => {
90
102
  if (!methodName) {
91
103
  return;
92
104
  }
93
105
  const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
94
106
  responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
95
107
  index: parameterIndex,
96
- type: contextArgsKey
108
+ type: contextArgsKey,
109
+ key: key
97
110
  };
98
111
  Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
99
112
  };
@@ -1,4 +1,4 @@
1
- export { Body, Context, Param, Params, Query, Request, RequestHeaders, ResponseHeaders } from "./arguments";
1
+ export { Body, Context, Param, Params, Query, Request, RequestHeader, RequestHeaders, ResponseHeaders } from "./arguments";
2
2
  export { Controller } from "./controller";
3
3
  export { Dispatcher } from "./dispatcher";
4
4
  export { Guard } from "./guard";
@@ -1,4 +1,4 @@
1
- export { Body, Context, Param, Params, Query, Request, RequestHeaders, ResponseHeaders } from "./arguments";
1
+ export { Body, Context, Param, Params, Query, Request, RequestHeader, RequestHeaders, ResponseHeaders } from "./arguments";
2
2
  export { Controller } from "./controller";
3
3
  export { Dispatcher } from "./dispatcher";
4
4
  export { Guard } from "./guard";
@@ -4,7 +4,7 @@ import Qs from "qs";
4
4
  import * as Zod from "zod";
5
5
  import { Router, RouterGroup } from "../entities";
6
6
  import { HttpClientError, HttpServerError, jsonErrorInfer } from "../http";
7
- import { argumentsKey, bodyArgsKey, configKey, contextArgsKey, controllerHttpKey, controllerKey, moduleKey, paramArgsKey, paramsArgsKey, queryArgsKey, requestArgsKey, requestHeadersArgsKey, responseHeadersArgsKey } from "../keys";
7
+ import { argumentsKey, bodyArgsKey, configKey, contextArgsKey, controllerHttpKey, controllerKey, moduleKey, paramArgsKey, paramsArgsKey, queryArgsKey, requestArgsKey, requestHeaderArgsKey, requestHeadersArgsKey, responseHeadersArgsKey } from "../keys";
8
8
  import { Injector } from "./injector";
9
9
  export const controllerCreator = (controllerConstructor, group, prefix) => {
10
10
  if (!Reflect.getOwnMetadataKeys(controllerConstructor).includes(controllerKey)) {
@@ -221,7 +221,22 @@ export const BoolFactory = async (target, options) => {
221
221
  : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
222
222
  break;
223
223
  case contextArgsKey:
224
- middlewareArguments[argsMetadata.index] = contextHook;
224
+ middlewareArguments[argsMetadata.index] = !argsMetadata.key
225
+ ? contextHook
226
+ : contextHook.get(argsMetadata.key);
227
+ break;
228
+ case requestHeadersArgsKey:
229
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
230
+ ? headers
231
+ : await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
232
+ break;
233
+ case responseHeadersArgsKey:
234
+ middlewareArguments[argsMetadata.index] = context[argsMetadata.type];
235
+ break;
236
+ case requestHeaderArgsKey:
237
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
238
+ ? headers.get(argsMetadata.key)
239
+ : await argumentsResolution(headers.get(argsMetadata.key), argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
225
240
  break;
226
241
  default:
227
242
  middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -258,7 +273,22 @@ export const BoolFactory = async (target, options) => {
258
273
  : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
259
274
  break;
260
275
  case contextArgsKey:
261
- guardArguments[argsMetadata.index] = contextHook;
276
+ guardArguments[argsMetadata.index] = !argsMetadata.key
277
+ ? contextHook
278
+ : contextHook.get(argsMetadata.key);
279
+ break;
280
+ case requestHeadersArgsKey:
281
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
282
+ ? headers
283
+ : await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
284
+ break;
285
+ case responseHeadersArgsKey:
286
+ guardArguments[argsMetadata.index] = context[argsMetadata.type];
287
+ break;
288
+ case requestHeaderArgsKey:
289
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
290
+ ? headers.get(argsMetadata.key)
291
+ : await argumentsResolution(headers.get(argsMetadata.key), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
262
292
  break;
263
293
  default:
264
294
  guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -305,13 +335,28 @@ export const BoolFactory = async (target, options) => {
305
335
  ? await request[argsMetadata.parser || "json"]()
306
336
  : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
307
337
  break;
308
- case paramArgsKey:
338
+ case contextArgsKey:
339
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.key
340
+ ? contextHook
341
+ : contextHook.get(argsMetadata.key);
342
+ break;
343
+ case requestHeadersArgsKey:
309
344
  beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
310
- ? context[paramsArgsKey]?.[argsMetadata.key]
311
- : await argumentsResolution(context[paramsArgsKey]?.[argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
345
+ ? headers
346
+ : await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
312
347
  break;
313
- case contextArgsKey:
314
- beforeDispatcherArguments[argsMetadata.index] = contextHook;
348
+ case responseHeadersArgsKey:
349
+ beforeDispatcherArguments[argsMetadata.index] = context[argsMetadata.type];
350
+ break;
351
+ case requestHeaderArgsKey:
352
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
353
+ ? headers.get(argsMetadata.key) || undefined
354
+ : await argumentsResolution(headers.get(argsMetadata.key), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
355
+ break;
356
+ case paramArgsKey:
357
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
358
+ ? context[paramArgsKey][argsMetadata.key] || undefined
359
+ : await argumentsResolution(context[paramArgsKey][argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
315
360
  break;
316
361
  default:
317
362
  beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -326,39 +371,53 @@ export const BoolFactory = async (target, options) => {
326
371
  // Execute controller action
327
372
  for (let i = 0; i < result.handlers.length; i++) {
328
373
  const controllerActionArguments = [];
329
- const controllerCollection = result.handlers[i];
330
- const handlerMetadata = Reflect.getOwnMetadata(argumentsKey, controllerCollection.class, controllerCollection.funcName) ||
331
- {};
374
+ const controllerActionCollection = result.handlers[i];
375
+ const handlerMetadata = Reflect.getOwnMetadata(argumentsKey, controllerActionCollection.class, controllerActionCollection.funcName) || {};
332
376
  if (handlerMetadata) {
333
377
  for (const [_key, argsMetadata] of Object.entries(handlerMetadata)) {
334
378
  switch (argsMetadata.type) {
335
379
  case requestArgsKey:
336
380
  controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
337
381
  ? request
338
- : await argumentsResolution(request, argsMetadata.zodSchema, argsMetadata.index, controllerCollection.funcName);
382
+ : await argumentsResolution(request, argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
339
383
  break;
340
384
  case bodyArgsKey:
341
385
  controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
342
386
  ? await request[argsMetadata.parser || "json"]()
343
- : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, controllerCollection.funcName);
387
+ : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
344
388
  break;
345
- case paramArgsKey:
389
+ case contextArgsKey:
390
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.key
391
+ ? contextHook
392
+ : contextHook.get(argsMetadata.key);
393
+ break;
394
+ case requestHeadersArgsKey:
346
395
  controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
347
- ? context[paramsArgsKey]?.[argsMetadata.key]
348
- : await argumentsResolution(context[paramsArgsKey]?.[argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, controllerCollection.funcName);
396
+ ? headers
397
+ : await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
349
398
  break;
350
- case contextArgsKey:
351
- controllerActionArguments[argsMetadata.index] = contextHook;
399
+ case responseHeadersArgsKey:
400
+ controllerActionArguments[argsMetadata.index] = context[argsMetadata.type];
401
+ break;
402
+ case requestHeaderArgsKey:
403
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
404
+ ? headers.get(argsMetadata.key) || undefined
405
+ : await argumentsResolution(headers.get(argsMetadata.key), argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
406
+ break;
407
+ case paramArgsKey:
408
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
409
+ ? context[paramArgsKey][argsMetadata.key] || undefined
410
+ : await argumentsResolution(context[paramArgsKey][argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
352
411
  break;
353
412
  default:
354
413
  controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
355
414
  ? context[argsMetadata.type]
356
- : await argumentsResolution(context[argsMetadata.type], argsMetadata.zodSchema, argsMetadata.index, controllerCollection.funcName);
415
+ : await argumentsResolution(context[argsMetadata.type], argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
357
416
  break;
358
417
  }
359
418
  }
360
419
  }
361
- responseBody = await controllerCollection.func(...controllerActionArguments);
420
+ responseBody = await controllerActionCollection.func(...controllerActionArguments);
362
421
  }
363
422
  // Execute after dispatcher(s)
364
423
  for (let i = 0; i < afterDispatcherGroup.length; i++) {
@@ -378,20 +437,33 @@ export const BoolFactory = async (target, options) => {
378
437
  ? await request[argsMetadata.parser || "json"]()
379
438
  : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
380
439
  break;
381
- case paramArgsKey:
440
+ case contextArgsKey:
441
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.key
442
+ ? contextHook
443
+ : contextHook.get(argsMetadata.key);
444
+ break;
445
+ case requestHeadersArgsKey:
382
446
  afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
383
- ? context[paramsArgsKey]?.[argsMetadata.key]
384
- : await argumentsResolution(context[paramsArgsKey]?.[argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
447
+ ? headers
448
+ : await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
385
449
  break;
386
- case contextArgsKey:
387
- afterDispatcherArguments[argsMetadata.index] = contextHook;
450
+ case responseHeadersArgsKey:
451
+ afterDispatcherArguments[argsMetadata.index] = context[argsMetadata.type];
452
+ break;
453
+ case requestHeaderArgsKey:
454
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
455
+ ? headers.get(argsMetadata.key) || undefined
456
+ : await argumentsResolution(headers.get(argsMetadata.key), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
457
+ break;
458
+ case paramArgsKey:
459
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
460
+ ? context[paramArgsKey][argsMetadata.key] || undefined
461
+ : await argumentsResolution(context[paramArgsKey][argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
388
462
  break;
389
463
  default:
390
464
  afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
391
- ? !(argsMetadata.type in context)
392
- ? undefined
393
- : context[argsMetadata.type]
394
- : await argumentsResolution(!(argsMetadata.type in context) ? undefined : context[argsMetadata.type], argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
465
+ ? context[argsMetadata.type]
466
+ : await argumentsResolution(context[argsMetadata.type], argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
395
467
  break;
396
468
  }
397
469
  }
@@ -10,6 +10,7 @@ export declare const middlewareKey: unique symbol;
10
10
  export declare const moduleKey: unique symbol;
11
11
  export declare const controllerRouteZodSchemaKey: unique symbol;
12
12
  export declare const requestHeadersArgsKey: unique symbol;
13
+ export declare const requestHeaderArgsKey: unique symbol;
13
14
  export declare const bodyArgsKey: unique symbol;
14
15
  export declare const paramsArgsKey: unique symbol;
15
16
  export declare const paramArgsKey: unique symbol;
@@ -10,6 +10,7 @@ export const middlewareKey = Symbol("__bool:middleware__");
10
10
  export const moduleKey = Symbol("__bool:module__");
11
11
  export const controllerRouteZodSchemaKey = Symbol("__bool:controller.route.zodSchema__");
12
12
  export const requestHeadersArgsKey = Symbol("__bool:arguments:requestHeaders__");
13
+ export const requestHeaderArgsKey = Symbol("__bool:arguments:requestHeader__");
13
14
  export const bodyArgsKey = Symbol("__bool:arguments:body__");
14
15
  export const paramsArgsKey = Symbol("__bool:arguments:params__");
15
16
  export const paramArgsKey = Symbol("__bool:arguments:param__");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bool-ts/core",
3
- "version": "1.6.7",
3
+ "version": "1.6.9",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -7,6 +7,7 @@ import {
7
7
  paramsArgsKey,
8
8
  queryArgsKey,
9
9
  requestArgsKey,
10
+ requestHeaderArgsKey,
10
11
  requestHeadersArgsKey,
11
12
  responseHeadersArgsKey
12
13
  } from "../keys";
@@ -17,6 +18,12 @@ export type TArgumentsMetadata =
17
18
  type: typeof requestHeadersArgsKey;
18
19
  zodSchema?: Zod.Schema;
19
20
  }
21
+ | {
22
+ index: number;
23
+ type: typeof requestHeaderArgsKey;
24
+ key: string;
25
+ zodSchema?: Zod.Schema;
26
+ }
20
27
  | {
21
28
  index: number;
22
29
  type: typeof bodyArgsKey;
@@ -47,15 +54,15 @@ export type TArgumentsMetadata =
47
54
  | {
48
55
  index: number;
49
56
  type: typeof responseHeadersArgsKey;
50
- zodSchema?: Zod.Schema;
51
57
  }
52
58
  | {
53
59
  index: number;
54
60
  type: typeof contextArgsKey;
61
+ key?: symbol;
55
62
  };
56
63
 
57
64
  export const RequestHeaders =
58
- (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
65
+ (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
59
66
  if (!methodName) {
60
67
  return;
61
68
  }
@@ -65,7 +72,7 @@ export const RequestHeaders =
65
72
  requestHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
66
73
  index: parameterIndex,
67
74
  type: requestHeadersArgsKey,
68
- zodSchema: zodSchema
75
+ zodSchema: schema
69
76
  } satisfies Extract<
70
77
  TArgumentsMetadata,
71
78
  {
@@ -76,8 +83,31 @@ export const RequestHeaders =
76
83
  Reflect.defineMetadata(argumentsKey, requestHeadersMetadata, target.constructor, methodName);
77
84
  };
78
85
 
86
+ export const RequestHeader =
87
+ (key: string, schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
88
+ if (!methodName) {
89
+ return;
90
+ }
91
+
92
+ const requestHeaderMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
93
+
94
+ requestHeaderMetadata[`argumentIndexes.${parameterIndex}`] = {
95
+ index: parameterIndex,
96
+ type: requestHeaderArgsKey,
97
+ key: key,
98
+ zodSchema: schema
99
+ } satisfies Extract<
100
+ TArgumentsMetadata,
101
+ {
102
+ type: typeof requestHeaderArgsKey;
103
+ }
104
+ >;
105
+
106
+ Reflect.defineMetadata(argumentsKey, requestHeaderMetadata, target.constructor, methodName);
107
+ };
108
+
79
109
  export const Body =
80
- (zodSchema?: Zod.Schema, parser?: "arrayBuffer" | "blob" | "formData" | "json" | "text") =>
110
+ (schema?: Zod.Schema, parser?: "arrayBuffer" | "blob" | "formData" | "json" | "text") =>
81
111
  (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
82
112
  if (!methodName) {
83
113
  return;
@@ -88,7 +118,7 @@ export const Body =
88
118
  bodyMetadata[`argumentIndexes.${parameterIndex}`] = {
89
119
  index: parameterIndex,
90
120
  type: bodyArgsKey,
91
- zodSchema: zodSchema,
121
+ zodSchema: schema,
92
122
  parser: parser
93
123
  } satisfies Extract<
94
124
  TArgumentsMetadata,
@@ -101,7 +131,7 @@ export const Body =
101
131
  };
102
132
 
103
133
  export const Params =
104
- (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
134
+ (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
105
135
  if (!methodName) {
106
136
  return;
107
137
  }
@@ -111,7 +141,7 @@ export const Params =
111
141
  paramsMetadata[`argumentIndexes.${parameterIndex}`] = {
112
142
  index: parameterIndex,
113
143
  type: paramsArgsKey,
114
- zodSchema: zodSchema
144
+ zodSchema: schema
115
145
  } satisfies Extract<
116
146
  TArgumentsMetadata,
117
147
  {
@@ -123,8 +153,7 @@ export const Params =
123
153
  };
124
154
 
125
155
  export const Param =
126
- (key: string, zodSchema?: Zod.Schema) =>
127
- (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
156
+ (key: string, schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
128
157
  if (!methodName) {
129
158
  return;
130
159
  }
@@ -135,7 +164,7 @@ export const Param =
135
164
  index: parameterIndex,
136
165
  type: paramArgsKey,
137
166
  key: key,
138
- zodSchema: zodSchema
167
+ zodSchema: schema
139
168
  } satisfies Extract<
140
169
  TArgumentsMetadata,
141
170
  {
@@ -147,7 +176,7 @@ export const Param =
147
176
  };
148
177
 
149
178
  export const Query =
150
- (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
179
+ (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
151
180
  if (!methodName) {
152
181
  return;
153
182
  }
@@ -157,7 +186,7 @@ export const Query =
157
186
  queryMetadata[`argumentIndexes.${parameterIndex}`] = {
158
187
  index: parameterIndex,
159
188
  type: queryArgsKey,
160
- zodSchema: zodSchema
189
+ zodSchema: schema
161
190
  } satisfies Extract<
162
191
  TArgumentsMetadata,
163
192
  {
@@ -169,7 +198,7 @@ export const Query =
169
198
  };
170
199
 
171
200
  export const Request =
172
- (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
201
+ (schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
173
202
  if (!methodName) {
174
203
  return;
175
204
  }
@@ -179,7 +208,7 @@ export const Request =
179
208
  requestMetadata[`argumentIndexes.${parameterIndex}`] = {
180
209
  index: parameterIndex,
181
210
  type: requestArgsKey,
182
- zodSchema: zodSchema
211
+ zodSchema: schema
183
212
  } satisfies Extract<
184
213
  TArgumentsMetadata,
185
214
  {
@@ -190,29 +219,27 @@ export const Request =
190
219
  Reflect.defineMetadata(argumentsKey, requestMetadata, target.constructor, methodName);
191
220
  };
192
221
 
193
- export const ResponseHeaders =
194
- (zodSchema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
195
- if (!methodName) {
196
- return;
197
- }
222
+ export const ResponseHeaders = () => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
223
+ if (!methodName) {
224
+ return;
225
+ }
198
226
 
199
- const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
227
+ const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
200
228
 
201
- responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
202
- index: parameterIndex,
203
- type: responseHeadersArgsKey,
204
- zodSchema: zodSchema
205
- } satisfies Extract<
206
- TArgumentsMetadata,
207
- {
208
- type: typeof responseHeadersArgsKey;
209
- }
210
- >;
229
+ responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
230
+ index: parameterIndex,
231
+ type: responseHeadersArgsKey
232
+ } satisfies Extract<
233
+ TArgumentsMetadata,
234
+ {
235
+ type: typeof responseHeadersArgsKey;
236
+ }
237
+ >;
211
238
 
212
- Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
213
- };
239
+ Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
240
+ };
214
241
 
215
- export const Context = () => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
242
+ export const Context = (key?: symbol) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
216
243
  if (!methodName) {
217
244
  return;
218
245
  }
@@ -221,7 +248,8 @@ export const Context = () => (target: Object, methodName: string | symbol | unde
221
248
 
222
249
  responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
223
250
  index: parameterIndex,
224
- type: contextArgsKey
251
+ type: contextArgsKey,
252
+ key: key
225
253
  } satisfies Extract<
226
254
  TArgumentsMetadata,
227
255
  {
@@ -1,4 +1,4 @@
1
- export { Body, Context, Param, Params, Query, Request, RequestHeaders, ResponseHeaders } from "./arguments";
1
+ export { Body, Context, Param, Params, Query, Request, RequestHeader, RequestHeaders, ResponseHeaders } from "./arguments";
2
2
  export { Controller } from "./controller";
3
3
  export { Dispatcher } from "./dispatcher";
4
4
  export { Guard } from "./guard";
@@ -22,6 +22,7 @@ import {
22
22
  paramsArgsKey,
23
23
  queryArgsKey,
24
24
  requestArgsKey,
25
+ requestHeaderArgsKey,
25
26
  requestHeadersArgsKey,
26
27
  responseHeadersArgsKey
27
28
  } from "../keys";
@@ -323,7 +324,32 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
323
324
  );
324
325
  break;
325
326
  case contextArgsKey:
326
- middlewareArguments[argsMetadata.index] = contextHook;
327
+ middlewareArguments[argsMetadata.index] = !argsMetadata.key
328
+ ? contextHook
329
+ : contextHook.get(argsMetadata.key);
330
+ break;
331
+ case requestHeadersArgsKey:
332
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
333
+ ? headers
334
+ : await argumentsResolution(
335
+ headers.toJSON(),
336
+ argsMetadata.zodSchema,
337
+ argsMetadata.index,
338
+ middlewareCollection.funcName
339
+ );
340
+ break;
341
+ case responseHeadersArgsKey:
342
+ middlewareArguments[argsMetadata.index] = context[argsMetadata.type];
343
+ break;
344
+ case requestHeaderArgsKey:
345
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
346
+ ? headers.get(argsMetadata.key)
347
+ : await argumentsResolution(
348
+ headers.get(argsMetadata.key),
349
+ argsMetadata.zodSchema,
350
+ argsMetadata.index,
351
+ middlewareCollection.funcName
352
+ );
327
353
  break;
328
354
  default:
329
355
  middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -381,7 +407,32 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
381
407
  );
382
408
  break;
383
409
  case contextArgsKey:
384
- guardArguments[argsMetadata.index] = contextHook;
410
+ guardArguments[argsMetadata.index] = !argsMetadata.key
411
+ ? contextHook
412
+ : contextHook.get(argsMetadata.key);
413
+ break;
414
+ case requestHeadersArgsKey:
415
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
416
+ ? headers
417
+ : await argumentsResolution(
418
+ headers.toJSON(),
419
+ argsMetadata.zodSchema,
420
+ argsMetadata.index,
421
+ guardCollection.funcName
422
+ );
423
+ break;
424
+ case responseHeadersArgsKey:
425
+ guardArguments[argsMetadata.index] = context[argsMetadata.type];
426
+ break;
427
+ case requestHeaderArgsKey:
428
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
429
+ ? headers.get(argsMetadata.key)
430
+ : await argumentsResolution(
431
+ headers.get(argsMetadata.key),
432
+ argsMetadata.zodSchema,
433
+ argsMetadata.index,
434
+ guardCollection.funcName
435
+ );
385
436
  break;
386
437
  default:
387
438
  guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -456,18 +507,43 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
456
507
  beforeDispatcherCollection.funcName
457
508
  );
458
509
  break;
459
- case paramArgsKey:
510
+ case contextArgsKey:
511
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.key
512
+ ? contextHook
513
+ : contextHook.get(argsMetadata.key);
514
+ break;
515
+ case requestHeadersArgsKey:
460
516
  beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
461
- ? context[paramsArgsKey]?.[argsMetadata.key]
517
+ ? headers
462
518
  : await argumentsResolution(
463
- context[paramsArgsKey]?.[argsMetadata.key],
519
+ headers.toJSON(),
464
520
  argsMetadata.zodSchema,
465
521
  argsMetadata.index,
466
522
  beforeDispatcherCollection.funcName
467
523
  );
468
524
  break;
469
- case contextArgsKey:
470
- beforeDispatcherArguments[argsMetadata.index] = contextHook;
525
+ case responseHeadersArgsKey:
526
+ beforeDispatcherArguments[argsMetadata.index] = context[argsMetadata.type];
527
+ break;
528
+ case requestHeaderArgsKey:
529
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
530
+ ? headers.get(argsMetadata.key) || undefined
531
+ : await argumentsResolution(
532
+ headers.get(argsMetadata.key),
533
+ argsMetadata.zodSchema,
534
+ argsMetadata.index,
535
+ beforeDispatcherCollection.funcName
536
+ );
537
+ break;
538
+ case paramArgsKey:
539
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
540
+ ? context[paramArgsKey][argsMetadata.key] || undefined
541
+ : await argumentsResolution(
542
+ context[paramArgsKey][argsMetadata.key],
543
+ argsMetadata.zodSchema,
544
+ argsMetadata.index,
545
+ beforeDispatcherCollection.funcName
546
+ );
471
547
  break;
472
548
  default:
473
549
  beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -489,10 +565,13 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
489
565
  // Execute controller action
490
566
  for (let i = 0; i < result.handlers.length; i++) {
491
567
  const controllerActionArguments = [];
492
- const controllerCollection = result.handlers[i];
568
+ const controllerActionCollection = result.handlers[i];
493
569
  const handlerMetadata: Record<string, TArgumentsMetadata> =
494
- Reflect.getOwnMetadata(argumentsKey, controllerCollection.class, controllerCollection.funcName) ||
495
- {};
570
+ Reflect.getOwnMetadata(
571
+ argumentsKey,
572
+ controllerActionCollection.class,
573
+ controllerActionCollection.funcName
574
+ ) || {};
496
575
 
497
576
  if (handlerMetadata) {
498
577
  for (const [_key, argsMetadata] of Object.entries(handlerMetadata)) {
@@ -504,7 +583,7 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
504
583
  request,
505
584
  argsMetadata.zodSchema,
506
585
  argsMetadata.index,
507
- controllerCollection.funcName
586
+ controllerActionCollection.funcName
508
587
  );
509
588
  break;
510
589
  case bodyArgsKey:
@@ -514,21 +593,46 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
514
593
  await request[argsMetadata.parser || "json"](),
515
594
  argsMetadata.zodSchema,
516
595
  argsMetadata.index,
517
- controllerCollection.funcName
596
+ controllerActionCollection.funcName
518
597
  );
519
598
  break;
520
- case paramArgsKey:
599
+ case contextArgsKey:
600
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.key
601
+ ? contextHook
602
+ : contextHook.get(argsMetadata.key);
603
+ break;
604
+ case requestHeadersArgsKey:
521
605
  controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
522
- ? context[paramsArgsKey]?.[argsMetadata.key]
606
+ ? headers
523
607
  : await argumentsResolution(
524
- context[paramsArgsKey]?.[argsMetadata.key],
608
+ headers.toJSON(),
525
609
  argsMetadata.zodSchema,
526
610
  argsMetadata.index,
527
- controllerCollection.funcName
611
+ controllerActionCollection.funcName
528
612
  );
529
613
  break;
530
- case contextArgsKey:
531
- controllerActionArguments[argsMetadata.index] = contextHook;
614
+ case responseHeadersArgsKey:
615
+ controllerActionArguments[argsMetadata.index] = context[argsMetadata.type];
616
+ break;
617
+ case requestHeaderArgsKey:
618
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
619
+ ? headers.get(argsMetadata.key) || undefined
620
+ : await argumentsResolution(
621
+ headers.get(argsMetadata.key),
622
+ argsMetadata.zodSchema,
623
+ argsMetadata.index,
624
+ controllerActionCollection.funcName
625
+ );
626
+ break;
627
+ case paramArgsKey:
628
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
629
+ ? context[paramArgsKey][argsMetadata.key] || undefined
630
+ : await argumentsResolution(
631
+ context[paramArgsKey][argsMetadata.key],
632
+ argsMetadata.zodSchema,
633
+ argsMetadata.index,
634
+ controllerActionCollection.funcName
635
+ );
532
636
  break;
533
637
  default:
534
638
  controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
@@ -537,14 +641,14 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
537
641
  context[argsMetadata.type],
538
642
  argsMetadata.zodSchema,
539
643
  argsMetadata.index,
540
- controllerCollection.funcName
644
+ controllerActionCollection.funcName
541
645
  );
542
646
  break;
543
647
  }
544
648
  }
545
649
  }
546
650
 
547
- responseBody = await controllerCollection.func(...controllerActionArguments);
651
+ responseBody = await controllerActionCollection.func(...controllerActionArguments);
548
652
  }
549
653
 
550
654
  // Execute after dispatcher(s)
@@ -581,26 +685,49 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
581
685
  afterDispatcherCollection.funcName
582
686
  );
583
687
  break;
584
- case paramArgsKey:
688
+ case contextArgsKey:
689
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.key
690
+ ? contextHook
691
+ : contextHook.get(argsMetadata.key);
692
+ break;
693
+ case requestHeadersArgsKey:
585
694
  afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
586
- ? context[paramsArgsKey]?.[argsMetadata.key]
695
+ ? headers
587
696
  : await argumentsResolution(
588
- context[paramsArgsKey]?.[argsMetadata.key],
697
+ headers.toJSON(),
589
698
  argsMetadata.zodSchema,
590
699
  argsMetadata.index,
591
700
  afterDispatcherCollection.funcName
592
701
  );
593
702
  break;
594
- case contextArgsKey:
595
- afterDispatcherArguments[argsMetadata.index] = contextHook;
703
+ case responseHeadersArgsKey:
704
+ afterDispatcherArguments[argsMetadata.index] = context[argsMetadata.type];
705
+ break;
706
+ case requestHeaderArgsKey:
707
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
708
+ ? headers.get(argsMetadata.key) || undefined
709
+ : await argumentsResolution(
710
+ headers.get(argsMetadata.key),
711
+ argsMetadata.zodSchema,
712
+ argsMetadata.index,
713
+ afterDispatcherCollection.funcName
714
+ );
715
+ break;
716
+ case paramArgsKey:
717
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
718
+ ? context[paramArgsKey][argsMetadata.key] || undefined
719
+ : await argumentsResolution(
720
+ context[paramArgsKey][argsMetadata.key],
721
+ argsMetadata.zodSchema,
722
+ argsMetadata.index,
723
+ afterDispatcherCollection.funcName
724
+ );
596
725
  break;
597
726
  default:
598
727
  afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
599
- ? !(argsMetadata.type in context)
600
- ? undefined
601
- : context[argsMetadata.type]
728
+ ? context[argsMetadata.type]
602
729
  : await argumentsResolution(
603
- !(argsMetadata.type in context) ? undefined : context[argsMetadata.type],
730
+ context[argsMetadata.type],
604
731
  argsMetadata.zodSchema,
605
732
  argsMetadata.index,
606
733
  afterDispatcherCollection.funcName
package/src/keys/index.ts CHANGED
@@ -11,6 +11,7 @@ export const moduleKey = Symbol("__bool:module__");
11
11
  export const controllerRouteZodSchemaKey = Symbol("__bool:controller.route.zodSchema__");
12
12
 
13
13
  export const requestHeadersArgsKey = Symbol("__bool:arguments:requestHeaders__");
14
+ export const requestHeaderArgsKey = Symbol("__bool:arguments:requestHeader__");
14
15
  export const bodyArgsKey = Symbol("__bool:arguments:body__");
15
16
  export const paramsArgsKey = Symbol("__bool:arguments:params__");
16
17
  export const paramArgsKey = Symbol("__bool:arguments:param__");