@nestia/sdk 2.0.0-dev.20230831-5 → 2.0.0-dev.20230901-2
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/assets/bundle/api/utils/NestiaSimulator.ts +1 -22
- package/lib/NestiaSdkApplication.js +1 -1
- package/lib/NestiaSdkApplication.js.map +1 -1
- package/lib/analyses/ControllerAnalyzer.js +11 -5
- package/lib/analyses/ControllerAnalyzer.js.map +1 -1
- package/lib/analyses/ExceptionAnalyzer.js +7 -2
- package/lib/analyses/ExceptionAnalyzer.js.map +1 -1
- package/lib/analyses/ImportAnalyzer.js +1 -1
- package/lib/analyses/ImportAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectAnalyzer.js +0 -10
- package/lib/analyses/ReflectAnalyzer.js.map +1 -1
- package/lib/executable/internal/NestiaSdkConfig.js +37 -46
- package/lib/executable/internal/NestiaSdkConfig.js.map +1 -1
- package/lib/generates/SwaggerGenerator.d.ts +10 -0
- package/lib/generates/SwaggerGenerator.js +37 -497
- package/lib/generates/SwaggerGenerator.js.map +1 -1
- package/lib/generates/internal/E2eFileProgrammer.js +5 -44
- package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkFunctionProgrammer.js +13 -11
- package/lib/generates/internal/SdkFunctionProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkSimulationProgrammer.js +4 -4
- package/lib/generates/internal/SdkSimulationProgrammer.js.map +1 -1
- package/lib/generates/internal/SwaggerSchemaGenerator.d.ts +19 -0
- package/lib/generates/internal/SwaggerSchemaGenerator.js +301 -0
- package/lib/generates/internal/SwaggerSchemaGenerator.js.map +1 -0
- package/lib/generates/internal/SwaggerSchemaValidator.d.ts +7 -0
- package/lib/generates/internal/SwaggerSchemaValidator.js +196 -0
- package/lib/generates/internal/SwaggerSchemaValidator.js.map +1 -0
- package/lib/structures/IController.d.ts +0 -4
- package/lib/structures/IRoute.d.ts +6 -3
- package/lib/structures/ISwaggerError.d.ts +6 -0
- package/lib/structures/ISwaggerError.js +3 -0
- package/lib/structures/ISwaggerError.js.map +1 -0
- package/lib/structures/ISwaggerRoute.d.ts +2 -1
- package/lib/structures/ISwaggerSchemaTuple.d.ts +6 -0
- package/lib/structures/ISwaggerSchemaTuple.js +3 -0
- package/lib/structures/ISwaggerSchemaTuple.js.map +1 -0
- package/lib/structures/ITypeTuple.d.ts +1 -1
- package/lib/utils/ImportDictionary.d.ts +1 -2
- package/lib/utils/ImportDictionary.js +28 -24
- package/lib/utils/ImportDictionary.js.map +1 -1
- package/package.json +5 -5
- package/src/NestiaSdkApplication.ts +1 -1
- package/src/analyses/ControllerAnalyzer.ts +13 -4
- package/src/analyses/ExceptionAnalyzer.ts +3 -2
- package/src/analyses/ImportAnalyzer.ts +1 -1
- package/src/analyses/ReflectAnalyzer.ts +0 -10
- package/src/generates/SwaggerGenerator.ts +102 -478
- package/src/generates/internal/E2eFileProgrammer.ts +7 -49
- package/src/generates/internal/SdkFunctionProgrammer.ts +14 -12
- package/src/generates/internal/SdkSimulationProgrammer.ts +5 -5
- package/src/generates/internal/SwaggerSchemaGenerator.ts +433 -0
- package/src/generates/internal/SwaggerSchemaValidator.ts +216 -0
- package/src/structures/IController.ts +0 -4
- package/src/structures/IRoute.ts +6 -3
- package/src/structures/ISwaggerError.ts +8 -0
- package/src/structures/ISwaggerRoute.ts +2 -1
- package/src/structures/ISwaggerSchemaTuple.ts +7 -0
- package/src/structures/ITypeTuple.ts +1 -1
- package/src/utils/ImportDictionary.ts +29 -26
|
@@ -15,14 +15,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.SwaggerGenerator = void 0;
|
|
16
16
|
const fs_1 = __importDefault(require("fs"));
|
|
17
17
|
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const path_2 = __importDefault(require("path"));
|
|
18
19
|
const Singleton_1 = require("tstl/thread/Singleton");
|
|
19
|
-
const typescript_1 = __importDefault(require("typescript"));
|
|
20
20
|
const typia_1 = __importDefault(require("typia"));
|
|
21
21
|
const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
|
|
22
|
-
const
|
|
23
|
-
const ApplicationProgrammer_1 = require("typia/lib/programmers/ApplicationProgrammer");
|
|
22
|
+
const JsonApplicationProgrammer_1 = require("typia/lib/programmers/json/JsonApplicationProgrammer");
|
|
24
23
|
const FileRetriever_1 = require("../utils/FileRetriever");
|
|
25
24
|
const MapUtil_1 = require("../utils/MapUtil");
|
|
25
|
+
const SwaggerSchemaGenerator_1 = require("./internal/SwaggerSchemaGenerator");
|
|
26
26
|
var SwaggerGenerator;
|
|
27
27
|
(function (SwaggerGenerator) {
|
|
28
28
|
SwaggerGenerator.generate = (checker) => (config) => (routeList) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -47,30 +47,44 @@ var SwaggerGenerator;
|
|
|
47
47
|
replace: MetadataCollection_1.MetadataCollection.replace,
|
|
48
48
|
});
|
|
49
49
|
// CONSTRUCT SWAGGER DOCUMENTS
|
|
50
|
-
const
|
|
50
|
+
const errors = [];
|
|
51
|
+
const tuples = [];
|
|
51
52
|
const swagger = yield initialize(config);
|
|
52
53
|
const pathDict = new Map();
|
|
53
54
|
for (const route of routeList) {
|
|
54
55
|
if (route.tags.find((tag) => tag.name === "internal"))
|
|
55
56
|
continue;
|
|
56
57
|
const path = MapUtil_1.MapUtil.take(pathDict, get_path(route.path, route.parameters), () => ({}));
|
|
57
|
-
path[route.method.toLowerCase()] = generate_route(
|
|
58
|
+
path[route.method.toLowerCase()] = generate_route({
|
|
59
|
+
config,
|
|
60
|
+
checker,
|
|
61
|
+
collection,
|
|
62
|
+
tuples,
|
|
63
|
+
errors,
|
|
64
|
+
})(route);
|
|
58
65
|
}
|
|
59
66
|
swagger.paths = {};
|
|
60
67
|
for (const [path, routes] of pathDict) {
|
|
61
68
|
swagger.paths[path] = routes;
|
|
62
69
|
}
|
|
63
70
|
// FILL JSON-SCHEMAS
|
|
64
|
-
const application =
|
|
71
|
+
const application = JsonApplicationProgrammer_1.JsonApplicationProgrammer.write({
|
|
65
72
|
purpose: "swagger",
|
|
66
|
-
})(
|
|
73
|
+
})(tuples.map(({ metadata }) => metadata));
|
|
67
74
|
swagger.components = Object.assign(Object.assign({}, ((_a = swagger.components) !== null && _a !== void 0 ? _a : {})), ((_b = application.components) !== null && _b !== void 0 ? _b : {}));
|
|
68
|
-
|
|
75
|
+
tuples.forEach(({ schema }, index) => {
|
|
69
76
|
Object.assign(schema, application.schemas[index]);
|
|
70
77
|
});
|
|
71
78
|
// CONFIGURE SECURITY
|
|
72
79
|
if (config.security)
|
|
73
80
|
fill_security(config.security, swagger);
|
|
81
|
+
// REPORT ERRORS
|
|
82
|
+
if (errors.length) {
|
|
83
|
+
for (const e of errors)
|
|
84
|
+
console.error(`${path_2.default.relative(location, process.cwd())}:${e.route.symbol}:${e.from} - error TS(@nestia/sdk): invalid type detected.\n\n` +
|
|
85
|
+
e.messages.map((m) => ` - ${m}`).join("\n"), "\n\n");
|
|
86
|
+
throw new TypeError("Invalid type detected");
|
|
87
|
+
}
|
|
74
88
|
// DO GENERATE
|
|
75
89
|
yield fs_1.default.promises.writeFile(location, JSON.stringify(swagger, null, 2), "utf8");
|
|
76
90
|
});
|
|
@@ -125,15 +139,13 @@ var SwaggerGenerator;
|
|
|
125
139
|
const content = yield fs_1.default.promises.readFile(location, "utf8");
|
|
126
140
|
const data = (input => { const assert = input => {
|
|
127
141
|
const __is = input => {
|
|
128
|
-
const $is_url = typia_1.default.assertParse.is_url;
|
|
129
142
|
const $io0 = input => (undefined === input.name || "string" === typeof input.name) && (undefined === input.version || "string" === typeof input.version) && (undefined === input.description || "string" === typeof input.description) && (null !== input.license && (undefined === input.license || "string" === typeof input.license || "object" === typeof input.license && null !== input.license && $io1(input.license)));
|
|
130
|
-
const $io1 = input => "string" === typeof input.type && ("string" === typeof input.url &&
|
|
143
|
+
const $io1 = input => "string" === typeof input.type && ("string" === typeof input.url && /^[a-zA-Z0-9]+:\/\/(?:www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/.test(input.url));
|
|
131
144
|
return "object" === typeof input && null !== input && false === Array.isArray(input) && $io0(input);
|
|
132
145
|
};
|
|
133
146
|
if (false === __is(input))
|
|
134
147
|
((input, _path, _exceptionable = true) => {
|
|
135
|
-
const $guard = typia_1.default.assertParse.guard;
|
|
136
|
-
const $is_url = typia_1.default.assertParse.is_url;
|
|
148
|
+
const $guard = typia_1.default.json.assertParse.guard;
|
|
137
149
|
const $ao0 = (input, _path, _exceptionable = true) => (undefined === input.name || "string" === typeof input.name || $guard(_exceptionable, {
|
|
138
150
|
path: _path + ".name",
|
|
139
151
|
expected: "(string | undefined)",
|
|
@@ -163,13 +175,13 @@ var SwaggerGenerator;
|
|
|
163
175
|
path: _path + ".type",
|
|
164
176
|
expected: "string",
|
|
165
177
|
value: input.type
|
|
166
|
-
})) && ("string" === typeof input.url && (
|
|
178
|
+
})) && ("string" === typeof input.url && (/^[a-zA-Z0-9]+:\/\/(?:www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/.test(input.url) || $guard(_exceptionable, {
|
|
167
179
|
path: _path + ".url",
|
|
168
|
-
expected: "string
|
|
180
|
+
expected: "string & Format<url>",
|
|
169
181
|
value: input.url
|
|
170
182
|
})) || $guard(_exceptionable, {
|
|
171
183
|
path: _path + ".url",
|
|
172
|
-
expected: "string",
|
|
184
|
+
expected: "(string & Format<url>)",
|
|
173
185
|
value: input.url
|
|
174
186
|
}));
|
|
175
187
|
return ("object" === typeof input && null !== input && false === Array.isArray(input) || $guard(true, {
|
|
@@ -223,14 +235,15 @@ var SwaggerGenerator;
|
|
|
223
235
|
path = path.replace(`:${param.field}`, `{${param.field}}`);
|
|
224
236
|
return path;
|
|
225
237
|
}
|
|
226
|
-
|
|
238
|
+
const generate_route = (props) => (route) => {
|
|
227
239
|
var _a;
|
|
228
|
-
const
|
|
240
|
+
const body = route.parameters.find((param) => param.category === "body");
|
|
229
241
|
const getTagTexts = (name) => route.tags
|
|
230
242
|
.filter((tag) => tag.name === name &&
|
|
231
243
|
tag.text &&
|
|
232
244
|
tag.text.find((elem) => elem.kind === "text" && elem.text.length) !== undefined)
|
|
233
|
-
.map((tag) => tag.text.find((elem) => elem.kind === "text")
|
|
245
|
+
.map((tag) => tag.text.find((elem) => elem.kind === "text")
|
|
246
|
+
.text);
|
|
234
247
|
const description = ((_a = route.description) === null || _a === void 0 ? void 0 : _a.length)
|
|
235
248
|
? route.description
|
|
236
249
|
: undefined;
|
|
@@ -250,14 +263,14 @@ var SwaggerGenerator;
|
|
|
250
263
|
return {
|
|
251
264
|
deprecated: deprecated ? true : undefined,
|
|
252
265
|
tags: getTagTexts("tag"),
|
|
266
|
+
operationId: route.operationId,
|
|
253
267
|
parameters: route.parameters
|
|
254
268
|
.filter((param) => param.category !== "body")
|
|
255
|
-
.map((param) =>
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
? generate_request_body(checker, collection, tupleList, route, bodyParam)
|
|
269
|
+
.map((param) => SwaggerSchemaGenerator_1.SwaggerSchemaGenerator.parameter(props)(route)(param)),
|
|
270
|
+
requestBody: body
|
|
271
|
+
? SwaggerSchemaGenerator_1.SwaggerSchemaGenerator.body(props)(route)(body)
|
|
259
272
|
: undefined,
|
|
260
|
-
responses:
|
|
273
|
+
responses: SwaggerSchemaGenerator_1.SwaggerSchemaGenerator.response(props)(route),
|
|
261
274
|
summary,
|
|
262
275
|
description,
|
|
263
276
|
security: route.security.length ? route.security : undefined,
|
|
@@ -270,7 +283,7 @@ var SwaggerGenerator;
|
|
|
270
283
|
"x-nestia-jsDocTags": route.tags,
|
|
271
284
|
"x-nestia-method": route.method,
|
|
272
285
|
};
|
|
273
|
-
}
|
|
286
|
+
};
|
|
274
287
|
function fill_security(security, swagger) {
|
|
275
288
|
swagger.components.securitySchemes = {};
|
|
276
289
|
for (const [key, value] of Object.entries(security))
|
|
@@ -282,478 +295,5 @@ var SwaggerGenerator;
|
|
|
282
295
|
return Object.assign(Object.assign({}, input), { in: (_a = input.in) !== null && _a !== void 0 ? _a : "header", name: (_b = input.name) !== null && _b !== void 0 ? _b : "Authorization" });
|
|
283
296
|
return input;
|
|
284
297
|
}
|
|
285
|
-
/* ---------------------------------------------------------
|
|
286
|
-
REQUEST & RESPONSE
|
|
287
|
-
--------------------------------------------------------- */
|
|
288
|
-
function generate_parameter(config, checker, collection, tupleList, route, parameter) {
|
|
289
|
-
var _a, _b, _c;
|
|
290
|
-
const schema = generate_schema(checker, collection, tupleList, parameter.type.type);
|
|
291
|
-
if (schema === null)
|
|
292
|
-
throw new Error(`Error on NestiaApplication.swagger(): invalid parameter type on ${route.symbol}#${parameter.name}`);
|
|
293
|
-
else if (parameter.custom &&
|
|
294
|
-
parameter.category === "param" &&
|
|
295
|
-
!!parameter.meta &&
|
|
296
|
-
(parameter.meta.type === "date" ||
|
|
297
|
-
parameter.meta.type === "uuid") &&
|
|
298
|
-
schema !== null) {
|
|
299
|
-
const string = schema;
|
|
300
|
-
string.format = parameter.meta.type;
|
|
301
|
-
}
|
|
302
|
-
else if (config.decompose === true &&
|
|
303
|
-
parameter.category === "query") {
|
|
304
|
-
const metadata = MetadataFactory_1.MetadataFactory.analyze(checker)({
|
|
305
|
-
resolve: true,
|
|
306
|
-
constant: true,
|
|
307
|
-
absorb: true,
|
|
308
|
-
validate: (meta) => {
|
|
309
|
-
if (meta.atomics.find((str) => str === "bigint"))
|
|
310
|
-
throw new Error(NO_BIGIT);
|
|
311
|
-
},
|
|
312
|
-
})(collection)(parameter.type.type);
|
|
313
|
-
if (metadata.size() === 1 &&
|
|
314
|
-
metadata.objects.length === 1 &&
|
|
315
|
-
metadata.objects[0].properties.every((prop) => prop.key.size() &&
|
|
316
|
-
prop.key.constants.length === 1 &&
|
|
317
|
-
prop.key.constants[0].type === "string" &&
|
|
318
|
-
route.parameters.every((param) => param.name !== prop.key.constants[0].values[0]))) {
|
|
319
|
-
const app = ApplicationProgrammer_1.ApplicationProgrammer.write({
|
|
320
|
-
purpose: "swagger",
|
|
321
|
-
})([metadata]);
|
|
322
|
-
const top = Object.values((_a = app.components.schemas) !== null && _a !== void 0 ? _a : {})[0];
|
|
323
|
-
if ((input => {
|
|
324
|
-
const $join = typia_1.default.is.join;
|
|
325
|
-
const $io0 = input => (undefined === input.$id || "string" === typeof input.$id) && "object" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && ("object" === typeof input.properties && null !== input.properties && false === Array.isArray(input.properties) && $io1(input.properties)) && (undefined === input.patternProperties || "object" === typeof input.patternProperties && null !== input.patternProperties && false === Array.isArray(input.patternProperties) && $io1(input.patternProperties)) && (undefined === input.additionalProperties || "object" === typeof input.additionalProperties && null !== input.additionalProperties && false === Array.isArray(input.additionalProperties) && $iu1(input.additionalProperties)) && (undefined === input.required || Array.isArray(input.required) && input.required.every(elem => "string" === typeof elem)) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-patternProperties"] || "object" === typeof input["x-typia-patternProperties"] && null !== input["x-typia-patternProperties"] && false === Array.isArray(input["x-typia-patternProperties"]) && $io1(input["x-typia-patternProperties"])) && (undefined === input["x-typia-additionalProperties"] || "object" === typeof input["x-typia-additionalProperties"] && null !== input["x-typia-additionalProperties"] && false === Array.isArray(input["x-typia-additionalProperties"]) && $iu1(input["x-typia-additionalProperties"]));
|
|
326
|
-
const $io1 = input => Object.keys(input).every(key => {
|
|
327
|
-
const value = input[key];
|
|
328
|
-
if (undefined === value)
|
|
329
|
-
return true;
|
|
330
|
-
if (RegExp(/(.*)/).test(key))
|
|
331
|
-
return "object" === typeof value && null !== value && false === Array.isArray(value) && $iu1(value);
|
|
332
|
-
return true;
|
|
333
|
-
});
|
|
334
|
-
const $io2 = input => Array.isArray(input["enum"]) && input["enum"].every(elem => "boolean" === typeof elem) && (undefined === input["default"] || "boolean" === typeof input["default"]) && "boolean" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
335
|
-
const $io3 = input => "type" === input.kind && ("int" === input.value || "uint" === input.value || "int32" === input.value || "uint32" === input.value || "int64" === input.value || "uint64" === input.value || "float" === input.value);
|
|
336
|
-
const $io4 = input => "minimum" === input.kind && "number" === typeof input.value;
|
|
337
|
-
const $io5 = input => "maximum" === input.kind && "number" === typeof input.value;
|
|
338
|
-
const $io6 = input => "exclusiveMinimum" === input.kind && "number" === typeof input.value;
|
|
339
|
-
const $io7 = input => "exclusiveMaximum" === input.kind && "number" === typeof input.value;
|
|
340
|
-
const $io8 = input => "multipleOf" === input.kind && "number" === typeof input.value;
|
|
341
|
-
const $io9 = input => "step" === input.kind && "number" === typeof input.value;
|
|
342
|
-
const $io10 = input => "format" === input.kind && ("uuid" === input.value || "date" === input.value || "url" === input.value || "email" === input.value || "ipv4" === input.value || "ipv6" === input.value || "datetime" === input.value);
|
|
343
|
-
const $io11 = input => "pattern" === input.kind && "string" === typeof input.value;
|
|
344
|
-
const $io12 = input => "length" === input.kind && "number" === typeof input.value;
|
|
345
|
-
const $io13 = input => "minLength" === input.kind && "number" === typeof input.value;
|
|
346
|
-
const $io14 = input => "maxLength" === input.kind && "number" === typeof input.value;
|
|
347
|
-
const $io15 = input => "items" === input.kind && "number" === typeof input.value;
|
|
348
|
-
const $io16 = input => "minItems" === input.kind && "number" === typeof input.value;
|
|
349
|
-
const $io17 = input => "maxItems" === input.kind && "number" === typeof input.value;
|
|
350
|
-
const $io18 = input => "string" === typeof input.name && (undefined === input.text || Array.isArray(input.text) && input.text.every(elem => "object" === typeof elem && null !== elem && $io19(elem)));
|
|
351
|
-
const $io19 = input => "string" === typeof input.text && "string" === typeof input.kind;
|
|
352
|
-
const $io20 = input => Array.isArray(input["enum"]) && input["enum"].every(elem => "number" === typeof elem) && (undefined === input["default"] || "number" === typeof input["default"]) && "number" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
353
|
-
const $io21 = input => Array.isArray(input["enum"]) && input["enum"].every(elem => "string" === typeof elem) && (undefined === input["default"] || "string" === typeof input["default"]) && "string" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
354
|
-
const $io22 = input => (undefined === input["default"] || "boolean" === typeof input["default"]) && "boolean" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
355
|
-
const $io23 = input => (undefined === input.minimum || "number" === typeof input.minimum && Math.floor(input.minimum) === input.minimum && (-2147483648 <= input.minimum && input.minimum <= 2147483647)) && (undefined === input.maximum || "number" === typeof input.maximum && Math.floor(input.maximum) === input.maximum && (-2147483648 <= input.maximum && input.maximum <= 2147483647)) && (undefined === input.exclusiveMinimum || "boolean" === typeof input.exclusiveMinimum) && (undefined === input.exclusiveMaximum || "boolean" === typeof input.exclusiveMaximum) && (undefined === input.multipleOf || "number" === typeof input.multipleOf && Math.floor(input.multipleOf) === input.multipleOf && (-2147483648 <= input.multipleOf && input.multipleOf <= 2147483647)) && (undefined === input["default"] || "number" === typeof input["default"]) && "integer" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
356
|
-
const $io24 = input => (undefined === input.minimum || "number" === typeof input.minimum) && (undefined === input.maximum || "number" === typeof input.maximum) && (undefined === input.exclusiveMinimum || "boolean" === typeof input.exclusiveMinimum) && (undefined === input.exclusiveMaximum || "boolean" === typeof input.exclusiveMaximum) && (undefined === input.multipleOf || "number" === typeof input.multipleOf) && (undefined === input["default"] || "number" === typeof input["default"]) && "number" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
357
|
-
const $io25 = input => (undefined === input.minLength || "number" === typeof input.minLength && Math.floor(input.minLength) === input.minLength && 0 <= input.minLength && input.minLength <= 4294967295) && (undefined === input.maxLength || "number" === typeof input.maxLength && Math.floor(input.maxLength) === input.maxLength && 0 <= input.maxLength && input.maxLength <= 4294967295) && (undefined === input.pattern || "string" === typeof input.pattern) && (undefined === input.format || "string" === typeof input.format) && (undefined === input["default"] || "string" === typeof input["default"]) && "string" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
358
|
-
const $io26 = input => "object" === typeof input.items && null !== input.items && false === Array.isArray(input.items) && $iu1(input.items) && (undefined === input.minItems || "number" === typeof input.minItems && Math.floor(input.minItems) === input.minItems && 0 <= input.minItems && input.minItems <= 4294967295) && (undefined === input.maxItems || "number" === typeof input.maxItems && Math.floor(input.maxItems) === input.maxItems && 0 <= input.maxItems && input.maxItems <= 4294967295) && (undefined === input["x-typia-tuple"] || "object" === typeof input["x-typia-tuple"] && null !== input["x-typia-tuple"] && $io27(input["x-typia-tuple"])) && "array" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
359
|
-
const $io27 = input => Array.isArray(input.items) && input.items.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && $iu1(elem)) && ("number" === typeof input.minItems && Math.floor(input.minItems) === input.minItems && 0 <= input.minItems && input.minItems <= 4294967295) && (undefined === input.maxItems || "number" === typeof input.maxItems && Math.floor(input.maxItems) === input.maxItems && 0 <= input.maxItems && input.maxItems <= 4294967295) && "array" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
360
|
-
const $io28 = input => Array.isArray(input.oneOf) && input.oneOf.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && $iu1(elem)) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
361
|
-
const $io29 = input => "string" === typeof input.$ref && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
362
|
-
const $io30 = input => "null" === input.type && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
363
|
-
const $io31 = input => null !== input.type && undefined === input.type && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
364
|
-
const $iu0 = input => (() => {
|
|
365
|
-
if ("maxItems" === input.kind)
|
|
366
|
-
return $io17(input);
|
|
367
|
-
if ("minItems" === input.kind)
|
|
368
|
-
return $io16(input);
|
|
369
|
-
if ("items" === input.kind)
|
|
370
|
-
return $io15(input);
|
|
371
|
-
if ("maxLength" === input.kind)
|
|
372
|
-
return $io14(input);
|
|
373
|
-
if ("minLength" === input.kind)
|
|
374
|
-
return $io13(input);
|
|
375
|
-
if ("length" === input.kind)
|
|
376
|
-
return $io12(input);
|
|
377
|
-
if ("pattern" === input.kind)
|
|
378
|
-
return $io11(input);
|
|
379
|
-
if ("format" === input.kind)
|
|
380
|
-
return $io10(input);
|
|
381
|
-
if ("step" === input.kind)
|
|
382
|
-
return $io9(input);
|
|
383
|
-
if ("multipleOf" === input.kind)
|
|
384
|
-
return $io8(input);
|
|
385
|
-
if ("exclusiveMaximum" === input.kind)
|
|
386
|
-
return $io7(input);
|
|
387
|
-
if ("exclusiveMinimum" === input.kind)
|
|
388
|
-
return $io6(input);
|
|
389
|
-
if ("maximum" === input.kind)
|
|
390
|
-
return $io5(input);
|
|
391
|
-
if ("minimum" === input.kind)
|
|
392
|
-
return $io4(input);
|
|
393
|
-
if ("type" === input.kind)
|
|
394
|
-
return $io3(input);
|
|
395
|
-
return false;
|
|
396
|
-
})();
|
|
397
|
-
const $iu1 = input => (() => {
|
|
398
|
-
if ("integer" === input.type)
|
|
399
|
-
return $io23(input);
|
|
400
|
-
if ("object" === typeof input.items && null !== input.items && false === Array.isArray(input.items) && $iu1(input.items))
|
|
401
|
-
return $io26(input);
|
|
402
|
-
if (Array.isArray(input.items) && input.items.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && $iu1(elem)))
|
|
403
|
-
return $io27(input);
|
|
404
|
-
if (undefined !== input.oneOf)
|
|
405
|
-
return $io28(input);
|
|
406
|
-
if (undefined !== input.$ref)
|
|
407
|
-
return $io29(input);
|
|
408
|
-
if ("null" === input.type)
|
|
409
|
-
return $io30(input);
|
|
410
|
-
return (() => {
|
|
411
|
-
if ($io21(input))
|
|
412
|
-
return $io21(input);
|
|
413
|
-
if ($io20(input))
|
|
414
|
-
return $io20(input);
|
|
415
|
-
if ($io2(input))
|
|
416
|
-
return $io2(input);
|
|
417
|
-
if ($io22(input))
|
|
418
|
-
return $io22(input);
|
|
419
|
-
if ($io24(input))
|
|
420
|
-
return $io24(input);
|
|
421
|
-
if ($io25(input))
|
|
422
|
-
return $io25(input);
|
|
423
|
-
if ($io31(input))
|
|
424
|
-
return $io31(input);
|
|
425
|
-
return false;
|
|
426
|
-
})();
|
|
427
|
-
})();
|
|
428
|
-
return "object" === typeof input && null !== input && $io0(input);
|
|
429
|
-
})(top))
|
|
430
|
-
return Object.entries(top.properties).map(([key, value]) => {
|
|
431
|
-
var _a, _b;
|
|
432
|
-
return ({
|
|
433
|
-
name: key,
|
|
434
|
-
in: "query",
|
|
435
|
-
schema: value,
|
|
436
|
-
required: (_b = (_a = top.required) === null || _a === void 0 ? void 0 : _a.includes(key)) !== null && _b !== void 0 ? _b : false,
|
|
437
|
-
description: value.description,
|
|
438
|
-
});
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
else if (config.decompose === true &&
|
|
443
|
-
parameter.category === "headers") {
|
|
444
|
-
const metadata = MetadataFactory_1.MetadataFactory.analyze(checker)({
|
|
445
|
-
resolve: true,
|
|
446
|
-
constant: true,
|
|
447
|
-
absorb: true,
|
|
448
|
-
validate: (meta) => {
|
|
449
|
-
if (meta.atomics.find((str) => str === "bigint"))
|
|
450
|
-
throw new Error(NO_BIGIT);
|
|
451
|
-
},
|
|
452
|
-
})(collection)(parameter.type.type);
|
|
453
|
-
if (metadata.size() === 1 &&
|
|
454
|
-
metadata.objects.length === 1 &&
|
|
455
|
-
metadata.objects[0].properties.every((prop) => prop.key.size() &&
|
|
456
|
-
prop.key.constants.length === 1 &&
|
|
457
|
-
prop.key.constants[0].type === "string" &&
|
|
458
|
-
route.parameters.every((param) => param.name !== prop.key.constants[0].values[0]))) {
|
|
459
|
-
const app = ApplicationProgrammer_1.ApplicationProgrammer.write({
|
|
460
|
-
purpose: "swagger",
|
|
461
|
-
})([metadata]);
|
|
462
|
-
const top = Object.values((_b = app.components.schemas) !== null && _b !== void 0 ? _b : {})[0];
|
|
463
|
-
if ((input => {
|
|
464
|
-
const $join = typia_1.default.is.join;
|
|
465
|
-
const $io0 = input => (undefined === input.$id || "string" === typeof input.$id) && "object" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && ("object" === typeof input.properties && null !== input.properties && false === Array.isArray(input.properties) && $io1(input.properties)) && (undefined === input.patternProperties || "object" === typeof input.patternProperties && null !== input.patternProperties && false === Array.isArray(input.patternProperties) && $io1(input.patternProperties)) && (undefined === input.additionalProperties || "object" === typeof input.additionalProperties && null !== input.additionalProperties && false === Array.isArray(input.additionalProperties) && $iu1(input.additionalProperties)) && (undefined === input.required || Array.isArray(input.required) && input.required.every(elem => "string" === typeof elem)) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-patternProperties"] || "object" === typeof input["x-typia-patternProperties"] && null !== input["x-typia-patternProperties"] && false === Array.isArray(input["x-typia-patternProperties"]) && $io1(input["x-typia-patternProperties"])) && (undefined === input["x-typia-additionalProperties"] || "object" === typeof input["x-typia-additionalProperties"] && null !== input["x-typia-additionalProperties"] && false === Array.isArray(input["x-typia-additionalProperties"]) && $iu1(input["x-typia-additionalProperties"]));
|
|
466
|
-
const $io1 = input => Object.keys(input).every(key => {
|
|
467
|
-
const value = input[key];
|
|
468
|
-
if (undefined === value)
|
|
469
|
-
return true;
|
|
470
|
-
if (RegExp(/(.*)/).test(key))
|
|
471
|
-
return "object" === typeof value && null !== value && false === Array.isArray(value) && $iu1(value);
|
|
472
|
-
return true;
|
|
473
|
-
});
|
|
474
|
-
const $io2 = input => Array.isArray(input["enum"]) && input["enum"].every(elem => "boolean" === typeof elem) && (undefined === input["default"] || "boolean" === typeof input["default"]) && "boolean" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
475
|
-
const $io3 = input => "type" === input.kind && ("int" === input.value || "uint" === input.value || "int32" === input.value || "uint32" === input.value || "int64" === input.value || "uint64" === input.value || "float" === input.value);
|
|
476
|
-
const $io4 = input => "minimum" === input.kind && "number" === typeof input.value;
|
|
477
|
-
const $io5 = input => "maximum" === input.kind && "number" === typeof input.value;
|
|
478
|
-
const $io6 = input => "exclusiveMinimum" === input.kind && "number" === typeof input.value;
|
|
479
|
-
const $io7 = input => "exclusiveMaximum" === input.kind && "number" === typeof input.value;
|
|
480
|
-
const $io8 = input => "multipleOf" === input.kind && "number" === typeof input.value;
|
|
481
|
-
const $io9 = input => "step" === input.kind && "number" === typeof input.value;
|
|
482
|
-
const $io10 = input => "format" === input.kind && ("uuid" === input.value || "date" === input.value || "url" === input.value || "email" === input.value || "ipv4" === input.value || "ipv6" === input.value || "datetime" === input.value);
|
|
483
|
-
const $io11 = input => "pattern" === input.kind && "string" === typeof input.value;
|
|
484
|
-
const $io12 = input => "length" === input.kind && "number" === typeof input.value;
|
|
485
|
-
const $io13 = input => "minLength" === input.kind && "number" === typeof input.value;
|
|
486
|
-
const $io14 = input => "maxLength" === input.kind && "number" === typeof input.value;
|
|
487
|
-
const $io15 = input => "items" === input.kind && "number" === typeof input.value;
|
|
488
|
-
const $io16 = input => "minItems" === input.kind && "number" === typeof input.value;
|
|
489
|
-
const $io17 = input => "maxItems" === input.kind && "number" === typeof input.value;
|
|
490
|
-
const $io18 = input => "string" === typeof input.name && (undefined === input.text || Array.isArray(input.text) && input.text.every(elem => "object" === typeof elem && null !== elem && $io19(elem)));
|
|
491
|
-
const $io19 = input => "string" === typeof input.text && "string" === typeof input.kind;
|
|
492
|
-
const $io20 = input => Array.isArray(input["enum"]) && input["enum"].every(elem => "number" === typeof elem) && (undefined === input["default"] || "number" === typeof input["default"]) && "number" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
493
|
-
const $io21 = input => Array.isArray(input["enum"]) && input["enum"].every(elem => "string" === typeof elem) && (undefined === input["default"] || "string" === typeof input["default"]) && "string" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
494
|
-
const $io22 = input => (undefined === input["default"] || "boolean" === typeof input["default"]) && "boolean" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
495
|
-
const $io23 = input => (undefined === input.minimum || "number" === typeof input.minimum && Math.floor(input.minimum) === input.minimum && (-2147483648 <= input.minimum && input.minimum <= 2147483647)) && (undefined === input.maximum || "number" === typeof input.maximum && Math.floor(input.maximum) === input.maximum && (-2147483648 <= input.maximum && input.maximum <= 2147483647)) && (undefined === input.exclusiveMinimum || "boolean" === typeof input.exclusiveMinimum) && (undefined === input.exclusiveMaximum || "boolean" === typeof input.exclusiveMaximum) && (undefined === input.multipleOf || "number" === typeof input.multipleOf && Math.floor(input.multipleOf) === input.multipleOf && (-2147483648 <= input.multipleOf && input.multipleOf <= 2147483647)) && (undefined === input["default"] || "number" === typeof input["default"]) && "integer" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
496
|
-
const $io24 = input => (undefined === input.minimum || "number" === typeof input.minimum) && (undefined === input.maximum || "number" === typeof input.maximum) && (undefined === input.exclusiveMinimum || "boolean" === typeof input.exclusiveMinimum) && (undefined === input.exclusiveMaximum || "boolean" === typeof input.exclusiveMaximum) && (undefined === input.multipleOf || "number" === typeof input.multipleOf) && (undefined === input["default"] || "number" === typeof input["default"]) && "number" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
497
|
-
const $io25 = input => (undefined === input.minLength || "number" === typeof input.minLength && Math.floor(input.minLength) === input.minLength && 0 <= input.minLength && input.minLength <= 4294967295) && (undefined === input.maxLength || "number" === typeof input.maxLength && Math.floor(input.maxLength) === input.maxLength && 0 <= input.maxLength && input.maxLength <= 4294967295) && (undefined === input.pattern || "string" === typeof input.pattern) && (undefined === input.format || "string" === typeof input.format) && (undefined === input["default"] || "string" === typeof input["default"]) && "string" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
498
|
-
const $io26 = input => "object" === typeof input.items && null !== input.items && false === Array.isArray(input.items) && $iu1(input.items) && (undefined === input.minItems || "number" === typeof input.minItems && Math.floor(input.minItems) === input.minItems && 0 <= input.minItems && input.minItems <= 4294967295) && (undefined === input.maxItems || "number" === typeof input.maxItems && Math.floor(input.maxItems) === input.maxItems && 0 <= input.maxItems && input.maxItems <= 4294967295) && (undefined === input["x-typia-tuple"] || "object" === typeof input["x-typia-tuple"] && null !== input["x-typia-tuple"] && $io27(input["x-typia-tuple"])) && "array" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
499
|
-
const $io27 = input => Array.isArray(input.items) && input.items.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && $iu1(elem)) && ("number" === typeof input.minItems && Math.floor(input.minItems) === input.minItems && 0 <= input.minItems && input.minItems <= 4294967295) && (undefined === input.maxItems || "number" === typeof input.maxItems && Math.floor(input.maxItems) === input.maxItems && 0 <= input.maxItems && input.maxItems <= 4294967295) && "array" === input.type && (undefined === input.nullable || "boolean" === typeof input.nullable) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
500
|
-
const $io28 = input => Array.isArray(input.oneOf) && input.oneOf.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && $iu1(elem)) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
501
|
-
const $io29 = input => "string" === typeof input.$ref && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
502
|
-
const $io30 = input => "null" === input.type && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
503
|
-
const $io31 = input => null !== input.type && undefined === input.type && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && (undefined === input["x-typia-metaTags"] || Array.isArray(input["x-typia-metaTags"]) && input["x-typia-metaTags"].every(elem => "object" === typeof elem && null !== elem && $iu0(elem))) && (undefined === input["x-typia-jsDocTags"] || Array.isArray(input["x-typia-jsDocTags"]) && input["x-typia-jsDocTags"].every(elem => "object" === typeof elem && null !== elem && $io18(elem))) && (undefined === input["x-typia-required"] || "boolean" === typeof input["x-typia-required"]) && (undefined === input["x-typia-optional"] || "boolean" === typeof input["x-typia-optional"]) && (undefined === input["x-typia-rest"] || "boolean" === typeof input["x-typia-rest"]);
|
|
504
|
-
const $iu0 = input => (() => {
|
|
505
|
-
if ("maxItems" === input.kind)
|
|
506
|
-
return $io17(input);
|
|
507
|
-
if ("minItems" === input.kind)
|
|
508
|
-
return $io16(input);
|
|
509
|
-
if ("items" === input.kind)
|
|
510
|
-
return $io15(input);
|
|
511
|
-
if ("maxLength" === input.kind)
|
|
512
|
-
return $io14(input);
|
|
513
|
-
if ("minLength" === input.kind)
|
|
514
|
-
return $io13(input);
|
|
515
|
-
if ("length" === input.kind)
|
|
516
|
-
return $io12(input);
|
|
517
|
-
if ("pattern" === input.kind)
|
|
518
|
-
return $io11(input);
|
|
519
|
-
if ("format" === input.kind)
|
|
520
|
-
return $io10(input);
|
|
521
|
-
if ("step" === input.kind)
|
|
522
|
-
return $io9(input);
|
|
523
|
-
if ("multipleOf" === input.kind)
|
|
524
|
-
return $io8(input);
|
|
525
|
-
if ("exclusiveMaximum" === input.kind)
|
|
526
|
-
return $io7(input);
|
|
527
|
-
if ("exclusiveMinimum" === input.kind)
|
|
528
|
-
return $io6(input);
|
|
529
|
-
if ("maximum" === input.kind)
|
|
530
|
-
return $io5(input);
|
|
531
|
-
if ("minimum" === input.kind)
|
|
532
|
-
return $io4(input);
|
|
533
|
-
if ("type" === input.kind)
|
|
534
|
-
return $io3(input);
|
|
535
|
-
return false;
|
|
536
|
-
})();
|
|
537
|
-
const $iu1 = input => (() => {
|
|
538
|
-
if ("integer" === input.type)
|
|
539
|
-
return $io23(input);
|
|
540
|
-
if ("object" === typeof input.items && null !== input.items && false === Array.isArray(input.items) && $iu1(input.items))
|
|
541
|
-
return $io26(input);
|
|
542
|
-
if (Array.isArray(input.items) && input.items.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && $iu1(elem)))
|
|
543
|
-
return $io27(input);
|
|
544
|
-
if (undefined !== input.oneOf)
|
|
545
|
-
return $io28(input);
|
|
546
|
-
if (undefined !== input.$ref)
|
|
547
|
-
return $io29(input);
|
|
548
|
-
if ("null" === input.type)
|
|
549
|
-
return $io30(input);
|
|
550
|
-
return (() => {
|
|
551
|
-
if ($io21(input))
|
|
552
|
-
return $io21(input);
|
|
553
|
-
if ($io20(input))
|
|
554
|
-
return $io20(input);
|
|
555
|
-
if ($io2(input))
|
|
556
|
-
return $io2(input);
|
|
557
|
-
if ($io22(input))
|
|
558
|
-
return $io22(input);
|
|
559
|
-
if ($io24(input))
|
|
560
|
-
return $io24(input);
|
|
561
|
-
if ($io25(input))
|
|
562
|
-
return $io25(input);
|
|
563
|
-
if ($io31(input))
|
|
564
|
-
return $io31(input);
|
|
565
|
-
return false;
|
|
566
|
-
})();
|
|
567
|
-
})();
|
|
568
|
-
return "object" === typeof input && null !== input && $io0(input);
|
|
569
|
-
})(top))
|
|
570
|
-
return Object.entries(top.properties).map(([key, value]) => {
|
|
571
|
-
var _a, _b;
|
|
572
|
-
return ({
|
|
573
|
-
name: key,
|
|
574
|
-
in: "header",
|
|
575
|
-
schema: value,
|
|
576
|
-
required: (_b = (_a = top.required) === null || _a === void 0 ? void 0 : _a.includes(key)) !== null && _b !== void 0 ? _b : false,
|
|
577
|
-
description: value.description,
|
|
578
|
-
});
|
|
579
|
-
});
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
return [
|
|
583
|
-
{
|
|
584
|
-
name: (_c = parameter.field) !== null && _c !== void 0 ? _c : parameter.name,
|
|
585
|
-
in: parameter.category === "param"
|
|
586
|
-
? "path"
|
|
587
|
-
: parameter.category === "headers"
|
|
588
|
-
? "header"
|
|
589
|
-
: parameter.category,
|
|
590
|
-
description: get_parametric_description(route, "param", parameter.name) || "",
|
|
591
|
-
schema,
|
|
592
|
-
required: required(parameter.type.type),
|
|
593
|
-
},
|
|
594
|
-
];
|
|
595
|
-
}
|
|
596
|
-
function generate_request_body(checker, collection, tupleList, route, parameter) {
|
|
597
|
-
const schema = generate_schema(checker, collection, tupleList, parameter.type.type);
|
|
598
|
-
if (schema === null)
|
|
599
|
-
throw new Error(`Error on NestiaApplication.sdk(): invalid request body type on ${route.symbol}.`);
|
|
600
|
-
else if (parameter.category !== "body")
|
|
601
|
-
throw new Error("Unreachable code.");
|
|
602
|
-
const contentType = parameter.custom
|
|
603
|
-
? parameter.contentType
|
|
604
|
-
: "application/json";
|
|
605
|
-
const description = get_parametric_description(route, "param", parameter.name);
|
|
606
|
-
return {
|
|
607
|
-
description: parameter.custom && parameter.encrypted
|
|
608
|
-
? `${warning.get(!!description).get("request")}${description !== null && description !== void 0 ? description : ""}`
|
|
609
|
-
: description,
|
|
610
|
-
content: {
|
|
611
|
-
[contentType]: {
|
|
612
|
-
schema,
|
|
613
|
-
},
|
|
614
|
-
},
|
|
615
|
-
required: true,
|
|
616
|
-
"x-nestia-encrypted": parameter.custom && parameter.encrypted,
|
|
617
|
-
};
|
|
618
|
-
}
|
|
619
|
-
function generate_response_body(checker, collection, tupleList, route) {
|
|
620
|
-
var _a, _b, _c, _d;
|
|
621
|
-
const output = {};
|
|
622
|
-
//----
|
|
623
|
-
// EXCEPTION STATUSES
|
|
624
|
-
//----
|
|
625
|
-
// FROM DECORATOR
|
|
626
|
-
for (const [status, exp] of Object.entries(route.exceptions)) {
|
|
627
|
-
const schema = generate_schema(checker, collection, tupleList, exp.type);
|
|
628
|
-
if (schema !== null)
|
|
629
|
-
output[status] = {
|
|
630
|
-
description: (_a = exp.description) !== null && _a !== void 0 ? _a : "",
|
|
631
|
-
content: {
|
|
632
|
-
"application/json": { schema },
|
|
633
|
-
},
|
|
634
|
-
};
|
|
635
|
-
}
|
|
636
|
-
// FROM COMMENT TAGS
|
|
637
|
-
for (const tag of route.tags) {
|
|
638
|
-
if (tag.name !== "throw" && tag.name !== "throws")
|
|
639
|
-
continue;
|
|
640
|
-
const text = (_c = (_b = tag.text) === null || _b === void 0 ? void 0 : _b.find((elem) => elem.kind === "text")) === null || _c === void 0 ? void 0 : _c.text;
|
|
641
|
-
if (text === undefined)
|
|
642
|
-
continue;
|
|
643
|
-
const elements = text.split(" ").map((str) => str.trim());
|
|
644
|
-
const status = elements[0];
|
|
645
|
-
if (isNaN(Number(status)) &&
|
|
646
|
-
status !== "2XX" &&
|
|
647
|
-
status !== "3XX" &&
|
|
648
|
-
status !== "4XX" &&
|
|
649
|
-
status !== "5XX")
|
|
650
|
-
continue;
|
|
651
|
-
const description = elements.length === 1 ? undefined : elements.slice(1).join(" ");
|
|
652
|
-
const oldbie = output[status];
|
|
653
|
-
if (description && oldbie !== undefined)
|
|
654
|
-
oldbie.description = description;
|
|
655
|
-
else if (oldbie === undefined)
|
|
656
|
-
output[status] = {
|
|
657
|
-
description: description !== null && description !== void 0 ? description : "",
|
|
658
|
-
content: {
|
|
659
|
-
"application/json": {
|
|
660
|
-
schema: {},
|
|
661
|
-
},
|
|
662
|
-
},
|
|
663
|
-
};
|
|
664
|
-
}
|
|
665
|
-
//----
|
|
666
|
-
// SUCCESS
|
|
667
|
-
//----
|
|
668
|
-
// STATUS & SCHEMA
|
|
669
|
-
const status = route.status !== undefined
|
|
670
|
-
? String(route.status)
|
|
671
|
-
: route.method === "GET" ||
|
|
672
|
-
route.method === "HEAD" ||
|
|
673
|
-
route.method === "DELETE"
|
|
674
|
-
? "200"
|
|
675
|
-
: "201";
|
|
676
|
-
const schema = generate_schema(checker, collection, tupleList, route.output.type);
|
|
677
|
-
// DO ASSIGN
|
|
678
|
-
const description = (_d = get_parametric_description(route, "return")) !== null && _d !== void 0 ? _d : get_parametric_description(route, "returns");
|
|
679
|
-
output[status] = {
|
|
680
|
-
description: route.encrypted
|
|
681
|
-
? `${warning.get(!!description).get("response", route.method)}${description !== null && description !== void 0 ? description : ""}`
|
|
682
|
-
: description !== null && description !== void 0 ? description : "",
|
|
683
|
-
content: schema === null || route.output.name === "void"
|
|
684
|
-
? undefined
|
|
685
|
-
: {
|
|
686
|
-
[route.output.contentType]: {
|
|
687
|
-
schema,
|
|
688
|
-
},
|
|
689
|
-
},
|
|
690
|
-
"x-nestia-encrypted": route.encrypted,
|
|
691
|
-
};
|
|
692
|
-
return output;
|
|
693
|
-
}
|
|
694
|
-
/* ---------------------------------------------------------
|
|
695
|
-
UTILS
|
|
696
|
-
--------------------------------------------------------- */
|
|
697
|
-
function generate_schema(checker, collection, tupleList, type) {
|
|
698
|
-
const metadata = MetadataFactory_1.MetadataFactory.analyze(checker)({
|
|
699
|
-
resolve: true,
|
|
700
|
-
constant: true,
|
|
701
|
-
absorb: false,
|
|
702
|
-
validate: (meta) => {
|
|
703
|
-
if (meta.atomics.find((str) => str === "bigint"))
|
|
704
|
-
throw new Error(NO_BIGIT);
|
|
705
|
-
},
|
|
706
|
-
})(collection)(type);
|
|
707
|
-
if (metadata.empty() && metadata.nullable === false)
|
|
708
|
-
return null;
|
|
709
|
-
const schema = {};
|
|
710
|
-
tupleList.push({ metadata, schema });
|
|
711
|
-
return schema;
|
|
712
|
-
}
|
|
713
|
-
function get_parametric_description(route, tagName, parameterName) {
|
|
714
|
-
var _a;
|
|
715
|
-
const parametric = parameterName
|
|
716
|
-
? (tag) => tag.text.find((elem) => elem.kind === "parameterName" &&
|
|
717
|
-
elem.text === parameterName) !== undefined
|
|
718
|
-
: () => true;
|
|
719
|
-
const tag = route.tags.find((tag) => tag.name === tagName && tag.text && parametric(tag));
|
|
720
|
-
return tag && tag.text
|
|
721
|
-
? (_a = tag.text.find((elem) => elem.kind === "text")) === null || _a === void 0 ? void 0 : _a.text
|
|
722
|
-
: undefined;
|
|
723
|
-
}
|
|
724
298
|
})(SwaggerGenerator || (exports.SwaggerGenerator = SwaggerGenerator = {}));
|
|
725
|
-
const required = (type) => {
|
|
726
|
-
if (type.isUnion())
|
|
727
|
-
return type.types.every((type) => required(type));
|
|
728
|
-
const obstacle = (other) => (type.getFlags() & other) === 0;
|
|
729
|
-
return (obstacle(typescript_1.default.TypeFlags.Undefined) &&
|
|
730
|
-
obstacle(typescript_1.default.TypeFlags.Never) &&
|
|
731
|
-
obstacle(typescript_1.default.TypeFlags.Void) &&
|
|
732
|
-
obstacle(typescript_1.default.TypeFlags.VoidLike));
|
|
733
|
-
};
|
|
734
|
-
const warning = new Singleton_1.Singleton((described) => {
|
|
735
|
-
return new Singleton_1.Singleton((type, method) => {
|
|
736
|
-
const summary = type === "request"
|
|
737
|
-
? "Request body must be encrypted."
|
|
738
|
-
: "Response data have been encrypted.";
|
|
739
|
-
const component = type === "request"
|
|
740
|
-
? "[EncryptedBody](https://github.com/samchon/@nestia/core#encryptedbody)"
|
|
741
|
-
: `[EncryptedRoute.${method[0].toUpperCase()}.${method
|
|
742
|
-
.substring(1)
|
|
743
|
-
.toLowerCase()}](https://github.com/samchon/@nestia/core#encryptedroute)`;
|
|
744
|
-
const content = [
|
|
745
|
-
"## Warning",
|
|
746
|
-
"",
|
|
747
|
-
summary,
|
|
748
|
-
"",
|
|
749
|
-
`The ${type} body data would be encrypted as "AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding", through the ${component} component.`,
|
|
750
|
-
"",
|
|
751
|
-
`Therefore, just utilize this swagger editor only for referencing. If you need to call the real API, using [SDK](https://github.com/samchon/nestia#software-development-kit) would be much better.`,
|
|
752
|
-
];
|
|
753
|
-
if (described === true)
|
|
754
|
-
content.push("----------------", "");
|
|
755
|
-
return content.join("\n");
|
|
756
|
-
});
|
|
757
|
-
});
|
|
758
|
-
const NO_BIGIT = "Error on typia.application(): does not allow bigint type.";
|
|
759
299
|
//# sourceMappingURL=SwaggerGenerator.js.map
|