@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.
- package/MIGRATION.md +20 -0
- package/README.md +1 -1
- package/lib/adaptors/McpAdaptor.d.ts +5 -0
- package/lib/adaptors/McpAdaptor.js +114 -26
- package/lib/adaptors/McpAdaptor.js.map +1 -1
- package/lib/adaptors/WebSocketAdaptor.js +124 -32
- package/lib/adaptors/WebSocketAdaptor.js.map +1 -1
- package/lib/adaptors/internal/RoutePathMatcher.d.ts +1 -0
- package/lib/adaptors/internal/RoutePathMatcher.js +88 -0
- package/lib/adaptors/internal/RoutePathMatcher.js.map +1 -0
- package/lib/adaptors/internal/external_context.d.ts +1 -0
- package/lib/adaptors/internal/external_context.js +43 -0
- package/lib/adaptors/internal/external_context.js.map +1 -0
- package/lib/decorators/EncryptedBody.js +2 -2
- package/lib/decorators/EncryptedBody.js.map +1 -1
- package/lib/decorators/EncryptedController.js +1 -1
- package/lib/decorators/EncryptedController.js.map +1 -1
- package/lib/decorators/EncryptedModule.d.ts +7 -3
- package/lib/decorators/EncryptedModule.js +69 -15
- package/lib/decorators/EncryptedModule.js.map +1 -1
- package/lib/decorators/EncryptedRoute.js +7 -2
- package/lib/decorators/EncryptedRoute.js.map +1 -1
- package/lib/decorators/TypedBody.d.ts +1 -1
- package/lib/decorators/TypedBody.js +1 -1
- package/lib/decorators/TypedFormData.d.ts +22 -8
- package/lib/decorators/TypedFormData.js +116 -31
- package/lib/decorators/TypedFormData.js.map +1 -1
- package/lib/decorators/TypedParam.d.ts +3 -3
- package/lib/decorators/TypedParam.js +3 -3
- package/lib/decorators/TypedQuery.d.ts +1 -1
- package/lib/decorators/TypedQuery.js +9 -4
- package/lib/decorators/TypedQuery.js.map +1 -1
- package/lib/decorators/internal/EncryptedConstant.js +13 -2
- package/lib/decorators/internal/EncryptedConstant.js.map +1 -1
- package/lib/decorators/internal/get_encryption_password.d.ts +1 -0
- package/lib/decorators/internal/get_encryption_password.js +14 -0
- package/lib/decorators/internal/get_encryption_password.js.map +1 -0
- package/lib/decorators/internal/get_path_and_querify.js +21 -3
- package/lib/decorators/internal/get_path_and_querify.js.map +1 -1
- package/lib/decorators/internal/get_text_body.js +9 -3
- package/lib/decorators/internal/get_text_body.js.map +1 -1
- package/lib/decorators/internal/group_entries.d.ts +1 -0
- package/lib/decorators/internal/group_entries.js +19 -0
- package/lib/decorators/internal/group_entries.js.map +1 -0
- package/lib/decorators/internal/validate_request_form_data.js +3 -1
- package/lib/decorators/internal/validate_request_form_data.js.map +1 -1
- package/lib/decorators/internal/validate_request_headers.js +2 -1
- package/lib/decorators/internal/validate_request_headers.js.map +1 -1
- package/lib/decorators/internal/validate_request_query.js +3 -1
- package/lib/decorators/internal/validate_request_query.js.map +1 -1
- package/lib/options/IResponseBodyQuerifier.d.ts +5 -1
- package/lib/utils/ExceptionManager.d.ts +3 -4
- package/lib/utils/ExceptionManager.js +10 -6
- package/lib/utils/ExceptionManager.js.map +1 -1
- package/lib/utils/SourceFinder.js +26 -3
- package/lib/utils/SourceFinder.js.map +1 -1
- package/lib/utils/VersioningStrategy.d.ts +9 -1
- package/lib/utils/VersioningStrategy.js +18 -6
- package/lib/utils/VersioningStrategy.js.map +1 -1
- package/native/go.mod +1 -1
- package/native/go.sum +2 -2
- package/native/transform/ast.go +4 -2
- package/native/transform/core_querify.go +26 -6
- package/native/transform/core_transform.go +76 -1
- package/native/transform/core_websocket.go +94 -13
- package/native/transform/node_transform.go +6 -0
- package/native/transform/transform.go +8 -18
- package/native/transform/typia_fast.go +6 -0
- package/native/transform.cjs +49 -0
- package/package.json +14 -17
- package/src/adaptors/McpAdaptor.ts +150 -28
- package/src/adaptors/WebSocketAdaptor.ts +136 -38
- package/src/adaptors/internal/RoutePathMatcher.ts +91 -0
- package/src/adaptors/internal/external_context.ts +50 -0
- package/src/decorators/EncryptedBody.ts +2 -2
- package/src/decorators/EncryptedController.ts +6 -2
- package/src/decorators/EncryptedModule.ts +71 -15
- package/src/decorators/EncryptedRoute.ts +7 -5
- package/src/decorators/TypedBody.ts +1 -1
- package/src/decorators/TypedFormData.ts +148 -44
- package/src/decorators/TypedParam.ts +3 -3
- package/src/decorators/TypedQuery.ts +19 -7
- package/src/decorators/internal/EncryptedConstant.ts +14 -1
- package/src/decorators/internal/get_encryption_password.ts +19 -0
- package/src/decorators/internal/get_path_and_querify.ts +29 -2
- package/src/decorators/internal/get_text_body.ts +8 -4
- package/src/decorators/internal/group_entries.ts +17 -0
- package/src/decorators/internal/validate_request_form_data.ts +3 -1
- package/src/decorators/internal/validate_request_headers.ts +2 -2
- package/src/decorators/internal/validate_request_query.ts +3 -2
- package/src/options/IResponseBodyQuerifier.ts +6 -1
- package/src/utils/ExceptionManager.ts +10 -6
- package/src/utils/SourceFinder.ts +24 -3
- package/src/utils/VersioningStrategy.ts +21 -7
- package/lib/transform.d.ts +0 -10
- package/lib/transform.js +0 -25
- package/lib/transform.js.map +0 -1
- 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`,
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
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
|
|
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
|
-
|
|
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
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
/**
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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":"
|
|
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"
|
|
15
|
-
* \@TypedParam("no")
|
|
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"
|
|
24
|
-
* \@TypedParam("no")
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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":";;;;;;AAAA,2CAawB;AAIxB
|
|
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
|
-
/**
|
|
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
|
|
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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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":";;;;;;AAAA,2CAA8D;AAC9D,kDAA2D;AAG3D,oFAAiF;
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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,
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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":";;;;;;AAAA,2CAAqD;AACrD,kDAA2D;AAG3D,oFAAiF;
|
|
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
|
}
|