@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.
Files changed (60) hide show
  1. package/assets/bundle/api/utils/NestiaSimulator.ts +1 -22
  2. package/lib/NestiaSdkApplication.js +1 -1
  3. package/lib/NestiaSdkApplication.js.map +1 -1
  4. package/lib/analyses/ControllerAnalyzer.js +11 -5
  5. package/lib/analyses/ControllerAnalyzer.js.map +1 -1
  6. package/lib/analyses/ExceptionAnalyzer.js +7 -2
  7. package/lib/analyses/ExceptionAnalyzer.js.map +1 -1
  8. package/lib/analyses/ImportAnalyzer.js +1 -1
  9. package/lib/analyses/ImportAnalyzer.js.map +1 -1
  10. package/lib/analyses/ReflectAnalyzer.js +0 -10
  11. package/lib/analyses/ReflectAnalyzer.js.map +1 -1
  12. package/lib/executable/internal/NestiaSdkConfig.js +37 -46
  13. package/lib/executable/internal/NestiaSdkConfig.js.map +1 -1
  14. package/lib/generates/SwaggerGenerator.d.ts +10 -0
  15. package/lib/generates/SwaggerGenerator.js +37 -497
  16. package/lib/generates/SwaggerGenerator.js.map +1 -1
  17. package/lib/generates/internal/E2eFileProgrammer.js +5 -44
  18. package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
  19. package/lib/generates/internal/SdkFunctionProgrammer.js +13 -11
  20. package/lib/generates/internal/SdkFunctionProgrammer.js.map +1 -1
  21. package/lib/generates/internal/SdkSimulationProgrammer.js +4 -4
  22. package/lib/generates/internal/SdkSimulationProgrammer.js.map +1 -1
  23. package/lib/generates/internal/SwaggerSchemaGenerator.d.ts +19 -0
  24. package/lib/generates/internal/SwaggerSchemaGenerator.js +301 -0
  25. package/lib/generates/internal/SwaggerSchemaGenerator.js.map +1 -0
  26. package/lib/generates/internal/SwaggerSchemaValidator.d.ts +7 -0
  27. package/lib/generates/internal/SwaggerSchemaValidator.js +196 -0
  28. package/lib/generates/internal/SwaggerSchemaValidator.js.map +1 -0
  29. package/lib/structures/IController.d.ts +0 -4
  30. package/lib/structures/IRoute.d.ts +6 -3
  31. package/lib/structures/ISwaggerError.d.ts +6 -0
  32. package/lib/structures/ISwaggerError.js +3 -0
  33. package/lib/structures/ISwaggerError.js.map +1 -0
  34. package/lib/structures/ISwaggerRoute.d.ts +2 -1
  35. package/lib/structures/ISwaggerSchemaTuple.d.ts +6 -0
  36. package/lib/structures/ISwaggerSchemaTuple.js +3 -0
  37. package/lib/structures/ISwaggerSchemaTuple.js.map +1 -0
  38. package/lib/structures/ITypeTuple.d.ts +1 -1
  39. package/lib/utils/ImportDictionary.d.ts +1 -2
  40. package/lib/utils/ImportDictionary.js +28 -24
  41. package/lib/utils/ImportDictionary.js.map +1 -1
  42. package/package.json +5 -5
  43. package/src/NestiaSdkApplication.ts +1 -1
  44. package/src/analyses/ControllerAnalyzer.ts +13 -4
  45. package/src/analyses/ExceptionAnalyzer.ts +3 -2
  46. package/src/analyses/ImportAnalyzer.ts +1 -1
  47. package/src/analyses/ReflectAnalyzer.ts +0 -10
  48. package/src/generates/SwaggerGenerator.ts +102 -478
  49. package/src/generates/internal/E2eFileProgrammer.ts +7 -49
  50. package/src/generates/internal/SdkFunctionProgrammer.ts +14 -12
  51. package/src/generates/internal/SdkSimulationProgrammer.ts +5 -5
  52. package/src/generates/internal/SwaggerSchemaGenerator.ts +433 -0
  53. package/src/generates/internal/SwaggerSchemaValidator.ts +216 -0
  54. package/src/structures/IController.ts +0 -4
  55. package/src/structures/IRoute.ts +6 -3
  56. package/src/structures/ISwaggerError.ts +8 -0
  57. package/src/structures/ISwaggerRoute.ts +2 -1
  58. package/src/structures/ISwaggerSchemaTuple.ts +7 -0
  59. package/src/structures/ITypeTuple.ts +1 -1
  60. package/src/utils/ImportDictionary.ts +29 -26
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwaggerSchemaGenerator = void 0;
4
+ const tstl_1 = require("tstl");
5
+ const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
6
+ const MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
7
+ const Metadata_1 = require("typia/lib/schemas/metadata/Metadata");
8
+ const SwaggerSchemaValidator_1 = require("./SwaggerSchemaValidator");
9
+ var SwaggerSchemaGenerator;
10
+ (function (SwaggerSchemaGenerator) {
11
+ SwaggerSchemaGenerator.response = (props) => (route) => {
12
+ var _a, _b, _c, _d;
13
+ const output = {};
14
+ //----
15
+ // EXCEPTION STATUSES
16
+ //----
17
+ // FROM DECORATOR
18
+ for (const [status, exp] of Object.entries(route.exceptions)) {
19
+ const result = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
20
+ escape: true,
21
+ constant: true,
22
+ absorb: false,
23
+ validate: (meta) => {
24
+ const bigint = meta.atomics.some((a) => a.type === "bigint") ||
25
+ meta.constants.some((a) => a.type === "bigint");
26
+ return bigint ? ["bigint type is not allowed."] : [];
27
+ },
28
+ })(props.collection)(exp.type);
29
+ if (result.success === false)
30
+ props.errors.push(...result.errors.map((e) => (Object.assign(Object.assign({}, e), { route, from: `response(status: ${status})` }))));
31
+ output[status] = {
32
+ description: (_a = exp.description) !== null && _a !== void 0 ? _a : "",
33
+ content: {
34
+ "application/json": {
35
+ schema: coalesceSchema(props)(result),
36
+ },
37
+ },
38
+ };
39
+ }
40
+ // FROM COMMENT TAGS -> ANY
41
+ for (const tag of route.tags) {
42
+ if (tag.name !== "throw" && tag.name !== "throws")
43
+ continue;
44
+ 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;
45
+ if (text === undefined)
46
+ continue;
47
+ const elements = text
48
+ .split(" ")
49
+ .map((str) => str.trim());
50
+ const status = elements[0];
51
+ if (isNaN(Number(status)) &&
52
+ status !== "2XX" &&
53
+ status !== "3XX" &&
54
+ status !== "4XX" &&
55
+ status !== "5XX")
56
+ continue;
57
+ const description = elements.length === 1
58
+ ? undefined
59
+ : elements.slice(1).join(" ");
60
+ const oldbie = output[status];
61
+ if (description && oldbie !== undefined)
62
+ oldbie.description = description;
63
+ else if (oldbie === undefined)
64
+ output[status] = {
65
+ description: description !== null && description !== void 0 ? description : "",
66
+ content: {
67
+ "application/json": {
68
+ schema: {},
69
+ },
70
+ },
71
+ };
72
+ }
73
+ //----
74
+ // SUCCESS
75
+ //----
76
+ // STATUS
77
+ const status = route.status !== undefined
78
+ ? String(route.status)
79
+ : route.method === "GET" ||
80
+ route.method === "HEAD" ||
81
+ route.method === "DELETE"
82
+ ? "200"
83
+ : "201";
84
+ // SCHEMA
85
+ const result = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
86
+ escape: true,
87
+ constant: true,
88
+ absorb: false,
89
+ validate: (meta) => {
90
+ const bigint = meta.atomics.some((a) => a.type === "bigint") ||
91
+ meta.constants.some((a) => a.type === "bigint");
92
+ return bigint ? ["bigint type is not allowed."] : [];
93
+ },
94
+ })(props.collection)(route.output.type);
95
+ if (result.success === false)
96
+ props.errors.push(...result.errors.map((e) => (Object.assign(Object.assign({}, e), { route, from: "response" }))));
97
+ // DO ASSIGN
98
+ const description = (_d = describe(route, "return")) !== null && _d !== void 0 ? _d : describe(route, "returns");
99
+ output[status] = {
100
+ description: route.encrypted
101
+ ? `${warning
102
+ .get(!!description)
103
+ .get("response", route.method)}${description !== null && description !== void 0 ? description : ""}`
104
+ : description !== null && description !== void 0 ? description : "",
105
+ content: route.output.typeName === "void"
106
+ ? undefined
107
+ : {
108
+ [route.output.contentType]: {
109
+ schema: coalesceSchema(props)(result),
110
+ },
111
+ },
112
+ "x-nestia-encrypted": route.encrypted,
113
+ };
114
+ return output;
115
+ };
116
+ SwaggerSchemaGenerator.body = (props) => (route) => (param) => {
117
+ // ANALZE TYPE WITH VALIDATION
118
+ const result = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
119
+ escape: true,
120
+ constant: true,
121
+ absorb: true,
122
+ validate: (meta) => {
123
+ const bigint = meta.atomics.some((a) => a.type === "bigint") ||
124
+ meta.constants.some((a) => a.type === "bigint");
125
+ return bigint ? ["bigint type is not allowed."] : [];
126
+ },
127
+ })(props.collection)(param.type);
128
+ if (result.success === false)
129
+ props.errors.push(...result.errors.map((e) => (Object.assign(Object.assign({}, e), { route, from: param.name }))));
130
+ // LIST UP PROPERTIES
131
+ const contentType = param.custom && param.category === "body"
132
+ ? param.contentType
133
+ : "application/json";
134
+ const encrypted = param.custom && param.category === "body" && param.encrypted;
135
+ const description = describe(route, "param", param.name);
136
+ // RETURNS WITH LAZY CONSTRUCTION
137
+ const schema = coalesceSchema(props)(result);
138
+ return {
139
+ description: encrypted
140
+ ? `${warning.get(!!description).get("request")}${description !== null && description !== void 0 ? description : ""}`
141
+ : description,
142
+ content: {
143
+ [contentType]: {
144
+ schema,
145
+ },
146
+ },
147
+ required: true,
148
+ "x-nestia-encrypted": encrypted,
149
+ };
150
+ };
151
+ SwaggerSchemaGenerator.parameter = (props) => (route) => (param) => param.category === "headers"
152
+ ? headers(props)(route)(param)
153
+ : param.category === "param"
154
+ ? path(props)(route)(param)
155
+ : query(props)(route)(param);
156
+ const headers = (props) => (route) => (param) => {
157
+ // ANALYZE TYPE WITH VALIDATIONS
158
+ const result = (() => {
159
+ const result = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
160
+ escape: false,
161
+ constant: true,
162
+ absorb: true,
163
+ })(props.collection)(param.type);
164
+ if (result.success === false)
165
+ props.errors.push(...result.errors.map((e) => (Object.assign(Object.assign({}, e), { route, from: param.name }))));
166
+ else if (result.data.objects.length === 1) {
167
+ // WHEN OBJECT CASE, VALIDATE IT MORE DETAILY
168
+ const again = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
169
+ escape: false,
170
+ constant: true,
171
+ absorb: true,
172
+ validate: SwaggerSchemaValidator_1.SwaggerSchemaValidator.headers,
173
+ })(new MetadataCollection_1.MetadataCollection())(param.type);
174
+ if (again.success === false)
175
+ return again;
176
+ }
177
+ return result;
178
+ })();
179
+ // RETURNS WITH LAZY CONSTRUCTION
180
+ return lazyParameterReturns(props)(route)("header")(param, result);
181
+ };
182
+ const path = (props) => (route) => (param) => {
183
+ // ANALZE TYPE WITH VALIDATION
184
+ const result = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
185
+ escape: false,
186
+ constant: true,
187
+ absorb: true,
188
+ validate: SwaggerSchemaValidator_1.SwaggerSchemaValidator.path,
189
+ })(props.collection)(param.type);
190
+ if (result.success === false)
191
+ props.errors.push(...result.errors.map((e) => (Object.assign(Object.assign({}, e), { route, from: param.name }))));
192
+ // RETURNS WITH LAZY CONSTRUCTION
193
+ return lazyParameterReturns(props)(route)("path")(param, result);
194
+ };
195
+ const query = (props) => (route) => (param) => {
196
+ // ANALYZE TYPE WITH VALIDATIONS
197
+ const result = (() => {
198
+ const result = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
199
+ escape: false,
200
+ constant: true,
201
+ absorb: true,
202
+ })(props.collection)(param.type);
203
+ if (result.success === false) {
204
+ props.errors.push(...result.errors.map((e) => (Object.assign(Object.assign({}, e), { route, from: param.name }))));
205
+ }
206
+ else if (result.data.objects.length === 1) {
207
+ // WHEN OBJECT CASE, VALIDATE IT MORE DETAILY
208
+ const again = MetadataFactory_1.MetadataFactory.analyze(props.checker)({
209
+ escape: false,
210
+ constant: true,
211
+ absorb: true,
212
+ validate: SwaggerSchemaValidator_1.SwaggerSchemaValidator.query,
213
+ })(new MetadataCollection_1.MetadataCollection())(param.type);
214
+ if (again.success === false)
215
+ return again;
216
+ }
217
+ return result;
218
+ })();
219
+ // RETURNS WITH LAZY CONSTRUCTION
220
+ return lazyParameterReturns(props)(route)("query")(param, result);
221
+ };
222
+ const coalesceSchema = (props) => (result) => {
223
+ const schema = {};
224
+ props.tuples.push({
225
+ metadata: result.success ? result.data : any.get(),
226
+ schema,
227
+ });
228
+ return schema;
229
+ };
230
+ const lazyParameterReturns = (props) => (route) => (inKeyword) => (param, result) => {
231
+ var _a, _b;
232
+ const schema = coalesceSchema(props)(result);
233
+ return {
234
+ name: (_a = param.field) !== null && _a !== void 0 ? _a : param.name,
235
+ in: inKeyword,
236
+ schema,
237
+ description: (_b = describe(route, "param", param.name)) !== null && _b !== void 0 ? _b : "",
238
+ required: result.success ? result.data.isRequired() : true,
239
+ };
240
+ };
241
+ function describe(route, tagName, parameterName) {
242
+ var _a;
243
+ const parametric = parameterName
244
+ ? (tag) => tag.text.find((elem) => elem.kind === "parameterName" &&
245
+ elem.text === parameterName) !== undefined
246
+ : () => true;
247
+ const tag = route.tags.find((tag) => tag.name === tagName && tag.text && parametric(tag));
248
+ return tag && tag.text
249
+ ? (_a = tag.text.find((elem) => elem.kind === "text")) === null || _a === void 0 ? void 0 : _a.text
250
+ : undefined;
251
+ }
252
+ })(SwaggerSchemaGenerator || (exports.SwaggerSchemaGenerator = SwaggerSchemaGenerator = {}));
253
+ const warning = new tstl_1.Singleton((described) => {
254
+ return new tstl_1.Singleton((type, method) => {
255
+ const summary = type === "request"
256
+ ? "Request body must be encrypted."
257
+ : "Response data have been encrypted.";
258
+ const component = type === "request"
259
+ ? "[EncryptedBody](https://github.com/samchon/@nestia/core#encryptedbody)"
260
+ : `[EncryptedRoute.${method[0].toUpperCase()}.${method
261
+ .substring(1)
262
+ .toLowerCase()}](https://github.com/samchon/@nestia/core#encryptedroute)`;
263
+ const content = [
264
+ "## Warning",
265
+ "",
266
+ summary,
267
+ "",
268
+ `The ${type} body data would be encrypted as "AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding", through the ${component} component.`,
269
+ "",
270
+ `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.`,
271
+ ];
272
+ if (described === true)
273
+ content.push("----------------", "");
274
+ return content.join("\n");
275
+ });
276
+ });
277
+ const any = new tstl_1.Singleton(() => Metadata_1.Metadata.from({
278
+ any: true,
279
+ required: true,
280
+ optional: false,
281
+ nullable: false,
282
+ functional: false,
283
+ atomics: [],
284
+ constants: [],
285
+ templates: [],
286
+ escaped: null,
287
+ rest: null,
288
+ arrays: [],
289
+ tuples: [],
290
+ objects: [],
291
+ aliases: [],
292
+ natives: [],
293
+ sets: [],
294
+ maps: [],
295
+ }, {
296
+ aliases: [],
297
+ arrays: [],
298
+ tuples: [],
299
+ objects: [],
300
+ }));
301
+ //# sourceMappingURL=SwaggerSchemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerSchemaGenerator.js","sourceRoot":"","sources":["../../../src/generates/internal/SwaggerSchemaGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
2
+ import { Metadata } from "typia/lib/schemas/metadata/Metadata";
3
+ export declare namespace SwaggerSchemaValidator {
4
+ const path: (meta: Metadata) => string[];
5
+ const query: (meta: Metadata, explore: MetadataFactory.IExplore) => string[];
6
+ const headers: (meta: Metadata, explore: MetadataFactory.IExplore) => string[];
7
+ }
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwaggerSchemaValidator = void 0;
4
+ const MetadataArray_1 = require("typia/lib/schemas/metadata/MetadataArray");
5
+ var SwaggerSchemaValidator;
6
+ (function (SwaggerSchemaValidator) {
7
+ SwaggerSchemaValidator.path = (meta) => {
8
+ const errors = [];
9
+ const insert = (msg) => errors.push(msg);
10
+ if (meta.any)
11
+ insert("do not allow any type");
12
+ if (meta.isRequired() === false)
13
+ insert("do not allow undefindable type");
14
+ const atomics = CoreMetadataUtil.atomics(meta);
15
+ const expected = meta.atomics.length +
16
+ meta.templates.length +
17
+ meta.constants
18
+ .map((c) => c.values.length)
19
+ .reduce((a, b) => a + b, 0);
20
+ if (meta.size() !== expected || atomics.size === 0)
21
+ insert("only atomic or constant types are allowed");
22
+ if (atomics.size > 1)
23
+ insert("do not allow union type");
24
+ return errors;
25
+ };
26
+ SwaggerSchemaValidator.query = (meta, explore) => {
27
+ const errors = [];
28
+ const insert = (msg) => errors.push(msg);
29
+ if (explore.top === true) {
30
+ // TOP MUST BE ONLY OBJECT
31
+ if (meta.objects.length !== 1 || meta.bucket() !== 1)
32
+ insert("only one object type is allowed.");
33
+ if (meta.nullable === true)
34
+ insert("query parameters cannot be null.");
35
+ if (meta.isRequired() === false)
36
+ insert("query parameters cannot be undefined.");
37
+ }
38
+ else if (explore.nested !== null &&
39
+ explore.nested instanceof MetadataArray_1.MetadataArray) {
40
+ const atomics = CoreMetadataUtil.atomics(meta);
41
+ const expected = meta.atomics.length +
42
+ meta.templates.length +
43
+ meta.constants
44
+ .map((c) => c.values.length)
45
+ .reduce((a, b) => a + b, 0);
46
+ if (atomics.size > 1)
47
+ insert("union type is not allowed in array.");
48
+ if (meta.nullable)
49
+ insert("nullable type is not allowed in array.");
50
+ if (meta.isRequired() === false)
51
+ insert("optional type is not allowed in array.");
52
+ if (meta.size() !== expected)
53
+ insert("only atomic or constant types are allowed in array.");
54
+ }
55
+ else if (explore.object && explore.property !== null) {
56
+ //----
57
+ // COMMON
58
+ //----
59
+ // PROPERTY MUST BE SOLE
60
+ if (typeof explore.property === "object")
61
+ insert("dynamic property is not allowed.");
62
+ // DO NOT ALLOW TUPLE TYPE
63
+ if (meta.tuples.length)
64
+ insert("tuple type is not allowed.");
65
+ // DO NOT ALLOW UNION TYPE
66
+ if (CoreMetadataUtil.isUnion(meta))
67
+ insert("union type is not allowed.");
68
+ // DO NOT ALLOW NESTED OBJECT
69
+ if (meta.objects.length ||
70
+ meta.sets.length ||
71
+ meta.maps.length ||
72
+ meta.natives.length)
73
+ insert("nested object type is not allowed.");
74
+ //----
75
+ // ARRAY CASES
76
+ //----
77
+ const isArray = meta.arrays.length > 1 || meta.tuples.length > 1;
78
+ // ARRAY TYPE MUST BE REQUIRED
79
+ if (isArray && meta.isRequired() === false)
80
+ insert("optional type is not allowed when array.");
81
+ // SET-COOKIE MUST BE ARRAY
82
+ if (explore.property === "set-cookie" && !isArray)
83
+ insert("set-cookie property must be array.");
84
+ }
85
+ return errors;
86
+ };
87
+ SwaggerSchemaValidator.headers = (meta, explore) => {
88
+ const errors = [];
89
+ const insert = (msg) => errors.push(msg);
90
+ if (explore.top === true) {
91
+ // TOP MUST BE ONLY OBJECT
92
+ if (meta.objects.length !== 1 || meta.bucket() !== 1)
93
+ insert("only one object type is allowed.");
94
+ if (meta.nullable === true)
95
+ insert("headers cannot be null.");
96
+ if (meta.isRequired() === false)
97
+ insert("headers cannot be null.");
98
+ }
99
+ else if (explore.nested !== null &&
100
+ explore.nested instanceof MetadataArray_1.MetadataArray) {
101
+ const atomics = CoreMetadataUtil.atomics(meta);
102
+ const expected = meta.atomics.length +
103
+ meta.templates.length +
104
+ meta.constants
105
+ .map((c) => c.values.length)
106
+ .reduce((a, b) => a + b, 0);
107
+ if (atomics.size > 1)
108
+ insert("union type is not allowed in array.");
109
+ if (meta.nullable)
110
+ insert("nullable type is not allowed in array.");
111
+ if (meta.isRequired() === false)
112
+ insert("optional type is not allowed.");
113
+ if (meta.size() !== expected)
114
+ insert("only atomic or constant types are allowed in array.");
115
+ }
116
+ else if (explore.object && explore.property !== null) {
117
+ //----
118
+ // COMMON
119
+ //----
120
+ // PROPERTY MUST BE SOLE
121
+ if (typeof explore.property === "object")
122
+ insert("dynamic property is not allowed.");
123
+ // MUST BE LOWER-CASE
124
+ if (typeof explore.property === "string" &&
125
+ explore.property !== explore.property.toLowerCase())
126
+ insert("property name must be lower-case.");
127
+ // DO NOT ALLOW TUPLE TYPE
128
+ if (meta.tuples.length)
129
+ insert("tuple type is not allowed.");
130
+ // DO NOT ALLOW UNION TYPE
131
+ if (CoreMetadataUtil.isUnion(meta))
132
+ insert("union type is not allowed.");
133
+ // DO NOT ALLOW NESTED OBJECT
134
+ if (meta.objects.length ||
135
+ meta.sets.length ||
136
+ meta.maps.length ||
137
+ meta.natives.length)
138
+ insert("nested object type is not allowed.");
139
+ // DO NOT ALLOW NULLABLE
140
+ if (meta.nullable)
141
+ insert("nullable type is not allowed.");
142
+ //----
143
+ // ARRAY CASES
144
+ //----
145
+ const isArray = meta.arrays.length > 1;
146
+ // ARRAY TYPE MUST BE REQUIRED
147
+ if (isArray && meta.isRequired() === false)
148
+ insert("optional type is not allowed when array.");
149
+ // SET-COOKIE MUST BE ARRAY
150
+ if (explore.property === "set-cookie" && !isArray)
151
+ insert("set-cookie property must be array.");
152
+ // MUST BE SINGULAR CASE
153
+ if (typeof explore.property === "string" &&
154
+ SINGULAR.has(explore.property) &&
155
+ isArray)
156
+ insert("property cannot be array.");
157
+ }
158
+ return errors;
159
+ };
160
+ })(SwaggerSchemaValidator || (exports.SwaggerSchemaValidator = SwaggerSchemaValidator = {}));
161
+ var CoreMetadataUtil;
162
+ (function (CoreMetadataUtil) {
163
+ CoreMetadataUtil.atomics = (meta) => new Set([
164
+ ...meta.atomics.map((a) => a.type),
165
+ ...meta.constants.map((c) => c.type),
166
+ ...(meta.templates.length ? ["string"] : []),
167
+ ]);
168
+ CoreMetadataUtil.isUnion = (meta) => CoreMetadataUtil.atomics(meta).size +
169
+ meta.arrays.length +
170
+ meta.tuples.length +
171
+ meta.natives.length +
172
+ meta.maps.length +
173
+ meta.objects.length >
174
+ 1;
175
+ })(CoreMetadataUtil || (CoreMetadataUtil = {}));
176
+ const SINGULAR = new Set([
177
+ "age",
178
+ "authorization",
179
+ "content-length",
180
+ "content-type",
181
+ "etag",
182
+ "expires",
183
+ "from",
184
+ "host",
185
+ "if-modified-since",
186
+ "if-unmodified-since",
187
+ "last-modified",
188
+ "location",
189
+ "max-forwards",
190
+ "proxy-authorization",
191
+ "referer",
192
+ "retry-after",
193
+ "server",
194
+ "user-agent",
195
+ ]);
196
+ //# sourceMappingURL=SwaggerSchemaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerSchemaValidator.js","sourceRoot":"","sources":["../../../src/generates/internal/SwaggerSchemaValidator.ts"],"names":[],"mappings":"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"}
@@ -56,10 +56,6 @@ export declare namespace IController {
56
56
  index: number;
57
57
  name: string;
58
58
  field: string | undefined;
59
- meta?: {
60
- type: string;
61
- nullable: boolean;
62
- };
63
59
  }
64
60
  interface IException {
65
61
  type: string;
@@ -1,6 +1,5 @@
1
1
  import ts from "typescript";
2
2
  import { IController } from "./IController";
3
- import { ITypeTuple } from "./ITypeTuple";
4
3
  export interface IRoute {
5
4
  name: string;
6
5
  method: string;
@@ -14,6 +13,7 @@ export interface IRoute {
14
13
  location: string;
15
14
  symbol: string;
16
15
  description?: string;
16
+ operationId?: string;
17
17
  tags: ts.JSDocTagInfo[];
18
18
  setHeaders: Array<{
19
19
  type: "setter";
@@ -29,9 +29,12 @@ export interface IRoute {
29
29
  export declare namespace IRoute {
30
30
  type IParameter = IController.IParameter & {
31
31
  optional: boolean;
32
- type: ITypeTuple;
32
+ type: ts.Type;
33
+ typeName: string;
33
34
  };
34
- interface IOutput extends ITypeTuple {
35
+ interface IOutput {
36
+ type: ts.Type;
37
+ typeName: string;
35
38
  description?: string;
36
39
  contentType: "application/json" | "text/plain";
37
40
  }
@@ -0,0 +1,6 @@
1
+ import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
2
+ import { IRoute } from "./IRoute";
3
+ export interface ISwaggerError extends MetadataFactory.IError {
4
+ route: IRoute;
5
+ from: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ISwaggerError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISwaggerError.js","sourceRoot":"","sources":["../../src/structures/ISwaggerError.ts"],"names":[],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import { IJsonSchema } from "typia";
2
- import { IJsDocTagInfo } from "typia/lib/metadata/IJsDocTagInfo";
2
+ import { IJsDocTagInfo } from "typia/lib/schemas/metadata/IJsDocTagInfo";
3
3
  export interface ISwaggerRoute {
4
4
  deprecated?: boolean;
5
5
  security?: Record<string, string[]>[];
6
+ operationId?: string;
6
7
  tags: string[];
7
8
  parameters: ISwaggerRoute.IParameter[];
8
9
  requestBody?: ISwaggerRoute.IRequestBody;
@@ -0,0 +1,6 @@
1
+ import { IJsonSchema } from "typia";
2
+ import { Metadata } from "typia/lib/schemas/metadata/Metadata";
3
+ export interface ISwaggerSchemaTuple {
4
+ metadata: Metadata;
5
+ schema: IJsonSchema;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ISwaggerSchemaTuple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISwaggerSchemaTuple.js","sourceRoot":"","sources":["../../src/structures/ISwaggerSchemaTuple.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import ts from "typescript";
2
2
  export interface ITypeTuple {
3
3
  type: ts.Type;
4
- name: string;
4
+ typeName: string;
5
5
  }
@@ -1,6 +1,5 @@
1
1
  export declare class ImportDictionary {
2
- private readonly externals_;
3
- private readonly internals_;
2
+ private readonly components_;
4
3
  empty(): boolean;
5
4
  external(props: ImportDictionary.IExternalProps): string;
6
5
  internal(props: ImportDictionary.IInternalProps): string;