@bool-ts/core 1.5.10 → 1.6.1

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.
@@ -79,338 +79,364 @@ export const argumentsResolution = async (data, zodSchema, argumentIndex, funcNa
79
79
  });
80
80
  }
81
81
  };
82
- export const BoolFactory = (target, options) => {
83
- if (!Reflect.getOwnMetadataKeys(target).includes(moduleKey)) {
84
- throw Error(`${target.name} is not a module.`);
85
- }
86
- const moduleMetadata = Reflect.getOwnMetadata(moduleKey, target);
87
- if (!moduleMetadata) {
88
- return Bun.serve({
89
- port: options.port,
90
- fetch: () => new Response()
91
- });
92
- }
93
- const { middlewares, guards, beforeDispatchers, controllers, afterDispatchers, prefix: modulePrefix } = moduleMetadata;
94
- // Middleware(s)
95
- const middlewareGroup = !middlewares
96
- ? []
97
- : middlewares.map((middleware) => {
98
- const middlewareInstance = Injector.get(middleware);
99
- return Object.freeze({
100
- class: middleware,
101
- funcName: "enforce",
102
- func: middlewareInstance.enforce.bind(middlewareInstance)
82
+ export const BoolFactory = async (target, options) => {
83
+ try {
84
+ if (!Reflect.getOwnMetadataKeys(target).includes(moduleKey)) {
85
+ throw Error(`${target.name} is not a module.`);
86
+ }
87
+ const moduleMetadata = Reflect.getOwnMetadata(moduleKey, target);
88
+ if (!moduleMetadata) {
89
+ return Bun.serve({
90
+ port: options.port,
91
+ fetch: () => new Response()
103
92
  });
104
- });
105
- // Guard(s)
106
- const guardGroup = !guards
107
- ? []
108
- : guards.map((guard) => {
109
- const guardInstance = Injector.get(guard);
110
- return Object.freeze({
111
- class: guard,
112
- funcName: "enforce",
113
- func: guardInstance.enforce.bind(guardInstance)
93
+ }
94
+ const { middlewares, guards, beforeDispatchers, controllers, afterDispatchers, prefix: modulePrefix, config: moduleConfig } = moduleMetadata;
95
+ // Middleware(s)
96
+ const middlewareGroup = !middlewares
97
+ ? []
98
+ : middlewares.map((middleware) => {
99
+ const middlewareInstance = Injector.get(middleware);
100
+ return Object.freeze({
101
+ class: middleware,
102
+ funcName: "enforce",
103
+ func: middlewareInstance.enforce.bind(middlewareInstance)
104
+ });
114
105
  });
115
- });
116
- // Before dispatcher(s)
117
- const beforeDispatcherGroup = !beforeDispatchers
118
- ? []
119
- : beforeDispatchers.map((beforeDispatcher) => {
120
- const beforeDispatcherInstance = Injector.get(beforeDispatcher);
121
- return Object.freeze({
122
- class: beforeDispatcher,
123
- funcName: "execute",
124
- func: beforeDispatcherInstance.execute.bind(beforeDispatcherInstance)
106
+ // Guard(s)
107
+ const guardGroup = !guards
108
+ ? []
109
+ : guards.map((guard) => {
110
+ const guardInstance = Injector.get(guard);
111
+ return Object.freeze({
112
+ class: guard,
113
+ funcName: "enforce",
114
+ func: guardInstance.enforce.bind(guardInstance)
115
+ });
125
116
  });
126
- });
127
- // Controller(s)
128
- const routerGroup = new RouterGroup();
129
- controllers &&
130
- controllers.map((controllerConstructor) => controllerCreator(controllerConstructor, routerGroup, `${options.prefix || ""}/${modulePrefix || ""}`));
131
- const { allowLogsMethods } = Object.freeze({
132
- allowLogsMethods: options?.log?.methods
133
- });
134
- // After dispatcher(s)
135
- const afterDispatcherGroup = !afterDispatchers
136
- ? []
137
- : afterDispatchers.map((afterDispatcher) => {
138
- const afterDispatcherInstance = Injector.get(afterDispatcher);
139
- return Object.freeze({
140
- class: afterDispatcher,
141
- funcName: "execute",
142
- func: afterDispatcherInstance.execute.bind(afterDispatcherInstance)
117
+ // Before dispatcher(s)
118
+ const beforeDispatcherGroup = !beforeDispatchers
119
+ ? []
120
+ : beforeDispatchers.map((beforeDispatcher) => {
121
+ const beforeDispatcherInstance = Injector.get(beforeDispatcher);
122
+ return Object.freeze({
123
+ class: beforeDispatcher,
124
+ funcName: "execute",
125
+ func: beforeDispatcherInstance.execute.bind(beforeDispatcherInstance)
126
+ });
143
127
  });
128
+ // Controller(s)
129
+ const routerGroup = new RouterGroup();
130
+ controllers &&
131
+ controllers.map((controllerConstructor) => controllerCreator(controllerConstructor, routerGroup, `${options.prefix || ""}/${modulePrefix || ""}`));
132
+ // After dispatcher(s)
133
+ const afterDispatcherGroup = !afterDispatchers
134
+ ? []
135
+ : afterDispatchers.map((afterDispatcher) => {
136
+ const afterDispatcherInstance = Injector.get(afterDispatcher);
137
+ return Object.freeze({
138
+ class: afterDispatcher,
139
+ funcName: "execute",
140
+ func: afterDispatcherInstance.execute.bind(afterDispatcherInstance)
141
+ });
142
+ });
143
+ const { allowLogsMethods, config } = Object.freeze({
144
+ allowLogsMethods: options?.log?.methods,
145
+ config: {
146
+ ...(typeof options.config !== "function" ? options.config : await options.config()),
147
+ ...(typeof moduleConfig !== "function" ? moduleConfig : await moduleConfig())
148
+ }
144
149
  });
145
- Bun.serve({
146
- port: options.port,
147
- fetch: async (request) => {
148
- const start = performance.now();
149
- const url = new URL(request.url);
150
- const reqHeaders = request.headers;
151
- const resHeaders = new Headers();
152
- const query = Qs.parse(url.searchParams.toString(), options.queryParser);
153
- try {
154
- // Execute middleware(s)
155
- for (let i = 0; i < middlewareGroup.length; i++) {
156
- const middlewareArguments = [];
157
- const middlewareCollection = middlewareGroup[i];
158
- const middlewareMetadata = Reflect.getOwnMetadata(argumentsKey, middlewareCollection.class, middlewareCollection.funcName) || {};
159
- if (middlewareMetadata) {
160
- for (const [_key, argsMetadata] of Object.entries(middlewareMetadata)) {
161
- switch (argsMetadata.type) {
162
- case EArgumentTypes.requestHeaders:
163
- middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
164
- ? reqHeaders
165
- : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
166
- break;
167
- case EArgumentTypes.body:
168
- middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
169
- ? await request[argsMetadata.parser || "json"]()
170
- : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
171
- break;
172
- case EArgumentTypes.query:
173
- middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
174
- ? query
175
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
176
- break;
177
- case EArgumentTypes.request:
178
- middlewareArguments[argsMetadata.index] = request;
179
- break;
180
- case EArgumentTypes.responseHeaders:
181
- middlewareArguments[argsMetadata.index] = resHeaders;
182
- break;
150
+ Bun.serve({
151
+ port: options.port,
152
+ fetch: async (request) => {
153
+ const start = performance.now();
154
+ const url = new URL(request.url);
155
+ const reqHeaders = request.headers;
156
+ const resHeaders = new Headers();
157
+ const query = Qs.parse(url.searchParams.toString(), options.queryParser);
158
+ try {
159
+ // Execute middleware(s)
160
+ for (let i = 0; i < middlewareGroup.length; i++) {
161
+ const middlewareArguments = [];
162
+ const middlewareCollection = middlewareGroup[i];
163
+ const middlewareMetadata = Reflect.getOwnMetadata(argumentsKey, middlewareCollection.class, middlewareCollection.funcName) ||
164
+ {};
165
+ if (middlewareMetadata) {
166
+ for (const [_key, argsMetadata] of Object.entries(middlewareMetadata)) {
167
+ switch (argsMetadata.type) {
168
+ case EArgumentTypes.requestHeaders:
169
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
170
+ ? reqHeaders
171
+ : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
172
+ break;
173
+ case EArgumentTypes.body:
174
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
175
+ ? await request[argsMetadata.parser || "json"]()
176
+ : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
177
+ break;
178
+ case EArgumentTypes.query:
179
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
180
+ ? query
181
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
182
+ break;
183
+ case EArgumentTypes.request:
184
+ middlewareArguments[argsMetadata.index] = request;
185
+ break;
186
+ case EArgumentTypes.responseHeaders:
187
+ middlewareArguments[argsMetadata.index] = resHeaders;
188
+ break;
189
+ case EArgumentTypes.config:
190
+ middlewareArguments[argsMetadata.index] = config;
191
+ break;
192
+ }
183
193
  }
184
194
  }
195
+ const middlewareResult = await middlewareCollection.func(...middlewareArguments);
196
+ if (!(middlewareResult instanceof Response)) {
197
+ continue;
198
+ }
199
+ return middlewareResult;
185
200
  }
186
- const middlewareResult = await middlewareCollection.func(...middlewareArguments);
187
- if (!(middlewareResult instanceof Response)) {
188
- continue;
189
- }
190
- return middlewareResult;
191
- }
192
- // Execute guard(s)
193
- for (let i = 0; i < guardGroup.length; i++) {
194
- const guardArguments = [];
195
- const guardCollection = guardGroup[i];
196
- const guardMetadata = Reflect.getOwnMetadata(argumentsKey, guardCollection.class, guardCollection.funcName) || {};
197
- if (guardMetadata) {
198
- for (const [_key, argsMetadata] of Object.entries(guardMetadata)) {
199
- switch (argsMetadata.type) {
200
- case EArgumentTypes.requestHeaders:
201
- guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
202
- ? reqHeaders
203
- : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
204
- break;
205
- case EArgumentTypes.body:
206
- guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
207
- ? await request[argsMetadata.parser || "json"]()
208
- : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
209
- break;
210
- case EArgumentTypes.query:
211
- guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
212
- ? query
213
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
214
- break;
215
- case EArgumentTypes.request:
216
- guardArguments[argsMetadata.index] = request;
217
- break;
218
- case EArgumentTypes.responseHeaders:
219
- guardArguments[argsMetadata.index] = resHeaders;
220
- break;
201
+ // Execute guard(s)
202
+ for (let i = 0; i < guardGroup.length; i++) {
203
+ const guardArguments = [];
204
+ const guardCollection = guardGroup[i];
205
+ const guardMetadata = Reflect.getOwnMetadata(argumentsKey, guardCollection.class, guardCollection.funcName) || {};
206
+ if (guardMetadata) {
207
+ for (const [_key, argsMetadata] of Object.entries(guardMetadata)) {
208
+ switch (argsMetadata.type) {
209
+ case EArgumentTypes.requestHeaders:
210
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
211
+ ? reqHeaders
212
+ : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
213
+ break;
214
+ case EArgumentTypes.body:
215
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
216
+ ? await request[argsMetadata.parser || "json"]()
217
+ : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
218
+ break;
219
+ case EArgumentTypes.query:
220
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
221
+ ? query
222
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
223
+ break;
224
+ case EArgumentTypes.request:
225
+ guardArguments[argsMetadata.index] = request;
226
+ break;
227
+ case EArgumentTypes.responseHeaders:
228
+ guardArguments[argsMetadata.index] = resHeaders;
229
+ break;
230
+ case EArgumentTypes.config:
231
+ guardArguments[argsMetadata.index] = config;
232
+ break;
233
+ }
221
234
  }
222
235
  }
236
+ const guardResult = await guardCollection.func(...guardArguments);
237
+ if (typeof guardResult !== "boolean" || !guardResult) {
238
+ throw new HttpClientError({
239
+ httpCode: 401,
240
+ message: "Unauthorization.",
241
+ data: undefined
242
+ });
243
+ }
223
244
  }
224
- const guardResult = await guardCollection.func(...guardArguments);
225
- if (typeof guardResult !== "boolean" || !guardResult) {
245
+ const result = routerGroup.find(url.pathname, request.method);
246
+ if (!result) {
226
247
  throw new HttpClientError({
227
- httpCode: 401,
228
- message: "Unauthorization.",
248
+ httpCode: 404,
249
+ message: "Route not found.",
229
250
  data: undefined
230
251
  });
231
252
  }
232
- }
233
- const result = routerGroup.find(url.pathname, request.method);
234
- if (!result) {
235
- throw new HttpClientError({
236
- httpCode: 404,
237
- message: "Route not found.",
238
- data: undefined
239
- });
240
- }
241
- const params = result.params;
242
- let responseBody = undefined;
243
- // Execute before dispatcher(s)
244
- for (let i = 0; i < beforeDispatcherGroup.length; i++) {
245
- const beforeDispatcherArguments = [];
246
- const beforeDispatcherCollection = beforeDispatcherGroup[i];
247
- const beforeDispatcherMetadata = Reflect.getOwnMetadata(argumentsKey, beforeDispatcherCollection.class, beforeDispatcherCollection.funcName) || {};
248
- if (beforeDispatcherMetadata) {
249
- for (const [_key, argsMetadata] of Object.entries(beforeDispatcherMetadata)) {
250
- switch (argsMetadata.type) {
251
- case EArgumentTypes.requestHeaders:
252
- beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
253
- ? reqHeaders
254
- : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
255
- break;
256
- case EArgumentTypes.body:
257
- beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
258
- ? await request[argsMetadata.parser || "json"]()
259
- : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
260
- break;
261
- case EArgumentTypes.params:
262
- beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
263
- ? params
264
- : await argumentsResolution(params, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
265
- break;
266
- case EArgumentTypes.query:
267
- beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
268
- ? query
269
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
270
- break;
271
- case EArgumentTypes.param:
272
- beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
273
- ? !(argsMetadata.key in params)
274
- ? undefined
275
- : params[argsMetadata.key]
276
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
277
- break;
278
- case EArgumentTypes.request:
279
- beforeDispatcherArguments[argsMetadata.index] = request;
280
- break;
281
- case EArgumentTypes.responseHeaders:
282
- beforeDispatcherArguments[argsMetadata.index] = resHeaders;
283
- break;
253
+ const params = result.params;
254
+ let responseBody = undefined;
255
+ // Execute before dispatcher(s)
256
+ for (let i = 0; i < beforeDispatcherGroup.length; i++) {
257
+ const beforeDispatcherArguments = [];
258
+ const beforeDispatcherCollection = beforeDispatcherGroup[i];
259
+ const beforeDispatcherMetadata = Reflect.getOwnMetadata(argumentsKey, beforeDispatcherCollection.class, beforeDispatcherCollection.funcName) || {};
260
+ if (beforeDispatcherMetadata) {
261
+ for (const [_key, argsMetadata] of Object.entries(beforeDispatcherMetadata)) {
262
+ switch (argsMetadata.type) {
263
+ case EArgumentTypes.requestHeaders:
264
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
265
+ ? reqHeaders
266
+ : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
267
+ break;
268
+ case EArgumentTypes.body:
269
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
270
+ ? await request[argsMetadata.parser || "json"]()
271
+ : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
272
+ break;
273
+ case EArgumentTypes.params:
274
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
275
+ ? params
276
+ : await argumentsResolution(params, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
277
+ break;
278
+ case EArgumentTypes.query:
279
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
280
+ ? query
281
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
282
+ break;
283
+ case EArgumentTypes.param:
284
+ beforeDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
285
+ ? !(argsMetadata.key in params)
286
+ ? undefined
287
+ : params[argsMetadata.key]
288
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, beforeDispatcherCollection.funcName);
289
+ break;
290
+ case EArgumentTypes.request:
291
+ beforeDispatcherArguments[argsMetadata.index] = request;
292
+ break;
293
+ case EArgumentTypes.responseHeaders:
294
+ beforeDispatcherArguments[argsMetadata.index] = resHeaders;
295
+ break;
296
+ case EArgumentTypes.config:
297
+ beforeDispatcherArguments[argsMetadata.index] = config;
298
+ break;
299
+ }
284
300
  }
285
301
  }
302
+ await beforeDispatcherCollection.func(...beforeDispatcherArguments);
286
303
  }
287
- await beforeDispatcherCollection.func(...beforeDispatcherArguments);
288
- }
289
- // Execute controller action
290
- for (let i = 0; i < result.handlers.length; i++) {
291
- const controllerActionArguments = [];
292
- const handler = result.handlers[i];
293
- const handlerMetadata = Reflect.getOwnMetadata(argumentsKey, handler.class, handler.funcName) || {};
294
- if (handlerMetadata) {
295
- for (const [_key, argsMetadata] of Object.entries(handlerMetadata)) {
296
- switch (argsMetadata.type) {
297
- case EArgumentTypes.requestHeaders:
298
- controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
299
- ? reqHeaders
300
- : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
301
- break;
302
- case EArgumentTypes.body:
303
- controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
304
- ? await request[argsMetadata.parser || "json"]()
305
- : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
306
- break;
307
- case EArgumentTypes.params:
308
- controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
309
- ? params
310
- : await argumentsResolution(params, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
311
- break;
312
- case EArgumentTypes.query:
313
- controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
314
- ? query
315
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
316
- break;
317
- case EArgumentTypes.param:
318
- controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
319
- ? !(argsMetadata.key in params)
320
- ? undefined
321
- : params[argsMetadata.key]
322
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
323
- break;
324
- case EArgumentTypes.request:
325
- controllerActionArguments[argsMetadata.index] = request;
326
- break;
327
- case EArgumentTypes.responseHeaders:
328
- controllerActionArguments[argsMetadata.index] = resHeaders;
329
- break;
304
+ // Execute controller action
305
+ for (let i = 0; i < result.handlers.length; i++) {
306
+ const controllerActionArguments = [];
307
+ const handler = result.handlers[i];
308
+ const handlerMetadata = Reflect.getOwnMetadata(argumentsKey, handler.class, handler.funcName) || {};
309
+ if (handlerMetadata) {
310
+ for (const [_key, argsMetadata] of Object.entries(handlerMetadata)) {
311
+ switch (argsMetadata.type) {
312
+ case EArgumentTypes.requestHeaders:
313
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
314
+ ? reqHeaders
315
+ : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
316
+ break;
317
+ case EArgumentTypes.body:
318
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
319
+ ? await request[argsMetadata.parser || "json"]()
320
+ : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
321
+ break;
322
+ case EArgumentTypes.params:
323
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
324
+ ? params
325
+ : await argumentsResolution(params, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
326
+ break;
327
+ case EArgumentTypes.query:
328
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
329
+ ? query
330
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
331
+ break;
332
+ case EArgumentTypes.param:
333
+ controllerActionArguments[argsMetadata.index] = !argsMetadata.zodSchema
334
+ ? !(argsMetadata.key in params)
335
+ ? undefined
336
+ : params[argsMetadata.key]
337
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, handler.funcName);
338
+ break;
339
+ case EArgumentTypes.request:
340
+ controllerActionArguments[argsMetadata.index] = request;
341
+ break;
342
+ case EArgumentTypes.responseHeaders:
343
+ controllerActionArguments[argsMetadata.index] = resHeaders;
344
+ break;
345
+ case EArgumentTypes.config:
346
+ controllerActionArguments[argsMetadata.index] = config;
347
+ break;
348
+ }
330
349
  }
331
350
  }
351
+ responseBody = await handler.func(...controllerActionArguments);
332
352
  }
333
- responseBody = await handler.func(...controllerActionArguments);
334
- }
335
- // Execute after dispatcher(s)
336
- for (let i = 0; i < afterDispatcherGroup.length; i++) {
337
- const afterDispatcherArguments = [];
338
- const afterDispatcherCollection = afterDispatcherGroup[i];
339
- const afterDispatcherMetadata = Reflect.getOwnMetadata(argumentsKey, afterDispatcherCollection.class, afterDispatcherCollection.funcName) || {};
340
- if (afterDispatcherMetadata) {
341
- for (const [_key, argsMetadata] of Object.entries(afterDispatcherMetadata)) {
342
- switch (argsMetadata.type) {
343
- case EArgumentTypes.requestHeaders:
344
- afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
345
- ? reqHeaders
346
- : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
347
- break;
348
- case EArgumentTypes.body:
349
- afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
350
- ? await request[argsMetadata.parser || "json"]()
351
- : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
352
- break;
353
- case EArgumentTypes.params:
354
- afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
355
- ? params
356
- : await argumentsResolution(params, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
357
- break;
358
- case EArgumentTypes.query:
359
- afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
360
- ? query
361
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
362
- break;
363
- case EArgumentTypes.param:
364
- afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
365
- ? !(argsMetadata.key in params)
366
- ? undefined
367
- : params[argsMetadata.key]
368
- : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
369
- break;
370
- case EArgumentTypes.request:
371
- afterDispatcherArguments[argsMetadata.index] = request;
372
- break;
373
- case EArgumentTypes.responseHeaders:
374
- afterDispatcherArguments[argsMetadata.index] = resHeaders;
375
- break;
353
+ // Execute after dispatcher(s)
354
+ for (let i = 0; i < afterDispatcherGroup.length; i++) {
355
+ const afterDispatcherArguments = [];
356
+ const afterDispatcherCollection = afterDispatcherGroup[i];
357
+ const afterDispatcherMetadata = Reflect.getOwnMetadata(argumentsKey, afterDispatcherCollection.class, afterDispatcherCollection.funcName) || {};
358
+ if (afterDispatcherMetadata) {
359
+ for (const [_key, argsMetadata] of Object.entries(afterDispatcherMetadata)) {
360
+ switch (argsMetadata.type) {
361
+ case EArgumentTypes.requestHeaders:
362
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
363
+ ? reqHeaders
364
+ : await argumentsResolution(reqHeaders, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
365
+ break;
366
+ case EArgumentTypes.body:
367
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
368
+ ? await request[argsMetadata.parser || "json"]()
369
+ : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
370
+ break;
371
+ case EArgumentTypes.params:
372
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
373
+ ? params
374
+ : await argumentsResolution(params, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
375
+ break;
376
+ case EArgumentTypes.query:
377
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
378
+ ? query
379
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
380
+ break;
381
+ case EArgumentTypes.param:
382
+ afterDispatcherArguments[argsMetadata.index] = !argsMetadata.zodSchema
383
+ ? !(argsMetadata.key in params)
384
+ ? undefined
385
+ : params[argsMetadata.key]
386
+ : await argumentsResolution(query, argsMetadata.zodSchema, argsMetadata.index, afterDispatcherCollection.funcName);
387
+ break;
388
+ case EArgumentTypes.request:
389
+ afterDispatcherArguments[argsMetadata.index] = request;
390
+ break;
391
+ case EArgumentTypes.responseHeaders:
392
+ afterDispatcherArguments[argsMetadata.index] = resHeaders;
393
+ break;
394
+ case EArgumentTypes.config:
395
+ afterDispatcherArguments[argsMetadata.index] = config;
396
+ break;
397
+ }
376
398
  }
377
399
  }
400
+ await afterDispatcherCollection.func(...afterDispatcherArguments);
378
401
  }
379
- await afterDispatcherCollection.func(...afterDispatcherArguments);
402
+ // Set default header(s)
403
+ resHeaders.set("X-Powered-By", "Bool Typescript");
404
+ return responseBody instanceof Response
405
+ ? responseBody
406
+ : new Response(!responseBody
407
+ ? undefined
408
+ : JSON.stringify({
409
+ httpCode: 200,
410
+ message: "SUCCESS",
411
+ data: responseBody
412
+ }), {
413
+ status: !responseBody ? 204 : 200,
414
+ statusText: "SUCCESS",
415
+ headers: resHeaders
416
+ });
380
417
  }
381
- // Set default header(s)
382
- resHeaders.set("X-Powered-By", "Bool Typescript");
383
- return responseBody instanceof Response
384
- ? responseBody
385
- : new Response(!responseBody
386
- ? undefined
387
- : JSON.stringify({
388
- httpCode: 200,
389
- message: "SUCCESS",
390
- data: responseBody
391
- }), {
392
- status: !responseBody ? 204 : 200,
393
- statusText: "SUCCESS",
394
- headers: resHeaders
395
- });
396
- }
397
- catch (error) {
398
- // Set default header(s)
399
- resHeaders.set("X-Powered-By", "Bool Typescript");
400
- return jsonErrorInfer(error, resHeaders);
401
- }
402
- finally {
403
- if (allowLogsMethods) {
404
- const end = performance.now();
405
- const convertedPID = `${process.pid}`.yellow;
406
- const convertedMethod = `${request.method.yellow}`.bgBlue;
407
- const convertedReqIp = `${request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip") || "<Unknown>"}`.yellow;
408
- const convertedTime = `${Math.round((end - start + Number.EPSILON) * 10 ** 2) / 10 ** 2}ms`.yellow;
409
- allowLogsMethods.includes(request.method.toUpperCase()) &&
410
- console.info(`PID: ${convertedPID} - Method: ${convertedMethod} - IP: ${convertedReqIp} - ${url.pathname.blue} - Time: ${convertedTime}`);
418
+ catch (error) {
419
+ // Set default header(s)
420
+ resHeaders.set("X-Powered-By", "Bool Typescript");
421
+ return jsonErrorInfer(error, resHeaders);
422
+ }
423
+ finally {
424
+ if (allowLogsMethods) {
425
+ const end = performance.now();
426
+ const convertedPID = `${process.pid}`.yellow;
427
+ const convertedMethod = `${request.method.yellow}`.bgBlue;
428
+ const convertedReqIp = `${request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip") || "<Unknown>"}`.yellow;
429
+ const convertedTime = `${Math.round((end - start + Number.EPSILON) * 10 ** 2) / 10 ** 2}ms`.yellow;
430
+ allowLogsMethods.includes(request.method.toUpperCase()) &&
431
+ console.info(`PID: ${convertedPID} - Method: ${convertedMethod} - IP: ${convertedReqIp} - ${url.pathname.blue} - Time: ${convertedTime}`);
432
+ }
411
433
  }
412
434
  }
413
- }
414
- });
435
+ });
436
+ }
437
+ catch (error) {
438
+ console.error(error);
439
+ throw error;
440
+ }
415
441
  };
416
442
  export default BoolFactory;