@bool-ts/core 1.5.5 → 1.5.7

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 } from "../src";
5
+ import { Body, Controller, Delete, Get, Inject, Options, Params, Patch, Post, Put, Param, Query } from "../src";
6
6
  import { TestService } from "./service";
7
7
 
8
8
  const postParamsSchema = Zod.object({
@@ -45,10 +45,12 @@ export class TestController {
45
45
  public async post(
46
46
  @Params()
47
47
  params: any,
48
+ @Query()
49
+ query: any,
48
50
  @Body(bodySchema)
49
51
  body: Zod.infer<typeof bodySchema>
50
52
  ) {
51
- console.log("req.headers", body, params);
53
+ console.log("req.headers", query);
52
54
  console.log("===========================");
53
55
  }
54
56
 
package/__test/module.ts CHANGED
@@ -10,9 +10,6 @@ import { TestService } from "./service";
10
10
  import { SecondGuard } from "./secondGuard";
11
11
 
12
12
  @Module({
13
- options: {
14
- allowOrigins: ["*"]
15
- },
16
13
  middlewares: [FirstMiddleware, SecondMiddleware],
17
14
  guards: [FirstGuard, SecondGuard],
18
15
  beforeDispatchers: [BeforeDispatcher],
package/bun.lockb CHANGED
Binary file
@@ -74,7 +74,7 @@ export const Query = (zodSchema) => {
74
74
  const queryMetadata = Reflect.getOwnMetadata(argumentsKey, target.constructor, methodName) || {};
75
75
  queryMetadata[`argumentIndexes.${parameterIndex}`] = {
76
76
  index: parameterIndex,
77
- type: EArgumentTypes.params,
77
+ type: EArgumentTypes.query,
78
78
  zodSchema: zodSchema
79
79
  };
80
80
  Reflect.defineMetadata(argumentsKey, queryMetadata, target.constructor, methodName);
@@ -149,6 +149,7 @@ export const BoolFactory = (target, options) => {
149
149
  const url = new URL(request.url);
150
150
  const reqHeaders = request.headers;
151
151
  const resHeaders = new Headers();
152
+ const query = Qs.parse(url.searchParams.toString(), options.queryParser);
152
153
  try {
153
154
  // Execute middleware(s)
154
155
  for (let i = 0; i < middlewareGroup.length; i++) {
@@ -168,6 +169,11 @@ export const BoolFactory = (target, options) => {
168
169
  ? await request[argsMetadata.parser || "json"]()
169
170
  : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, middlewareCollection.funcName);
170
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;
171
177
  case EArgumentTypes.request:
172
178
  middlewareArguments[argsMetadata.index] = request;
173
179
  break;
@@ -201,6 +207,11 @@ export const BoolFactory = (target, options) => {
201
207
  ? await request[argsMetadata.parser || "json"]()
202
208
  : await argumentsResolution(await request[argsMetadata.parser || "json"](), argsMetadata.zodSchema, argsMetadata.index, guardCollection.funcName);
203
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;
204
215
  case EArgumentTypes.request:
205
216
  guardArguments[argsMetadata.index] = request;
206
217
  break;
@@ -228,7 +239,6 @@ export const BoolFactory = (target, options) => {
228
239
  });
229
240
  }
230
241
  const params = result.params;
231
- const query = Qs.parse(url.search, options.queryParser);
232
242
  let responseBody = undefined;
233
243
  // Execute before dispatcher(s)
234
244
  for (let i = 0; i < beforeDispatcherGroup.length; i++) {
@@ -383,7 +393,7 @@ export const BoolFactory = (target, options) => {
383
393
  });
384
394
  }
385
395
  catch (error) {
386
- return jsonErrorInfer(error);
396
+ return jsonErrorInfer(error, resHeaders);
387
397
  }
388
398
  finally {
389
399
  if (allowLogsMethods) {
@@ -9,6 +9,6 @@ export type THttpMethods = {
9
9
  TRACE: "TRACE";
10
10
  PATCH: "PATCH";
11
11
  };
12
- export declare const jsonErrorInfer: (data: any) => import("undici-types").Response;
12
+ export declare const jsonErrorInfer: (data: any, headers?: Headers) => Response;
13
13
  export * from "./clientError";
14
14
  export * from "./serverError";
@@ -1,8 +1,7 @@
1
1
  import { HttpClientError } from "./clientError";
2
2
  import { HttpServerError } from "./serverError";
3
- export const jsonErrorInfer = (data) => {
4
- const headers = new Headers();
5
- headers.append("Content-Type", "application/json");
3
+ export const jsonErrorInfer = (data, headers = new Headers()) => {
4
+ headers.set("Content-Type", "application/json");
6
5
  if (data instanceof HttpClientError || data instanceof HttpServerError) {
7
6
  return new Response(JSON.stringify(data), {
8
7
  status: data.httpCode,
package/jsconfig.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "compilerOptions": {
3
+ // Enable latest features
4
+ "lib": ["ESNext", "DOM"],
5
+ "target": "ESNext",
6
+ "module": "ESNext",
7
+ "moduleDetection": "force",
8
+ "jsx": "react-jsx",
9
+ "allowJs": true,
10
+
11
+ // Bundler mode
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "verbatimModuleSyntax": true,
15
+ "noEmit": true,
16
+
17
+ // Best practices
18
+ "strict": true,
19
+ "skipLibCheck": true,
20
+ "noFallthroughCasesInSwitch": true,
21
+
22
+ // Some stricter flags (disabled by default)
23
+ "noUnusedLocals": false,
24
+ "noUnusedParameters": false,
25
+ "noPropertyAccessFromIndexSignature": false
26
+ }
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bool-ts/core",
3
- "version": "1.5.5",
3
+ "version": "1.5.7",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -24,7 +24,7 @@
24
24
  "zod": "^3.23.8"
25
25
  },
26
26
  "devDependencies": {
27
- "@types/bun": "^1.1.6",
27
+ "@types/bun": "latest",
28
28
  "@types/qs": "^6.9.15",
29
29
  "typescript": "^5.5.4"
30
30
  }
@@ -154,12 +154,12 @@ export const Query = (zodSchema?: Zod.Schema) => {
154
154
 
155
155
  queryMetadata[`argumentIndexes.${parameterIndex}`] = {
156
156
  index: parameterIndex,
157
- type: EArgumentTypes.params,
157
+ type: EArgumentTypes.query,
158
158
  zodSchema: zodSchema
159
159
  } satisfies Extract<
160
160
  TArgumentsMetadata,
161
161
  {
162
- type: EArgumentTypes.params;
162
+ type: EArgumentTypes.query;
163
163
  }
164
164
  >;
165
165
 
@@ -205,6 +205,7 @@ export const BoolFactory = (target: new (...args: any[]) => unknown, options: TB
205
205
  const url = new URL(request.url);
206
206
  const reqHeaders = request.headers;
207
207
  const resHeaders = new Headers();
208
+ const query = Qs.parse(url.searchParams.toString(), options.queryParser);
208
209
 
209
210
  try {
210
211
  // Execute middleware(s)
@@ -237,6 +238,16 @@ export const BoolFactory = (target: new (...args: any[]) => unknown, options: TB
237
238
  middlewareCollection.funcName
238
239
  );
239
240
  break;
241
+ case EArgumentTypes.query:
242
+ middlewareArguments[argsMetadata.index] = !argsMetadata.zodSchema
243
+ ? query
244
+ : await argumentsResolution(
245
+ query,
246
+ argsMetadata.zodSchema,
247
+ argsMetadata.index,
248
+ middlewareCollection.funcName
249
+ );
250
+ break;
240
251
  case EArgumentTypes.request:
241
252
  middlewareArguments[argsMetadata.index] = request;
242
253
  break;
@@ -286,6 +297,16 @@ export const BoolFactory = (target: new (...args: any[]) => unknown, options: TB
286
297
  guardCollection.funcName
287
298
  );
288
299
  break;
300
+ case EArgumentTypes.query:
301
+ guardArguments[argsMetadata.index] = !argsMetadata.zodSchema
302
+ ? query
303
+ : await argumentsResolution(
304
+ query,
305
+ argsMetadata.zodSchema,
306
+ argsMetadata.index,
307
+ guardCollection.funcName
308
+ );
309
+ break;
289
310
  case EArgumentTypes.request:
290
311
  guardArguments[argsMetadata.index] = request;
291
312
  break;
@@ -318,7 +339,6 @@ export const BoolFactory = (target: new (...args: any[]) => unknown, options: TB
318
339
  }
319
340
 
320
341
  const params = result.params;
321
- const query = Qs.parse(url.search, options.queryParser);
322
342
 
323
343
  let responseBody = undefined;
324
344
 
@@ -572,7 +592,7 @@ export const BoolFactory = (target: new (...args: any[]) => unknown, options: TB
572
592
  }
573
593
  );
574
594
  } catch (error) {
575
- return jsonErrorInfer(error);
595
+ return jsonErrorInfer(error, resHeaders);
576
596
  } finally {
577
597
  if (allowLogsMethods) {
578
598
  const end = performance.now();
package/src/http/index.ts CHANGED
@@ -13,10 +13,8 @@ export type THttpMethods = {
13
13
  PATCH: "PATCH";
14
14
  };
15
15
 
16
- export const jsonErrorInfer = (data: any) => {
17
- const headers = new Headers();
18
-
19
- headers.append("Content-Type", "application/json");
16
+ export const jsonErrorInfer = (data: any, headers: Headers = new Headers()) => {
17
+ headers.set("Content-Type", "application/json");
20
18
 
21
19
  if (data instanceof HttpClientError || data instanceof HttpServerError) {
22
20
  return new Response(JSON.stringify(data), {
package/test.http CHANGED
@@ -5,7 +5,7 @@
5
5
  GET http://{{baseUrl}}/test/abc/23234
6
6
 
7
7
  ### Send test POST method
8
- POST http://{{baseUrl}}/test/abc/123/provider/23234 HTTP/1.1
8
+ POST http://{{baseUrl}}/test/abc/123/provider/23234?options[page]=1&options[limit]=6&options[sort][metadata.latestReviewAt]=desc&options[sort][info.searchCount]=desc&options[sort][createdAt]=desc&populate[0]=__headquarters&populate[1]=__logoMedia HTTP/1.1
9
9
  content-type: application/json
10
10
 
11
11
  {
package/tsconfig.json CHANGED
@@ -11,7 +11,8 @@
11
11
  /* Language and Environment */
12
12
  "target": "ESNext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
13
13
  "lib": [
14
- "ESNext"
14
+ "ESNext",
15
+ "DOM"
15
16
  ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
16
17
  // "jsx": "preserve", /* Specify what JSX code is generated. */
17
18
  "experimentalDecorators": true /* Enable experimental support for legacy experimental decorators. */,