@bool-ts/core 1.6.8 → 1.6.10
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.
- package/__test/controller.ts +8 -2
- package/dist/decorators/arguments.d.ts +16 -11
- package/dist/decorators/arguments.js +30 -18
- package/dist/decorators/index.d.ts +1 -1
- package/dist/decorators/index.js +1 -1
- package/dist/hooks/factory.js +99 -37
- package/dist/keys/index.d.ts +1 -0
- package/dist/keys/index.js +1 -0
- package/package.json +1 -1
- package/src/decorators/arguments.ts +79 -54
- package/src/decorators/index.ts +1 -1
- package/src/hooks/factory.ts +154 -37
- package/src/keys/index.ts +1 -0
package/__test/controller.ts
CHANGED
|
@@ -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,
|
|
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",
|
|
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,17 +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;
|
|
36
|
-
|
|
40
|
+
key?: symbol;
|
|
37
41
|
};
|
|
38
|
-
export declare const RequestHeaders: (
|
|
39
|
-
export declare const
|
|
40
|
-
export declare const
|
|
41
|
-
export declare const
|
|
42
|
-
export declare const
|
|
43
|
-
export declare const
|
|
44
|
-
export declare const
|
|
45
|
-
export declare const
|
|
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 = (
|
|
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:
|
|
11
|
+
zodSchema: schema
|
|
12
12
|
};
|
|
13
13
|
Reflect.defineMetadata(argumentsKey, requestHeadersMetadata, target.constructor, methodName);
|
|
14
14
|
};
|
|
15
|
-
export const
|
|
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:
|
|
36
|
+
zodSchema: schema,
|
|
24
37
|
parser: parser
|
|
25
38
|
};
|
|
26
39
|
Reflect.defineMetadata(argumentsKey, bodyMetadata, target.constructor, methodName);
|
|
27
40
|
};
|
|
28
|
-
export const Params = (
|
|
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:
|
|
49
|
+
zodSchema: schema
|
|
37
50
|
};
|
|
38
51
|
Reflect.defineMetadata(argumentsKey, paramsMetadata, target.constructor, methodName);
|
|
39
52
|
};
|
|
40
|
-
export const Param = (key,
|
|
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:
|
|
62
|
+
zodSchema: schema
|
|
50
63
|
};
|
|
51
64
|
Reflect.defineMetadata(argumentsKey, paramMetadata, target.constructor, methodName);
|
|
52
65
|
};
|
|
53
|
-
export const Query = (
|
|
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:
|
|
74
|
+
zodSchema: schema
|
|
62
75
|
};
|
|
63
76
|
Reflect.defineMetadata(argumentsKey, queryMetadata, target.constructor, methodName);
|
|
64
77
|
};
|
|
65
|
-
export const Request = (
|
|
78
|
+
export const Request = (schema) => (target, methodName, parameterIndex) => {
|
|
66
79
|
if (!methodName) {
|
|
67
80
|
return;
|
|
68
81
|
}
|
|
@@ -70,23 +83,22 @@ export const Request = (zodSchema) => (target, methodName, parameterIndex) => {
|
|
|
70
83
|
requestMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
71
84
|
index: parameterIndex,
|
|
72
85
|
type: requestArgsKey,
|
|
73
|
-
zodSchema:
|
|
86
|
+
zodSchema: schema
|
|
74
87
|
};
|
|
75
88
|
Reflect.defineMetadata(argumentsKey, requestMetadata, target.constructor, methodName);
|
|
76
89
|
};
|
|
77
|
-
export const ResponseHeaders = (
|
|
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 = (
|
|
101
|
+
export const Context = (key) => (target, methodName, parameterIndex) => {
|
|
90
102
|
if (!methodName) {
|
|
91
103
|
return;
|
|
92
104
|
}
|
|
@@ -94,7 +106,7 @@ export const Context = (injectKey) => (target, methodName, parameterIndex) => {
|
|
|
94
106
|
responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
95
107
|
index: parameterIndex,
|
|
96
108
|
type: contextArgsKey,
|
|
97
|
-
|
|
109
|
+
key: key
|
|
98
110
|
};
|
|
99
111
|
Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
|
|
100
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";
|
package/dist/decorators/index.js
CHANGED
|
@@ -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";
|
package/dist/hooks/factory.js
CHANGED
|
@@ -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,9 +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] = !argsMetadata.
|
|
224
|
+
middlewareArguments[argsMetadata.index] = !argsMetadata.key
|
|
225
225
|
? contextHook
|
|
226
|
-
: contextHook.get(argsMetadata.
|
|
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) || undefined
|
|
239
|
+
: await argumentsResolution(headers.get(argsMetadata.key) || undefined, argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
|
|
227
240
|
break;
|
|
228
241
|
default:
|
|
229
242
|
middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -260,9 +273,22 @@ export const BoolFactory = async (target, options) => {
|
|
|
260
273
|
: await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
|
|
261
274
|
break;
|
|
262
275
|
case contextArgsKey:
|
|
263
|
-
guardArguments[argsMetadata.index] = !argsMetadata.
|
|
276
|
+
guardArguments[argsMetadata.index] = !argsMetadata.key
|
|
264
277
|
? contextHook
|
|
265
|
-
: contextHook.get(argsMetadata.
|
|
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) || undefined
|
|
291
|
+
: await argumentsResolution(headers.get(argsMetadata.key) || undefined, argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
|
|
266
292
|
break;
|
|
267
293
|
default:
|
|
268
294
|
guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -309,15 +335,28 @@ export const BoolFactory = async (target, options) => {
|
|
|
309
335
|
? await request[argsMetadata.parser || "json"]()
|
|
310
336
|
: await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
|
|
311
337
|
break;
|
|
312
|
-
case paramArgsKey:
|
|
313
|
-
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
314
|
-
? context[paramsArgsKey]?.[argsMetadata.key]
|
|
315
|
-
: await argumentsResolution(context[paramsArgsKey]?.[argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
|
|
316
|
-
break;
|
|
317
338
|
case contextArgsKey:
|
|
318
|
-
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.
|
|
339
|
+
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.key
|
|
319
340
|
? contextHook
|
|
320
|
-
: contextHook.get(argsMetadata.
|
|
341
|
+
: contextHook.get(argsMetadata.key);
|
|
342
|
+
break;
|
|
343
|
+
case requestHeadersArgsKey:
|
|
344
|
+
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
345
|
+
? headers
|
|
346
|
+
: await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
|
|
347
|
+
break;
|
|
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) || undefined, 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);
|
|
321
360
|
break;
|
|
322
361
|
default:
|
|
323
362
|
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -332,41 +371,53 @@ export const BoolFactory = async (target, options) => {
|
|
|
332
371
|
// Execute controller action
|
|
333
372
|
for (let i = 0; i < result.handlers.length; i++) {
|
|
334
373
|
const controllerActionArguments = [];
|
|
335
|
-
const
|
|
336
|
-
const handlerMetadata = Reflect.getOwnMetadata(argumentsKey,
|
|
337
|
-
{};
|
|
374
|
+
const controllerActionCollection = result.handlers[i];
|
|
375
|
+
const handlerMetadata = Reflect.getOwnMetadata(argumentsKey, controllerActionCollection.class, controllerActionCollection.funcName) || {};
|
|
338
376
|
if (handlerMetadata) {
|
|
339
377
|
for (const [_key, argsMetadata] of Object.entries(handlerMetadata)) {
|
|
340
378
|
switch (argsMetadata.type) {
|
|
341
379
|
case requestArgsKey:
|
|
342
380
|
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
343
381
|
? request
|
|
344
|
-
: await argumentsResolution(request, argsMetadata.zodSchema, argsMetadata.index,
|
|
382
|
+
: await argumentsResolution(request, argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
|
|
345
383
|
break;
|
|
346
384
|
case bodyArgsKey:
|
|
347
385
|
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
348
386
|
? await request[argsMetadata.parser || "json"]()
|
|
349
|
-
: await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index,
|
|
350
|
-
break;
|
|
351
|
-
case paramArgsKey:
|
|
352
|
-
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
353
|
-
? context[paramsArgsKey]?.[argsMetadata.key]
|
|
354
|
-
: await argumentsResolution(context[paramsArgsKey]?.[argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, controllerCollection.funcName);
|
|
387
|
+
: await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
|
|
355
388
|
break;
|
|
356
389
|
case contextArgsKey:
|
|
357
|
-
controllerActionArguments[argsMetadata.index] = !argsMetadata.
|
|
390
|
+
controllerActionArguments[argsMetadata.index] = !argsMetadata.key
|
|
358
391
|
? contextHook
|
|
359
|
-
: contextHook.get(argsMetadata.
|
|
392
|
+
: contextHook.get(argsMetadata.key);
|
|
393
|
+
break;
|
|
394
|
+
case requestHeadersArgsKey:
|
|
395
|
+
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
396
|
+
? headers
|
|
397
|
+
: await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
|
|
398
|
+
break;
|
|
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) || undefined, 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);
|
|
360
411
|
break;
|
|
361
412
|
default:
|
|
362
413
|
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
363
414
|
? context[argsMetadata.type]
|
|
364
|
-
: await argumentsResolution(context[argsMetadata.type], argsMetadata.zodSchema, argsMetadata.index,
|
|
415
|
+
: await argumentsResolution(context[argsMetadata.type], argsMetadata.zodSchema, argsMetadata.index, controllerActionCollection.funcName);
|
|
365
416
|
break;
|
|
366
417
|
}
|
|
367
418
|
}
|
|
368
419
|
}
|
|
369
|
-
responseBody = await
|
|
420
|
+
responseBody = await controllerActionCollection.func(...controllerActionArguments);
|
|
370
421
|
}
|
|
371
422
|
// Execute after dispatcher(s)
|
|
372
423
|
for (let i = 0; i < afterDispatcherGroup.length; i++) {
|
|
@@ -386,22 +437,33 @@ export const BoolFactory = async (target, options) => {
|
|
|
386
437
|
? await request[argsMetadata.parser || "json"]()
|
|
387
438
|
: await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
|
|
388
439
|
break;
|
|
389
|
-
case paramArgsKey:
|
|
390
|
-
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
391
|
-
? context[paramsArgsKey]?.[argsMetadata.key]
|
|
392
|
-
: await argumentsResolution(context[paramsArgsKey]?.[argsMetadata.key], argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
|
|
393
|
-
break;
|
|
394
440
|
case contextArgsKey:
|
|
395
|
-
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.
|
|
441
|
+
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.key
|
|
396
442
|
? contextHook
|
|
397
|
-
: contextHook.get(argsMetadata.
|
|
443
|
+
: contextHook.get(argsMetadata.key);
|
|
444
|
+
break;
|
|
445
|
+
case requestHeadersArgsKey:
|
|
446
|
+
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
447
|
+
? headers
|
|
448
|
+
: await argumentsResolution(headers.toJSON(), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
|
|
449
|
+
break;
|
|
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) || undefined, 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);
|
|
398
462
|
break;
|
|
399
463
|
default:
|
|
400
464
|
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
401
|
-
?
|
|
402
|
-
|
|
403
|
-
: context[argsMetadata.type]
|
|
404
|
-
: 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);
|
|
405
467
|
break;
|
|
406
468
|
}
|
|
407
469
|
}
|
package/dist/keys/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/keys/index.js
CHANGED
|
@@ -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
|
@@ -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,16 +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;
|
|
55
|
-
|
|
61
|
+
key?: symbol;
|
|
56
62
|
};
|
|
57
63
|
|
|
58
64
|
export const RequestHeaders =
|
|
59
|
-
(
|
|
65
|
+
(schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
60
66
|
if (!methodName) {
|
|
61
67
|
return;
|
|
62
68
|
}
|
|
@@ -66,7 +72,7 @@ export const RequestHeaders =
|
|
|
66
72
|
requestHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
67
73
|
index: parameterIndex,
|
|
68
74
|
type: requestHeadersArgsKey,
|
|
69
|
-
zodSchema:
|
|
75
|
+
zodSchema: schema
|
|
70
76
|
} satisfies Extract<
|
|
71
77
|
TArgumentsMetadata,
|
|
72
78
|
{
|
|
@@ -77,8 +83,31 @@ export const RequestHeaders =
|
|
|
77
83
|
Reflect.defineMetadata(argumentsKey, requestHeadersMetadata, target.constructor, methodName);
|
|
78
84
|
};
|
|
79
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
|
+
|
|
80
109
|
export const Body =
|
|
81
|
-
(
|
|
110
|
+
(schema?: Zod.Schema, parser?: "arrayBuffer" | "blob" | "formData" | "json" | "text") =>
|
|
82
111
|
(target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
83
112
|
if (!methodName) {
|
|
84
113
|
return;
|
|
@@ -89,7 +118,7 @@ export const Body =
|
|
|
89
118
|
bodyMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
90
119
|
index: parameterIndex,
|
|
91
120
|
type: bodyArgsKey,
|
|
92
|
-
zodSchema:
|
|
121
|
+
zodSchema: schema,
|
|
93
122
|
parser: parser
|
|
94
123
|
} satisfies Extract<
|
|
95
124
|
TArgumentsMetadata,
|
|
@@ -102,7 +131,7 @@ export const Body =
|
|
|
102
131
|
};
|
|
103
132
|
|
|
104
133
|
export const Params =
|
|
105
|
-
(
|
|
134
|
+
(schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
106
135
|
if (!methodName) {
|
|
107
136
|
return;
|
|
108
137
|
}
|
|
@@ -112,7 +141,7 @@ export const Params =
|
|
|
112
141
|
paramsMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
113
142
|
index: parameterIndex,
|
|
114
143
|
type: paramsArgsKey,
|
|
115
|
-
zodSchema:
|
|
144
|
+
zodSchema: schema
|
|
116
145
|
} satisfies Extract<
|
|
117
146
|
TArgumentsMetadata,
|
|
118
147
|
{
|
|
@@ -124,8 +153,7 @@ export const Params =
|
|
|
124
153
|
};
|
|
125
154
|
|
|
126
155
|
export const Param =
|
|
127
|
-
(key: string,
|
|
128
|
-
(target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
156
|
+
(key: string, schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
129
157
|
if (!methodName) {
|
|
130
158
|
return;
|
|
131
159
|
}
|
|
@@ -136,7 +164,7 @@ export const Param =
|
|
|
136
164
|
index: parameterIndex,
|
|
137
165
|
type: paramArgsKey,
|
|
138
166
|
key: key,
|
|
139
|
-
zodSchema:
|
|
167
|
+
zodSchema: schema
|
|
140
168
|
} satisfies Extract<
|
|
141
169
|
TArgumentsMetadata,
|
|
142
170
|
{
|
|
@@ -148,7 +176,7 @@ export const Param =
|
|
|
148
176
|
};
|
|
149
177
|
|
|
150
178
|
export const Query =
|
|
151
|
-
(
|
|
179
|
+
(schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
152
180
|
if (!methodName) {
|
|
153
181
|
return;
|
|
154
182
|
}
|
|
@@ -158,7 +186,7 @@ export const Query =
|
|
|
158
186
|
queryMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
159
187
|
index: parameterIndex,
|
|
160
188
|
type: queryArgsKey,
|
|
161
|
-
zodSchema:
|
|
189
|
+
zodSchema: schema
|
|
162
190
|
} satisfies Extract<
|
|
163
191
|
TArgumentsMetadata,
|
|
164
192
|
{
|
|
@@ -170,7 +198,7 @@ export const Query =
|
|
|
170
198
|
};
|
|
171
199
|
|
|
172
200
|
export const Request =
|
|
173
|
-
(
|
|
201
|
+
(schema?: Zod.Schema) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
174
202
|
if (!methodName) {
|
|
175
203
|
return;
|
|
176
204
|
}
|
|
@@ -180,7 +208,7 @@ export const Request =
|
|
|
180
208
|
requestMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
181
209
|
index: parameterIndex,
|
|
182
210
|
type: requestArgsKey,
|
|
183
|
-
zodSchema:
|
|
211
|
+
zodSchema: schema
|
|
184
212
|
} satisfies Extract<
|
|
185
213
|
TArgumentsMetadata,
|
|
186
214
|
{
|
|
@@ -191,46 +219,43 @@ export const Request =
|
|
|
191
219
|
Reflect.defineMetadata(argumentsKey, requestMetadata, target.constructor, methodName);
|
|
192
220
|
};
|
|
193
221
|
|
|
194
|
-
export const ResponseHeaders =
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
|
|
201
|
-
|
|
202
|
-
responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
203
|
-
index: parameterIndex,
|
|
204
|
-
type: responseHeadersArgsKey,
|
|
205
|
-
zodSchema: zodSchema
|
|
206
|
-
} satisfies Extract<
|
|
207
|
-
TArgumentsMetadata,
|
|
208
|
-
{
|
|
209
|
-
type: typeof responseHeadersArgsKey;
|
|
210
|
-
}
|
|
211
|
-
>;
|
|
222
|
+
export const ResponseHeaders = () => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
223
|
+
if (!methodName) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
212
226
|
|
|
213
|
-
|
|
214
|
-
};
|
|
227
|
+
const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
|
|
215
228
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
229
|
+
responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
230
|
+
index: parameterIndex,
|
|
231
|
+
type: responseHeadersArgsKey
|
|
232
|
+
} satisfies Extract<
|
|
233
|
+
TArgumentsMetadata,
|
|
234
|
+
{
|
|
235
|
+
type: typeof responseHeadersArgsKey;
|
|
220
236
|
}
|
|
237
|
+
>;
|
|
238
|
+
|
|
239
|
+
Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
export const Context = (key?: symbol) => (target: Object, methodName: string | symbol | undefined, parameterIndex: number) => {
|
|
243
|
+
if (!methodName) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const responseHeadersMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
|
|
248
|
+
|
|
249
|
+
responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
250
|
+
index: parameterIndex,
|
|
251
|
+
type: contextArgsKey,
|
|
252
|
+
key: key
|
|
253
|
+
} satisfies Extract<
|
|
254
|
+
TArgumentsMetadata,
|
|
255
|
+
{
|
|
256
|
+
type: typeof contextArgsKey;
|
|
257
|
+
}
|
|
258
|
+
>;
|
|
221
259
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
responseHeadersMetadata[`argumentIndexes.${parameterIndex}`] = {
|
|
225
|
-
index: parameterIndex,
|
|
226
|
-
type: contextArgsKey,
|
|
227
|
-
injectKey: injectKey
|
|
228
|
-
} satisfies Extract<
|
|
229
|
-
TArgumentsMetadata,
|
|
230
|
-
{
|
|
231
|
-
type: typeof contextArgsKey;
|
|
232
|
-
}
|
|
233
|
-
>;
|
|
234
|
-
|
|
235
|
-
Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
|
|
236
|
-
};
|
|
260
|
+
Reflect.defineMetadata(argumentsKey, responseHeadersMetadata, target.constructor, methodName);
|
|
261
|
+
};
|
package/src/decorators/index.ts
CHANGED
|
@@ -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";
|
package/src/hooks/factory.ts
CHANGED
|
@@ -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,9 +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] = !argsMetadata.
|
|
327
|
+
middlewareArguments[argsMetadata.index] = !argsMetadata.key
|
|
327
328
|
? contextHook
|
|
328
|
-
: contextHook.get(argsMetadata.
|
|
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) || undefined
|
|
347
|
+
: await argumentsResolution(
|
|
348
|
+
headers.get(argsMetadata.key) || undefined,
|
|
349
|
+
argsMetadata.zodSchema,
|
|
350
|
+
argsMetadata.index,
|
|
351
|
+
middlewareCollection.funcName
|
|
352
|
+
);
|
|
329
353
|
break;
|
|
330
354
|
default:
|
|
331
355
|
middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -383,9 +407,32 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
383
407
|
);
|
|
384
408
|
break;
|
|
385
409
|
case contextArgsKey:
|
|
386
|
-
guardArguments[argsMetadata.index] = !argsMetadata.
|
|
410
|
+
guardArguments[argsMetadata.index] = !argsMetadata.key
|
|
387
411
|
? contextHook
|
|
388
|
-
: contextHook.get(argsMetadata.
|
|
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) || undefined
|
|
430
|
+
: await argumentsResolution(
|
|
431
|
+
headers.get(argsMetadata.key) || undefined,
|
|
432
|
+
argsMetadata.zodSchema,
|
|
433
|
+
argsMetadata.index,
|
|
434
|
+
guardCollection.funcName
|
|
435
|
+
);
|
|
389
436
|
break;
|
|
390
437
|
default:
|
|
391
438
|
guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -460,20 +507,43 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
460
507
|
beforeDispatcherCollection.funcName
|
|
461
508
|
);
|
|
462
509
|
break;
|
|
463
|
-
case
|
|
510
|
+
case contextArgsKey:
|
|
511
|
+
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.key
|
|
512
|
+
? contextHook
|
|
513
|
+
: contextHook.get(argsMetadata.key);
|
|
514
|
+
break;
|
|
515
|
+
case requestHeadersArgsKey:
|
|
464
516
|
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
465
|
-
?
|
|
517
|
+
? headers
|
|
466
518
|
: await argumentsResolution(
|
|
467
|
-
|
|
519
|
+
headers.toJSON(),
|
|
468
520
|
argsMetadata.zodSchema,
|
|
469
521
|
argsMetadata.index,
|
|
470
522
|
beforeDispatcherCollection.funcName
|
|
471
523
|
);
|
|
472
524
|
break;
|
|
473
|
-
case
|
|
474
|
-
beforeDispatcherArguments[argsMetadata.index] =
|
|
475
|
-
|
|
476
|
-
|
|
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) || undefined,
|
|
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
|
+
);
|
|
477
547
|
break;
|
|
478
548
|
default:
|
|
479
549
|
beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -495,10 +565,13 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
495
565
|
// Execute controller action
|
|
496
566
|
for (let i = 0; i < result.handlers.length; i++) {
|
|
497
567
|
const controllerActionArguments = [];
|
|
498
|
-
const
|
|
568
|
+
const controllerActionCollection = result.handlers[i];
|
|
499
569
|
const handlerMetadata: Record<string, TArgumentsMetadata> =
|
|
500
|
-
Reflect.getOwnMetadata(
|
|
501
|
-
|
|
570
|
+
Reflect.getOwnMetadata(
|
|
571
|
+
argumentsKey,
|
|
572
|
+
controllerActionCollection.class,
|
|
573
|
+
controllerActionCollection.funcName
|
|
574
|
+
) || {};
|
|
502
575
|
|
|
503
576
|
if (handlerMetadata) {
|
|
504
577
|
for (const [_key, argsMetadata] of Object.entries(handlerMetadata)) {
|
|
@@ -510,7 +583,7 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
510
583
|
request,
|
|
511
584
|
argsMetadata.zodSchema,
|
|
512
585
|
argsMetadata.index,
|
|
513
|
-
|
|
586
|
+
controllerActionCollection.funcName
|
|
514
587
|
);
|
|
515
588
|
break;
|
|
516
589
|
case bodyArgsKey:
|
|
@@ -520,23 +593,46 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
520
593
|
await request[argsMetadata.parser || "json"](),
|
|
521
594
|
argsMetadata.zodSchema,
|
|
522
595
|
argsMetadata.index,
|
|
523
|
-
|
|
596
|
+
controllerActionCollection.funcName
|
|
524
597
|
);
|
|
525
598
|
break;
|
|
526
|
-
case
|
|
599
|
+
case contextArgsKey:
|
|
600
|
+
controllerActionArguments[argsMetadata.index] = !argsMetadata.key
|
|
601
|
+
? contextHook
|
|
602
|
+
: contextHook.get(argsMetadata.key);
|
|
603
|
+
break;
|
|
604
|
+
case requestHeadersArgsKey:
|
|
527
605
|
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
528
|
-
?
|
|
606
|
+
? headers
|
|
529
607
|
: await argumentsResolution(
|
|
530
|
-
|
|
608
|
+
headers.toJSON(),
|
|
531
609
|
argsMetadata.zodSchema,
|
|
532
610
|
argsMetadata.index,
|
|
533
|
-
|
|
611
|
+
controllerActionCollection.funcName
|
|
534
612
|
);
|
|
535
613
|
break;
|
|
536
|
-
case
|
|
537
|
-
controllerActionArguments[argsMetadata.index] =
|
|
538
|
-
|
|
539
|
-
|
|
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) || undefined,
|
|
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
|
+
);
|
|
540
636
|
break;
|
|
541
637
|
default:
|
|
542
638
|
controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
@@ -545,14 +641,14 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
545
641
|
context[argsMetadata.type],
|
|
546
642
|
argsMetadata.zodSchema,
|
|
547
643
|
argsMetadata.index,
|
|
548
|
-
|
|
644
|
+
controllerActionCollection.funcName
|
|
549
645
|
);
|
|
550
646
|
break;
|
|
551
647
|
}
|
|
552
648
|
}
|
|
553
649
|
}
|
|
554
650
|
|
|
555
|
-
responseBody = await
|
|
651
|
+
responseBody = await controllerActionCollection.func(...controllerActionArguments);
|
|
556
652
|
}
|
|
557
653
|
|
|
558
654
|
// Execute after dispatcher(s)
|
|
@@ -589,28 +685,49 @@ export const BoolFactory = async (target: new (...args: any[]) => unknown, optio
|
|
|
589
685
|
afterDispatcherCollection.funcName
|
|
590
686
|
);
|
|
591
687
|
break;
|
|
592
|
-
case
|
|
688
|
+
case contextArgsKey:
|
|
689
|
+
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.key
|
|
690
|
+
? contextHook
|
|
691
|
+
: contextHook.get(argsMetadata.key);
|
|
692
|
+
break;
|
|
693
|
+
case requestHeadersArgsKey:
|
|
593
694
|
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
594
|
-
?
|
|
695
|
+
? headers
|
|
595
696
|
: await argumentsResolution(
|
|
596
|
-
|
|
697
|
+
headers.toJSON(),
|
|
597
698
|
argsMetadata.zodSchema,
|
|
598
699
|
argsMetadata.index,
|
|
599
700
|
afterDispatcherCollection.funcName
|
|
600
701
|
);
|
|
601
702
|
break;
|
|
602
|
-
case
|
|
603
|
-
afterDispatcherArguments[argsMetadata.index] =
|
|
604
|
-
|
|
605
|
-
|
|
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) || undefined,
|
|
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
|
+
);
|
|
606
725
|
break;
|
|
607
726
|
default:
|
|
608
727
|
afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
|
|
609
|
-
?
|
|
610
|
-
? undefined
|
|
611
|
-
: context[argsMetadata.type]
|
|
728
|
+
? context[argsMetadata.type]
|
|
612
729
|
: await argumentsResolution(
|
|
613
|
-
|
|
730
|
+
context[argsMetadata.type],
|
|
614
731
|
argsMetadata.zodSchema,
|
|
615
732
|
argsMetadata.index,
|
|
616
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__");
|