@nestia/core 13.0.4 → 14.0.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.
Files changed (98) hide show
  1. package/MIGRATION.md +20 -0
  2. package/README.md +1 -1
  3. package/lib/adaptors/McpAdaptor.d.ts +5 -0
  4. package/lib/adaptors/McpAdaptor.js +114 -26
  5. package/lib/adaptors/McpAdaptor.js.map +1 -1
  6. package/lib/adaptors/WebSocketAdaptor.js +124 -32
  7. package/lib/adaptors/WebSocketAdaptor.js.map +1 -1
  8. package/lib/adaptors/internal/RoutePathMatcher.d.ts +1 -0
  9. package/lib/adaptors/internal/RoutePathMatcher.js +88 -0
  10. package/lib/adaptors/internal/RoutePathMatcher.js.map +1 -0
  11. package/lib/adaptors/internal/external_context.d.ts +1 -0
  12. package/lib/adaptors/internal/external_context.js +43 -0
  13. package/lib/adaptors/internal/external_context.js.map +1 -0
  14. package/lib/decorators/EncryptedBody.js +2 -2
  15. package/lib/decorators/EncryptedBody.js.map +1 -1
  16. package/lib/decorators/EncryptedController.js +1 -1
  17. package/lib/decorators/EncryptedController.js.map +1 -1
  18. package/lib/decorators/EncryptedModule.d.ts +7 -3
  19. package/lib/decorators/EncryptedModule.js +69 -15
  20. package/lib/decorators/EncryptedModule.js.map +1 -1
  21. package/lib/decorators/EncryptedRoute.js +7 -2
  22. package/lib/decorators/EncryptedRoute.js.map +1 -1
  23. package/lib/decorators/TypedBody.d.ts +1 -1
  24. package/lib/decorators/TypedBody.js +1 -1
  25. package/lib/decorators/TypedFormData.d.ts +22 -8
  26. package/lib/decorators/TypedFormData.js +116 -31
  27. package/lib/decorators/TypedFormData.js.map +1 -1
  28. package/lib/decorators/TypedParam.d.ts +3 -3
  29. package/lib/decorators/TypedParam.js +3 -3
  30. package/lib/decorators/TypedQuery.d.ts +1 -1
  31. package/lib/decorators/TypedQuery.js +9 -4
  32. package/lib/decorators/TypedQuery.js.map +1 -1
  33. package/lib/decorators/internal/EncryptedConstant.js +13 -2
  34. package/lib/decorators/internal/EncryptedConstant.js.map +1 -1
  35. package/lib/decorators/internal/get_encryption_password.d.ts +1 -0
  36. package/lib/decorators/internal/get_encryption_password.js +14 -0
  37. package/lib/decorators/internal/get_encryption_password.js.map +1 -0
  38. package/lib/decorators/internal/get_path_and_querify.js +21 -3
  39. package/lib/decorators/internal/get_path_and_querify.js.map +1 -1
  40. package/lib/decorators/internal/get_text_body.js +9 -3
  41. package/lib/decorators/internal/get_text_body.js.map +1 -1
  42. package/lib/decorators/internal/group_entries.d.ts +1 -0
  43. package/lib/decorators/internal/group_entries.js +19 -0
  44. package/lib/decorators/internal/group_entries.js.map +1 -0
  45. package/lib/decorators/internal/validate_request_form_data.js +3 -1
  46. package/lib/decorators/internal/validate_request_form_data.js.map +1 -1
  47. package/lib/decorators/internal/validate_request_headers.js +2 -1
  48. package/lib/decorators/internal/validate_request_headers.js.map +1 -1
  49. package/lib/decorators/internal/validate_request_query.js +3 -1
  50. package/lib/decorators/internal/validate_request_query.js.map +1 -1
  51. package/lib/options/IResponseBodyQuerifier.d.ts +5 -1
  52. package/lib/utils/ExceptionManager.d.ts +3 -4
  53. package/lib/utils/ExceptionManager.js +10 -6
  54. package/lib/utils/ExceptionManager.js.map +1 -1
  55. package/lib/utils/SourceFinder.js +26 -3
  56. package/lib/utils/SourceFinder.js.map +1 -1
  57. package/lib/utils/VersioningStrategy.d.ts +9 -1
  58. package/lib/utils/VersioningStrategy.js +18 -6
  59. package/lib/utils/VersioningStrategy.js.map +1 -1
  60. package/native/go.mod +1 -1
  61. package/native/go.sum +2 -2
  62. package/native/transform/ast.go +4 -2
  63. package/native/transform/core_querify.go +26 -6
  64. package/native/transform/core_transform.go +76 -1
  65. package/native/transform/core_websocket.go +94 -13
  66. package/native/transform/node_transform.go +6 -0
  67. package/native/transform/transform.go +8 -18
  68. package/native/transform/typia_fast.go +6 -0
  69. package/native/transform.cjs +49 -0
  70. package/package.json +14 -17
  71. package/src/adaptors/McpAdaptor.ts +150 -28
  72. package/src/adaptors/WebSocketAdaptor.ts +136 -38
  73. package/src/adaptors/internal/RoutePathMatcher.ts +91 -0
  74. package/src/adaptors/internal/external_context.ts +50 -0
  75. package/src/decorators/EncryptedBody.ts +2 -2
  76. package/src/decorators/EncryptedController.ts +6 -2
  77. package/src/decorators/EncryptedModule.ts +71 -15
  78. package/src/decorators/EncryptedRoute.ts +7 -5
  79. package/src/decorators/TypedBody.ts +1 -1
  80. package/src/decorators/TypedFormData.ts +148 -44
  81. package/src/decorators/TypedParam.ts +3 -3
  82. package/src/decorators/TypedQuery.ts +19 -7
  83. package/src/decorators/internal/EncryptedConstant.ts +14 -1
  84. package/src/decorators/internal/get_encryption_password.ts +19 -0
  85. package/src/decorators/internal/get_path_and_querify.ts +29 -2
  86. package/src/decorators/internal/get_text_body.ts +8 -4
  87. package/src/decorators/internal/group_entries.ts +17 -0
  88. package/src/decorators/internal/validate_request_form_data.ts +3 -1
  89. package/src/decorators/internal/validate_request_headers.ts +2 -2
  90. package/src/decorators/internal/validate_request_query.ts +3 -2
  91. package/src/options/IResponseBodyQuerifier.ts +6 -1
  92. package/src/utils/ExceptionManager.ts +10 -6
  93. package/src/utils/SourceFinder.ts +24 -3
  94. package/src/utils/VersioningStrategy.ts +21 -7
  95. package/lib/transform.d.ts +0 -10
  96. package/lib/transform.js +0 -25
  97. package/lib/transform.js.map +0 -1
  98. package/src/transform.ts +0 -26
@@ -8,9 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.TypedFormData = void 0;
13
16
  const common_1 = require("@nestjs/common");
17
+ const fs_1 = __importDefault(require("fs"));
14
18
  const Singleton_1 = require("../utils/Singleton");
15
19
  const is_media_type_1 = require("./internal/is_media_type");
16
20
  const validate_request_form_data_1 = require("./internal/validate_request_form_data");
@@ -37,10 +41,13 @@ const validate_request_form_data_1 = require("./internal/validate_request_form_d
37
41
  * types are allowed
38
42
  * 4. By the way, union type never be not allowed
39
43
  *
40
- * By the way, if you're using `fastify`, you have to setup `fastify-multer` and
41
- * configure like below when composing the NestJS application. If you don't do
42
- * that, `@TypedFormData.Body()` will not work properly, and throw 500 internal
43
- * server error when `Blob` or `File` type being utilized.
44
+ * By the way, if you're using `fastify`, pass a `fastify-multer` instance as
45
+ * the factory, and register a `multipart/form-data` content type parser that
46
+ * leaves the request stream to it when composing the NestJS application.
47
+ * Without the parser, Fastify rejects every multipart request with 415.
48
+ * `fastify-multer`'s own `contentParser` plugin declares the content type
49
+ * `multipart` without a subtype, which Fastify 5 (NestJS 11) refuses to
50
+ * register.
44
51
  *
45
52
  * ```typescript
46
53
  * import { NestFactory } from "@nestjs/core";
@@ -48,16 +55,25 @@ const validate_request_form_data_1 = require("./internal/validate_request_form_d
48
55
  * FastifyAdapter,
49
56
  * NestFastifyApplication,
50
57
  * } from "@nestjs/platform-fastify";
51
- * import fastifyMulter from "fastify-multer";
52
58
  *
53
59
  * export async function main() {
54
60
  * const app = await NestFactory.create<NestFastifyApplication>(
55
61
  * AppModule,
56
62
  * new FastifyAdapter(),
57
63
  * );
58
- * app.register(fastifyMulter.contentParser);
64
+ * app
65
+ * .getHttpAdapter()
66
+ * .getInstance()
67
+ * .addContentTypeParser("multipart/form-data", (_req, _payload, done) =>
68
+ * done(null),
69
+ * );
59
70
  * await app.listen(3000);
60
71
  * }
72
+ *
73
+ * // in the controller, with `import FastifyMulter from "fastify-multer"`
74
+ * public async upload(
75
+ * @TypedFormData.Body(() => FastifyMulter()) body: IMultipart,
76
+ * ): Promise<void> {}
61
77
  * ```
62
78
  *
63
79
  * @author Jeongho Nam - https://github.com/samchon
@@ -92,39 +108,108 @@ var TypedFormData;
92
108
  })(TypedFormData || (exports.TypedFormData = TypedFormData = {}));
93
109
  /** @internal */
94
110
  const decode = (multer, props) => {
95
- const upload = multer.fields(props.files.map((file) => (Object.assign({ name: file.name }, (file.limit === 1 ? { maxCount: 1 } : {})))));
111
+ // without the transform nothing names the file fields, so accept every file
112
+ const upload = props === undefined
113
+ ? multer.any()
114
+ : multer.fields(props.files.map((file) => (Object.assign({ name: file.name }, (file.limit === 1 ? { maxCount: 1 } : {})))));
96
115
  const interceptor = (request, response) => new Promise((resolve, reject) => upload(request, response, (error) => {
97
116
  if (error)
98
- reject(error);
117
+ reject(transformMulterError(error));
99
118
  else
100
119
  resolve();
101
120
  }));
102
121
  return (socket) => __awaiter(void 0, void 0, void 0, function* () {
103
122
  yield interceptor(socket.request, socket.response);
104
- const data = new FormData();
105
- for (const [key, value] of Object.entries(socket.request.body))
106
- if (Array.isArray(value))
107
- for (const elem of value)
108
- data.append(key, String(elem));
109
- else
110
- data.append(key, String(value));
111
- if (socket.request.files)
112
- parseFiles(data)(socket.request.files);
113
- return data;
123
+ const files = entries(socket.request.files);
124
+ try {
125
+ const data = new FormData();
126
+ for (const [key, value] of Object.entries(socket.request.body))
127
+ if (Array.isArray(value))
128
+ for (const elem of value)
129
+ data.append(key, String(elem));
130
+ else
131
+ data.append(key, String(value));
132
+ for (const [key, file] of files)
133
+ data.append(key, yield toFile(file));
134
+ return data;
135
+ }
136
+ finally {
137
+ // a disk storage engine leaves each file behind, and the handler only
138
+ // receives its contents as a File, never the path to remove it by
139
+ yield Promise.all(files.map(([, file]) => typeof file.path === "string"
140
+ ? fs_1.default.promises.rm(file.path, { force: true })
141
+ : undefined));
142
+ }
114
143
  });
115
144
  };
116
- /** @internal */
117
- const parseFiles = (data) => (files) => {
118
- if (Array.isArray(files))
119
- for (const file of files)
120
- data.append(file.fieldname, new File([file.buffer], file.originalname, {
121
- type: file.mimetype,
122
- }));
123
- else
124
- for (const [key, value] of Object.entries(files))
125
- for (const file of value)
126
- data.append(key, new File([file.buffer], file.originalname, {
127
- type: file.mimetype,
128
- }));
145
+ /**
146
+ * The client error NestJS's own `FileInterceptor` answers for a multipart
147
+ * request the multer configuration rejects: 413 for a file over
148
+ * `limits.fileSize`, 400 for the other limits, an unexpected field, and a
149
+ * malformed body. Anything else, an `HttpException` a `fileFilter` threw
150
+ * included, is left as it is.
151
+ *
152
+ * @internal
153
+ */
154
+ const transformMulterError = (error) => {
155
+ if (!(error instanceof Error) || error instanceof common_1.HttpException)
156
+ return error;
157
+ const code = error.code;
158
+ const field = error.field;
159
+ if (code === "LIMIT_FILE_SIZE")
160
+ return new common_1.PayloadTooLargeException(error.message);
161
+ else if (typeof code === "string" && MULTER_BAD_REQUESTS.has(code))
162
+ return new common_1.BadRequestException(typeof field === "string" ? `${error.message} - ${field}` : error.message);
163
+ else if (error.message === "Multipart: Boundary not found")
164
+ return new common_1.BadRequestException(error.message);
165
+ else if (BUSBOY_BAD_REQUESTS.has(error.message) ||
166
+ error.message.endsWith(" terminated early due to unexpected end of multipart data"))
167
+ return new common_1.BadRequestException(`Multipart: ${error.message}`);
168
+ return error;
129
169
  };
170
+ /** @internal */
171
+ const MULTER_BAD_REQUESTS = new Set([
172
+ "LIMIT_PART_COUNT",
173
+ "LIMIT_FILE_COUNT",
174
+ "LIMIT_FIELD_KEY",
175
+ "LIMIT_FIELD_VALUE",
176
+ "LIMIT_FIELD_COUNT",
177
+ "LIMIT_UNEXPECTED_FILE",
178
+ "MISSING_FIELD_NAME",
179
+ ]);
180
+ /**
181
+ * A malformed body, as `busboy` (under `multer`) and `@fastify/busboy` (under
182
+ * `fastify-multer`) word it.
183
+ *
184
+ * @internal
185
+ */
186
+ const BUSBOY_BAD_REQUESTS = new Set([
187
+ "Malformed part header",
188
+ "Unexpected end of form",
189
+ "Unexpected end of file",
190
+ "Unexpected end of multipart data",
191
+ ]);
192
+ /** @internal */
193
+ const entries = (files) => files === undefined
194
+ ? []
195
+ : Array.isArray(files)
196
+ ? files.map((file) => [file.fieldname, file])
197
+ : Object.entries(files).flatMap(([key, value]) => value.map((file) => [key, file]));
198
+ /**
199
+ * The uploaded file as a `File`: memory storage keeps its bytes in `buffer`,
200
+ * disk storage in the file at `path`. An engine keeping neither cannot deliver
201
+ * it, which must not pass as an empty or placeholder file.
202
+ *
203
+ * @internal
204
+ */
205
+ const toFile = (file) => __awaiter(void 0, void 0, void 0, function* () {
206
+ const bytes = file.buffer !== undefined
207
+ ? file.buffer
208
+ : typeof file.path === "string"
209
+ ? yield fs_1.default.promises.readFile(file.path)
210
+ : undefined;
211
+ if (bytes === undefined)
212
+ throw new Error(`Error on TypedFormData.Body(): the multer storage engine kept neither the buffer nor the path of the uploaded file ${JSON.stringify(file.fieldname)}, so it cannot be read as a File. Use memory or disk storage.`);
213
+ return new File([bytes], file.originalname, { type: file.mimetype });
214
+ });
130
215
  //# sourceMappingURL=TypedFormData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypedFormData.js","sourceRoot":"","sources":["../../src/decorators/TypedFormData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypedFormData.js","sourceRoot":"","sources":["../../src/decorators/TypedFormData.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,9 @@
11
11
  *
12
12
  * \@TypedRoute.Get("shopping/sales/:id/:no/:paused")
13
13
  * public async pause(
14
- * \@TypedParam("id", "uuid"), id: string & tags.Format<"uuid">,
15
- * \@TypedParam("no") id: number & tags.Type<"uint32">
16
- * \@TypedParam("paused") paused: boolean | null
14
+ * \@TypedParam("id") id: string & tags.Format<"uuid">,
15
+ * \@TypedParam("no") no: number & tags.Type<"uint32">,
16
+ * \@TypedParam("paused") paused: boolean | null,
17
17
  * ): Promise<void>;
18
18
  * ```
19
19
  *
@@ -20,9 +20,9 @@ const NoTransformConfigurationError_1 = require("./NoTransformConfigurationError
20
20
  *
21
21
  * \@TypedRoute.Get("shopping/sales/:id/:no/:paused")
22
22
  * public async pause(
23
- * \@TypedParam("id", "uuid"), id: string & tags.Format<"uuid">,
24
- * \@TypedParam("no") id: number & tags.Type<"uint32">
25
- * \@TypedParam("paused") paused: boolean | null
23
+ * \@TypedParam("id") id: string & tags.Format<"uuid">,
24
+ * \@TypedParam("no") no: number & tags.Type<"uint32">,
25
+ * \@TypedParam("paused") paused: boolean | null,
26
26
  * ): Promise<void>;
27
27
  * ```
28
28
  *
@@ -51,7 +51,7 @@ export declare namespace TypedQuery {
51
51
  <T>(path: string | string[], stringify?: IResponseBodyQuerifier<T>): MethodDecorator;
52
52
  };
53
53
  /**
54
- * Router decorator function for the PATH method.
54
+ * Router decorator function for the PATCH method.
55
55
  *
56
56
  * @param path Path of the HTTP request
57
57
  * @returns Method decorator
@@ -5,8 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.TypedQuery = TypedQuery;
7
7
  const common_1 = require("@nestjs/common");
8
- const rxjs_1 = require("rxjs");
8
+ const operators_1 = require("rxjs/operators");
9
9
  const typia_1 = __importDefault(require("typia"));
10
+ const TypedRoute_1 = require("./TypedRoute");
10
11
  const get_path_and_querify_1 = require("./internal/get_path_and_querify");
11
12
  const is_media_type_1 = require("./internal/is_media_type");
12
13
  const route_error_1 = require("./internal/route_error");
@@ -83,7 +84,7 @@ function TypedQuery(validator) {
83
84
  */
84
85
  TypedQuery.Post = Generator("Post");
85
86
  /**
86
- * Router decorator function for the PATH method.
87
+ * Router decorator function for the PATCH method.
87
88
  *
88
89
  * @param path Path of the HTTP request
89
90
  * @returns Method decorator
@@ -106,7 +107,7 @@ function TypedQuery(validator) {
106
107
  /** @internal */
107
108
  function Generator(method) {
108
109
  function route(...args) {
109
- const [path, stringify] = (0, get_path_and_querify_1.get_path_and_querify)(`TypedQuery.${method}`)(...args);
110
+ const [path, stringify] = (0, get_path_and_querify_1.get_path_and_querify)(() => TypedRoute_1.TypedRoute.__logger)(`TypedQuery.${method}`)(...args);
110
111
  return (0, common_1.applyDecorators)(ROUTERS[method](path), (0, common_1.UseInterceptors)(new TypedQueryRouteInterceptor(stringify)));
111
112
  }
112
113
  return route;
@@ -135,6 +136,9 @@ class FakeURLSearchParams {
135
136
  has(key) {
136
137
  return this.target[key] !== undefined;
137
138
  }
139
+ keys() {
140
+ return Object.keys(this.target).filter((key) => this.has(key));
141
+ }
138
142
  get(key) {
139
143
  var _a;
140
144
  const value = this.target[key];
@@ -156,9 +160,10 @@ class TypedQueryRouteInterceptor {
156
160
  }
157
161
  intercept(context, next) {
158
162
  const http = context.switchToHttp();
163
+ const request = http.getRequest();
159
164
  const response = http.getResponse();
160
165
  response.header("Content-Type", "application/x-www-form-urlencoded");
161
- return next.handle().pipe((0, rxjs_1.map)((value) => this.toSearchParams(value).toString()), (0, rxjs_1.catchError)((err) => (0, route_error_1.route_error)(http.getRequest(), err)));
166
+ return next.handle().pipe((0, operators_1.map)((value) => this.toSearchParams(value, request.method, request.url).toString()), (0, operators_1.catchError)((err) => (0, route_error_1.route_error)(http.getRequest(), err)));
162
167
  }
163
168
  }
164
169
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"TypedQuery.js","sourceRoot":"","sources":["../../src/decorators/TypedQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypedQuery.js","sourceRoot":"","sources":["../../src/decorators/TypedQuery.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ENCRYPTION_METADATA_KEY = void 0;
4
- /** @internal */
3
+ exports.ENCRYPTION_CONTROLLER_METADATA_KEY = exports.ENCRYPTION_METADATA_KEY = void 0;
4
+ /**
5
+ * The password an {@link EncryptedModule} gives each controller it reaches.
6
+ *
7
+ * @internal
8
+ */
5
9
  exports.ENCRYPTION_METADATA_KEY = "nestia:core:encryption:password";
10
+ /**
11
+ * The password an {@link EncryptedController} declares for its own class, kept
12
+ * apart from the module's so that the module never replaces it.
13
+ *
14
+ * @internal
15
+ */
16
+ exports.ENCRYPTION_CONTROLLER_METADATA_KEY = "nestia:core:encryption:controller-password";
6
17
  //# sourceMappingURL=EncryptedConstant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedConstant.js","sourceRoot":"","sources":["../../../src/decorators/internal/EncryptedConstant.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AACH,QAAA,uBAAuB,GAAG,iCAAiC,CAAC"}
1
+ {"version":3,"file":"EncryptedConstant.js","sourceRoot":"","sources":["../../../src/decorators/internal/EncryptedConstant.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,iCAAiC,CAAC;AAEzE;;;;;GAKG;AACU,QAAA,kCAAkC,GAC7C,4CAA4C,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.get_encryption_password = void 0;
4
+ const EncryptedConstant_1 = require("./EncryptedConstant");
5
+ /**
6
+ * The encryption password of a controller class. The password its own
7
+ * `@EncryptedController()` declares, which a subclass inherits, precedes the
8
+ * one an `EncryptedModule` gave it: the more specific declaration wins.
9
+ *
10
+ * @internal
11
+ */
12
+ const get_encryption_password = (target) => { var _a; return (_a = Reflect.getMetadata(EncryptedConstant_1.ENCRYPTION_CONTROLLER_METADATA_KEY, target)) !== null && _a !== void 0 ? _a : Reflect.getMetadata(EncryptedConstant_1.ENCRYPTION_METADATA_KEY, target); };
13
+ exports.get_encryption_password = get_encryption_password;
14
+ //# sourceMappingURL=get_encryption_password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_encryption_password.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_encryption_password.ts"],"names":[],"mappings":";;;AAEA,2DAG6B;AAE7B;;;;;;GAMG;AACI,MAAM,uBAAuB,GAAG,CACrC,MAAgB,EAC+C,EAAE,wBACjE,OAAO,CAAC,WAAW,CAAC,sDAAkC,EAAE,MAAM,CAAC,mCAC/D,OAAO,CAAC,WAAW,CAAC,2CAAuB,EAAE,MAAM,CAAC,GAAA,CAAC;AAJ1C,QAAA,uBAAuB,GAAvB,uBAAuB,CAImB"}
@@ -8,18 +8,18 @@ const common_1 = require("@nestjs/common");
8
8
  const typia_1 = __importDefault(require("typia"));
9
9
  const NoTransformConfigurationError_1 = require("../NoTransformConfigurationError");
10
10
  /** @internal */
11
- const get_path_and_querify = (method) => (...args) => {
11
+ const get_path_and_querify = (logger) => (method) => (...args) => {
12
12
  const path = args[0] === undefined ||
13
13
  typeof args[0] === "string" ||
14
14
  Array.isArray(args[0])
15
15
  ? args[0]
16
16
  : null;
17
17
  const functor = path === null ? args[0] : args[1];
18
- return [path !== null && path !== void 0 ? path : undefined, take(method)(functor)];
18
+ return [path !== null && path !== void 0 ? path : undefined, take(logger)(method)(functor)];
19
19
  };
20
20
  exports.get_path_and_querify = get_path_and_querify;
21
21
  /** @internal */
22
- const take = (method) => (functor) => {
22
+ const take = (logger) => (method) => (functor) => {
23
23
  if (functor === undefined) {
24
24
  (0, NoTransformConfigurationError_1.NoTransformConfigurationError)(method);
25
25
  return querify;
@@ -34,6 +34,8 @@ const take = (method) => (functor) => {
34
34
  return is(functor.is);
35
35
  else if (functor.type === "validate")
36
36
  return validate(functor.validate);
37
+ else if (functor.type === "validate.log")
38
+ return validateLog(logger)(functor.validate);
37
39
  throw new Error(`Error on nestia.core.${method}(): invalid typed stringify function.`);
38
40
  };
39
41
  /** @internal */
@@ -87,5 +89,21 @@ const validate = (closure) => (data) => {
87
89
  return result.data;
88
90
  };
89
91
  /** @internal */
92
+ /**
93
+ * `validate.log`: an invalid response is reported to the validate-error logger
94
+ * and sent as it is, as `@TypedRoute`'s JSON responses are.
95
+ */
96
+ const validateLog = (logger) => (closure) => (data, method, path) => {
97
+ const result = closure(data);
98
+ if (result.success === true)
99
+ return result.data;
100
+ logger()({
101
+ errors: result.errors,
102
+ method,
103
+ path,
104
+ data,
105
+ });
106
+ return querify(data);
107
+ };
90
108
  const MESSAGE = "Response body data is not following the promised type.";
91
109
  //# sourceMappingURL=get_path_and_querify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_path_and_querify.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_path_and_querify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get_path_and_querify.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_path_and_querify.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,15 @@ exports.get_text_body = void 0;
16
16
  const raw_body_1 = __importDefault(require("raw-body"));
17
17
  /** @internal */
18
18
  const get_text_body = (request) => __awaiter(void 0, void 0, void 0, function* () {
19
- return isExpressRequest(request)
20
- ? (yield (0, raw_body_1.default)(request)).toString("utf8")
21
- : request.body;
19
+ if (isExpressRequest(request) === false)
20
+ return request.body;
21
+ // a body parser the application registered, such as
22
+ // `app.useBodyParser("text")`, has already consumed the stream
23
+ if (typeof request.body === "string")
24
+ return request.body;
25
+ if (Buffer.isBuffer(request.body))
26
+ return request.body.toString("utf8");
27
+ return (yield (0, raw_body_1.default)(request)).toString("utf8");
22
28
  });
23
29
  exports.get_text_body = get_text_body;
24
30
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"get_text_body.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_text_body.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,wDAA2B;AAE3B,gBAAgB;AACT,MAAM,aAAa,GAAG,CAC3B,OAAyC,EACxB,EAAE;IACnB,OAAA,gBAAgB,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC,CAAC,MAAM,IAAA,kBAAG,EAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,CAAC,CAAE,OAAO,CAAC,IAAe,CAAA;AAAA,CAAC,CAAD,CAAC;AALlB,QAAA,aAAa,GAAb,aAAa,CAKK;AAE/B,gBAAgB;AAChB,MAAM,gBAAgB,GAAG,CACvB,OAAyC,EACb,EAAE,CAAE,OAA2B,CAAC,GAAG,KAAK,SAAS,CAAC"}
1
+ {"version":3,"file":"get_text_body.js","sourceRoot":"","sources":["../../../src/decorators/internal/get_text_body.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,wDAA2B;AAE3B,gBAAgB;AACT,MAAM,aAAa,GAAG,CAC3B,OAAyC,EACxB,EAAE;IACnB,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC,IAAc,CAAC;IACvE,oDAAoD;IACpD,+DAA+D;IAC/D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,OAAO,CAAC,MAAM,IAAA,kBAAG,EAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC,CAAA,CAAC;AATW,QAAA,aAAa,GAAb,aAAa,CASxB;AAEF,gBAAgB;AAChB,MAAM,gBAAgB,GAAG,CACvB,OAAyC,EACb,EAAE,CAAE,OAA2B,CAAC,GAAG,KAAK,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.group_entries = void 0;
4
+ /**
5
+ * The entries of a `URLSearchParams` or `FormData` as a plain object: a key
6
+ * given once maps to its value, a repeated key to all of its values in order.
7
+ *
8
+ * @internal
9
+ */
10
+ const group_entries = (source) => {
11
+ const output = {};
12
+ for (const key of new Set(source.keys())) {
13
+ const values = source.getAll(key);
14
+ output[key] = values.length === 1 ? values[0] : values;
15
+ }
16
+ return output;
17
+ };
18
+ exports.group_entries = group_entries;
19
+ //# sourceMappingURL=group_entries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group_entries.js","sourceRoot":"","sources":["../../../src/decorators/internal/group_entries.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACI,MAAM,aAAa,GAAG,CAAQ,MAGpC,EAAmC,EAAE;IACpC,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAVW,QAAA,aAAa,GAAb,aAAa,CAUxB"}
@@ -7,11 +7,13 @@ exports.validate_request_form_data = void 0;
7
7
  const common_1 = require("@nestjs/common");
8
8
  const typia_1 = __importDefault(require("typia"));
9
9
  const NoTransformConfigurationError_1 = require("../NoTransformConfigurationError");
10
+ const group_entries_1 = require("./group_entries");
10
11
  /** @internal */
11
12
  const validate_request_form_data = (props) => {
12
13
  if (!props) {
13
14
  (0, NoTransformConfigurationError_1.NoTransformConfigurationError)("TypedFormData.Body");
14
- return (input) => Object.entries(input);
15
+ // no transform: the fields and files as they arrived
16
+ return (input) => (0, group_entries_1.group_entries)(input);
15
17
  }
16
18
  else if (props.validator.type === "assert")
17
19
  return assert(props.validator.assert);
@@ -1 +1 @@
1
- {"version":3,"file":"validate_request_form_data.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_form_data.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,kDAA2D;AAG3D,oFAAiF;AAEjF,gBAAgB;AACT,MAAM,0BAA0B,GAAG,CACxC,KAAgC,EACE,EAAE;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAA,6DAA6B,EAAC,oBAAoB,CAAC,CAAC;QACpD,OAAO,CAAC,KAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAM,CAAC;IACzD,CAAC;SAAM,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ;QAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACjE,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU;QAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,GAAG,EAAE,CACV,IAAI,KAAK,CACP,qEAAqE,CACtE,CAAC;AACN,CAAC,CAAC;AAfW,QAAA,0BAA0B,GAA1B,0BAA0B,CAerC;AAEF,gBAAgB;AAChB,MAAM,MAAM,GACV,CAAI,OAA+B,EAAE,EAAE,CACvC,CAAC,KAAe,EAA2B,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb;;;aAA6B,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,4BAAmB,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,EAAE,GACN,CAAI,OAAsC,EAAE,EAAE,CAC9C,CAAC,KAAe,EAA2B,EAAE;IAC3C,MAAM,MAAM,GAAa,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,4BAAmB,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,QAAQ,GACZ,CAAI,OAA4C,EAAE,EAAE,CACpD,CAAC,KAAe,EAA2B,EAAE;IAC3C,MAAM,MAAM,GAAmB,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,IAAI,4BAAmB,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;AACT,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,OAAO,GAAG,4DAA4D,CAAC"}
1
+ {"version":3,"file":"validate_request_form_data.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_form_data.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,kDAA2D;AAG3D,oFAAiF;AACjF,mDAAgD;AAEhD,gBAAgB;AACT,MAAM,0BAA0B,GAAG,CACxC,KAAgC,EACE,EAAE;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAA,6DAA6B,EAAC,oBAAoB,CAAC,CAAC;QACpD,qDAAqD;QACrD,OAAO,CAAC,KAAe,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,KAAK,CAAM,CAAC;IACxD,CAAC;SAAM,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ;QAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACjE,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU;QAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,GAAG,EAAE,CACV,IAAI,KAAK,CACP,qEAAqE,CACtE,CAAC;AACN,CAAC,CAAC;AAhBW,QAAA,0BAA0B,GAA1B,0BAA0B,CAgBrC;AAEF,gBAAgB;AAChB,MAAM,MAAM,GACV,CAAI,OAA+B,EAAE,EAAE,CACvC,CAAC,KAAe,EAA2B,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb;;;aAA6B,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,4BAAmB,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,EAAE,GACN,CAAI,OAAsC,EAAE,EAAE,CAC9C,CAAC,KAAe,EAA2B,EAAE;IAC3C,MAAM,MAAM,GAAa,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,4BAAmB,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,QAAQ,GACZ,CAAI,OAA4C,EAAE,EAAE,CACpD,CAAC,KAAe,EAA2B,EAAE;IAC3C,MAAM,MAAM,GAAmB,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,IAAI,4BAAmB,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;AACT,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,OAAO,GAAG,4DAA4D,CAAC"}
@@ -11,7 +11,8 @@ const NoTransformConfigurationError_1 = require("../NoTransformConfigurationErro
11
11
  const validate_request_headers = (validator) => {
12
12
  if (!validator) {
13
13
  (0, NoTransformConfigurationError_1.NoTransformConfigurationError)("TypedHeaders");
14
- return (input) => Object.entries(input);
14
+ // no transform: the headers as they arrived
15
+ return (input) => input;
15
16
  }
16
17
  else if (validator.type === "assert")
17
18
  return assert(validator.assert);
@@ -1 +1 @@
1
- {"version":3,"file":"validate_request_headers.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_headers.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,kDAA2D;AAG3D,oFAAiF;AAEjF,gBAAgB;AACT,MAAM,wBAAwB,GAAG,CACtC,SAAuC,EACgC,EAAE;IACzE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAA,6DAA6B,EAAC,cAAc,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAoD,EAAE,EAAE,CAC9D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAM,CAAC;IAC/B,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnE,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACrD,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5E,OAAO,GAAG,EAAE,CACV,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC/E,CAAC,CAAC;AAZW,QAAA,wBAAwB,GAAxB,wBAAwB,CAYnC;AAEF,gBAAgB;AAChB,MAAM,MAAM,GACV,CAAI,OAAoE,EAAE,EAAE,CAC5E,CACE,KAAoD,EAC3B,EAAE;IAC3B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb;;;aAA6B,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,4BAAmB,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,EAAE,GACN,CACE,OAA2E,EAC3E,EAAE,CACJ,CACE,KAAoD,EAC3B,EAAE;IAC3B,MAAM,MAAM,GAAa,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,4BAAmB,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,QAAQ,GACZ,CACE,OAEmB,EACnB,EAAE,CACJ,CACE,KAAoD,EAC3B,EAAE;IAC3B,MAAM,MAAM,GAAmB,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,IAAI,4BAAmB,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;AACT,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,OAAO,GAAG,0DAA0D,CAAC"}
1
+ {"version":3,"file":"validate_request_headers.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_headers.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAqD;AACrD,kDAA2D;AAG3D,oFAAiF;AAEjF,gBAAgB;AACT,MAAM,wBAAwB,GAAG,CACtC,SAAuC,EACgC,EAAE;IACzE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAA,6DAA6B,EAAC,cAAc,CAAC,CAAC;QAC9C,4CAA4C;QAC5C,OAAO,CAAC,KAAoD,EAAE,EAAE,CAAC,KAAU,CAAC;IAC9E,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnE,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACrD,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5E,OAAO,GAAG,EAAE,CACV,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC/E,CAAC,CAAC;AAZW,QAAA,wBAAwB,GAAxB,wBAAwB,CAYnC;AAEF,gBAAgB;AAChB,MAAM,MAAM,GACV,CAAI,OAAoE,EAAE,EAAE,CAC5E,CACE,KAAoD,EAC3B,EAAE;IAC3B,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb;;;aAA6B,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,4BAAmB,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,EAAE,GACN,CACE,OAA2E,EAC3E,EAAE,CACJ,CACE,KAAoD,EAC3B,EAAE;IAC3B,MAAM,MAAM,GAAa,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,4BAAmB,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,QAAQ,GACZ,CACE,OAEmB,EACnB,EAAE,CACJ,CACE,KAAoD,EAC3B,EAAE;IAC3B,MAAM,MAAM,GAAmB,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,IAAI,4BAAmB,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;AACT,CAAC,CAAC;AAEJ,gBAAgB;AAChB,MAAM,OAAO,GAAG,0DAA0D,CAAC"}
@@ -7,11 +7,13 @@ exports.validate_request_query = void 0;
7
7
  const common_1 = require("@nestjs/common");
8
8
  const typia_1 = __importDefault(require("typia"));
9
9
  const NoTransformConfigurationError_1 = require("../NoTransformConfigurationError");
10
+ const group_entries_1 = require("./group_entries");
10
11
  /** @internal */
11
12
  const validate_request_query = (method) => (validator) => {
12
13
  if (!validator) {
13
14
  (0, NoTransformConfigurationError_1.NoTransformConfigurationError)(method);
14
- return (input) => Object.fromEntries(input.entries());
15
+ // no transform: the query as it arrived, repeated keys as arrays
16
+ return (input) => (0, group_entries_1.group_entries)(input);
15
17
  }
16
18
  else if (validator.type === "assert")
17
19
  return assert(validator.assert);
@@ -1 +1 @@
1
- {"version":3,"file":"validate_request_query.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate_request_query.js","sourceRoot":"","sources":["../../../src/decorators/internal/validate_request_query.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { IValidation } from "typia";
2
- export type IResponseBodyQuerifier<T> = IResponseBodyquerifier.IStringify<T> | IResponseBodyquerifier.IIs<T> | IResponseBodyquerifier.IAssert<T> | IResponseBodyquerifier.IValidate<T>;
2
+ export type IResponseBodyQuerifier<T> = IResponseBodyquerifier.IStringify<T> | IResponseBodyquerifier.IIs<T> | IResponseBodyquerifier.IAssert<T> | IResponseBodyquerifier.IValidate<T> | IResponseBodyquerifier.IValidateLog<T>;
3
3
  export declare namespace IResponseBodyquerifier {
4
4
  interface IStringify<T> {
5
5
  type: "stringify";
@@ -17,4 +17,8 @@ export declare namespace IResponseBodyquerifier {
17
17
  type: "validate";
18
18
  validate: (input: T) => IValidation<URLSearchParams>;
19
19
  }
20
+ interface IValidateLog<T> {
21
+ type: "validate.log";
22
+ validate: (input: T) => IValidation<URLSearchParams>;
23
+ }
20
24
  }