@nestia/sdk 3.10.0 → 3.11.0-dev.20240813

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 (279) hide show
  1. package/lib/NestiaSdkApplication.d.ts +1 -3
  2. package/lib/NestiaSdkApplication.js +138 -136
  3. package/lib/NestiaSdkApplication.js.map +1 -1
  4. package/lib/analyses/ConfigAnalyzer.d.ts +2 -2
  5. package/lib/analyses/ConfigAnalyzer.js +39 -80
  6. package/lib/analyses/ConfigAnalyzer.js.map +1 -1
  7. package/lib/analyses/ExceptionAnalyzer.d.ts +0 -16
  8. package/lib/analyses/ExceptionAnalyzer.js +142 -105
  9. package/lib/analyses/ExceptionAnalyzer.js.map +1 -1
  10. package/lib/analyses/GenericAnalyzer.d.ts +1 -2
  11. package/lib/analyses/GenericAnalyzer.js.map +1 -1
  12. package/lib/analyses/ImportAnalyzer.d.ts +6 -11
  13. package/lib/analyses/ImportAnalyzer.js +70 -42
  14. package/lib/analyses/ImportAnalyzer.js.map +1 -1
  15. package/lib/analyses/ReflectControllerAnalyzer.d.ts +7 -1
  16. package/lib/analyses/ReflectControllerAnalyzer.js +28 -99
  17. package/lib/analyses/ReflectControllerAnalyzer.js.map +1 -1
  18. package/lib/analyses/ReflectHttpOperationAnalyzer.d.ts +6 -2
  19. package/lib/analyses/ReflectHttpOperationAnalyzer.js +72 -152
  20. package/lib/analyses/ReflectHttpOperationAnalyzer.js.map +1 -1
  21. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.d.ts +15 -0
  22. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js +215 -0
  23. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js.map +1 -0
  24. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.d.ts +15 -0
  25. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js +81 -0
  26. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js.map +1 -0
  27. package/lib/analyses/ReflectMetadataAnalyzer.d.ts +1 -3
  28. package/lib/analyses/ReflectMetadataAnalyzer.js +0 -4
  29. package/lib/analyses/ReflectMetadataAnalyzer.js.map +1 -1
  30. package/lib/analyses/ReflectWebSocketOperationAnalyzer.d.ts +6 -2
  31. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js +72 -48
  32. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js.map +1 -1
  33. package/lib/analyses/TypedHttpRouteAnalyzer.d.ts +15 -0
  34. package/lib/analyses/TypedHttpRouteAnalyzer.js +111 -0
  35. package/lib/analyses/TypedHttpRouteAnalyzer.js.map +1 -0
  36. package/lib/analyses/TypedWebSocketRouteAnalyzer.d.ts +10 -0
  37. package/lib/analyses/TypedWebSocketRouteAnalyzer.js +9 -0
  38. package/lib/analyses/TypedWebSocketRouteAnalyzer.js.map +1 -0
  39. package/lib/decorators/OperationMetadata.d.ts +2 -0
  40. package/lib/decorators/OperationMetadata.js +10 -0
  41. package/lib/decorators/OperationMetadata.js.map +1 -0
  42. package/lib/executable/internal/NestiaConfigLoader.d.ts +1 -1
  43. package/lib/executable/internal/NestiaConfigLoader.js +34 -3
  44. package/lib/executable/internal/NestiaConfigLoader.js.map +1 -1
  45. package/lib/executable/internal/NestiaSdkCommand.js +1 -1
  46. package/lib/executable/internal/NestiaSdkCommand.js.map +1 -1
  47. package/lib/generates/CloneGenerator.d.ts +0 -5
  48. package/lib/generates/CloneGenerator.js +60 -60
  49. package/lib/generates/CloneGenerator.js.map +1 -1
  50. package/lib/generates/E2eGenerator.d.ts +2 -3
  51. package/lib/generates/E2eGenerator.js +9 -8
  52. package/lib/generates/E2eGenerator.js.map +1 -1
  53. package/lib/generates/OpenAiGenerator.d.ts +2 -4
  54. package/lib/generates/OpenAiGenerator.js +13 -3
  55. package/lib/generates/OpenAiGenerator.js.map +1 -1
  56. package/lib/generates/SdkGenerator.d.ts +4 -4
  57. package/lib/generates/SdkGenerator.js +63 -73
  58. package/lib/generates/SdkGenerator.js.map +1 -1
  59. package/lib/generates/SwaggerGenerator.d.ts +6 -18
  60. package/lib/generates/SwaggerGenerator.js +60 -235
  61. package/lib/generates/SwaggerGenerator.js.map +1 -1
  62. package/lib/generates/internal/E2eFileProgrammer.js +5 -9
  63. package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
  64. package/lib/generates/internal/SdkAliasCollection.d.ts +6 -4
  65. package/lib/generates/internal/SdkAliasCollection.js +33 -31
  66. package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
  67. package/lib/generates/internal/SdkDistributionComposer.d.ts +4 -1
  68. package/lib/generates/internal/SdkDistributionComposer.js +6 -6
  69. package/lib/generates/internal/SdkDistributionComposer.js.map +1 -1
  70. package/lib/generates/internal/SdkFileProgrammer.d.ts +2 -4
  71. package/lib/generates/internal/SdkFileProgrammer.js +6 -6
  72. package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
  73. package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +0 -12
  74. package/lib/generates/internal/SdkHttpCloneProgrammer.js +142 -97
  75. package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
  76. package/lib/generates/internal/SdkHttpFunctionProgrammer.d.ts +4 -3
  77. package/lib/generates/internal/SdkHttpFunctionProgrammer.js +37 -59
  78. package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
  79. package/lib/generates/internal/SdkHttpNamespaceProgrammer.d.ts +4 -3
  80. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +31 -48
  81. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
  82. package/lib/generates/internal/SdkHttpRouteProgrammer.js +7 -3
  83. package/lib/generates/internal/SdkHttpRouteProgrammer.js.map +1 -1
  84. package/lib/generates/internal/SdkHttpSimulationProgrammer.d.ts +4 -3
  85. package/lib/generates/internal/SdkHttpSimulationProgrammer.js +7 -13
  86. package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
  87. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.d.ts +1 -2
  88. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +11 -16
  89. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
  90. package/lib/generates/internal/SdkWebSocketRouteProgrammer.d.ts +1 -2
  91. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +7 -10
  92. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
  93. package/lib/generates/internal/SwaggerDescriptionComposer.d.ts +23 -0
  94. package/lib/generates/internal/SwaggerDescriptionComposer.js +44 -0
  95. package/lib/generates/internal/SwaggerDescriptionComposer.js.map +1 -0
  96. package/lib/generates/internal/SwaggerOperationComposer.d.ts +12 -0
  97. package/lib/generates/internal/SwaggerOperationComposer.js +68 -0
  98. package/lib/generates/internal/SwaggerOperationComposer.js.map +1 -0
  99. package/lib/generates/internal/SwaggerOperationParameterComposer.d.ts +18 -0
  100. package/lib/generates/internal/SwaggerOperationParameterComposer.js +99 -0
  101. package/lib/generates/internal/SwaggerOperationParameterComposer.js.map +1 -0
  102. package/lib/generates/internal/SwaggerOperationResponseComposer.d.ts +9 -0
  103. package/lib/generates/internal/SwaggerOperationResponseComposer.js +91 -0
  104. package/lib/generates/internal/SwaggerOperationResponseComposer.js.map +1 -0
  105. package/lib/structures/INestiaProject.d.ts +5 -5
  106. package/lib/structures/INestiaSdkInput.d.ts +20 -0
  107. package/lib/structures/{ISwaggerError.js → INestiaSdkInput.js} +1 -1
  108. package/lib/structures/INestiaSdkInput.js.map +1 -0
  109. package/lib/structures/IReflectApplication.d.ts +6 -0
  110. package/lib/structures/IReflectApplication.js +3 -0
  111. package/lib/structures/IReflectApplication.js.map +1 -0
  112. package/lib/structures/IReflectController.d.ts +3 -5
  113. package/lib/structures/IReflectHttpOperation.d.ts +13 -65
  114. package/lib/structures/IReflectHttpOperationException.d.ts +14 -0
  115. package/lib/structures/IReflectHttpOperationException.js +3 -0
  116. package/lib/structures/IReflectHttpOperationException.js.map +1 -0
  117. package/lib/structures/IReflectHttpOperationParameter.d.ts +35 -0
  118. package/lib/structures/IReflectHttpOperationParameter.js +3 -0
  119. package/lib/structures/IReflectHttpOperationParameter.js.map +1 -0
  120. package/lib/structures/IReflectHttpOperationSuccess.d.ts +15 -0
  121. package/lib/structures/IReflectHttpOperationSuccess.js +3 -0
  122. package/lib/structures/IReflectHttpOperationSuccess.js.map +1 -0
  123. package/lib/structures/IReflectOperationError.d.ts +16 -0
  124. package/lib/structures/IReflectOperationError.js +23 -0
  125. package/lib/structures/IReflectOperationError.js.map +1 -0
  126. package/lib/structures/IReflectType.d.ts +4 -0
  127. package/lib/structures/{IErrorReport.js → IReflectType.js} +1 -1
  128. package/lib/structures/IReflectType.js.map +1 -0
  129. package/lib/structures/IReflectTypeImport.d.ts +4 -0
  130. package/lib/structures/{ISwaggerLazySchema.js → IReflectTypeImport.js} +1 -1
  131. package/lib/structures/IReflectTypeImport.js.map +1 -0
  132. package/lib/structures/IReflectWebSocketOperation.d.ts +8 -9
  133. package/lib/structures/IReflectWebSocketOperationParameter.d.ts +23 -0
  134. package/lib/structures/IReflectWebSocketOperationParameter.js +3 -0
  135. package/lib/structures/IReflectWebSocketOperationParameter.js.map +1 -0
  136. package/lib/structures/ITypedApplication.d.ts +7 -0
  137. package/lib/structures/{INormalizedInput.js → ITypedApplication.js} +1 -1
  138. package/lib/structures/ITypedApplication.js.map +1 -0
  139. package/lib/structures/ITypedHttpRoute.d.ts +14 -42
  140. package/lib/structures/ITypedHttpRouteException.d.ts +10 -0
  141. package/lib/structures/ITypedHttpRouteException.js +3 -0
  142. package/lib/structures/ITypedHttpRouteException.js.map +1 -0
  143. package/lib/structures/ITypedHttpRouteParameter.d.ts +31 -0
  144. package/lib/structures/ITypedHttpRouteParameter.js +3 -0
  145. package/lib/structures/ITypedHttpRouteParameter.js.map +1 -0
  146. package/lib/structures/ITypedHttpRouteSuccess.d.ts +19 -0
  147. package/lib/structures/{ISwaggerLazyProperty.js → ITypedHttpRouteSuccess.js} +1 -1
  148. package/lib/structures/ITypedHttpRouteSuccess.js.map +1 -0
  149. package/lib/structures/ITypedWebSocketRoute.d.ts +8 -44
  150. package/lib/structures/ITypedWebSocketRouteParameter.d.ts +2 -0
  151. package/lib/structures/ITypedWebSocketRouteParameter.js +3 -0
  152. package/lib/structures/ITypedWebSocketRouteParameter.js.map +1 -0
  153. package/lib/transform.d.ts +3 -0
  154. package/lib/transform.js +8 -0
  155. package/lib/transform.js.map +1 -0
  156. package/lib/transformers/IOperationMetadata.d.ts +36 -0
  157. package/lib/transformers/IOperationMetadata.js +3 -0
  158. package/lib/transformers/IOperationMetadata.js.map +1 -0
  159. package/lib/transformers/ISdkTransformerContext.d.ts +7 -0
  160. package/lib/transformers/ISdkTransformerContext.js +3 -0
  161. package/lib/transformers/ISdkTransformerContext.js.map +1 -0
  162. package/lib/transformers/SdkMetadataProgrammer.d.ts +11 -0
  163. package/lib/transformers/SdkMetadataProgrammer.js +159 -0
  164. package/lib/transformers/SdkMetadataProgrammer.js.map +1 -0
  165. package/lib/transformers/SdkTransformer.d.ts +4 -0
  166. package/lib/transformers/SdkTransformer.js +88 -0
  167. package/lib/transformers/SdkTransformer.js.map +1 -0
  168. package/lib/transformers/TextPlainValidator.d.ts +4 -0
  169. package/lib/transformers/TextPlainValidator.js +19 -0
  170. package/lib/transformers/TextPlainValidator.js.map +1 -0
  171. package/lib/utils/StringUtil.d.ts +1 -0
  172. package/lib/utils/StringUtil.js +1 -0
  173. package/lib/utils/StringUtil.js.map +1 -1
  174. package/package.json +8 -8
  175. package/src/NestiaSdkApplication.ts +173 -160
  176. package/src/analyses/ConfigAnalyzer.ts +50 -98
  177. package/src/analyses/ExceptionAnalyzer.ts +142 -142
  178. package/src/analyses/GenericAnalyzer.ts +3 -5
  179. package/src/analyses/ImportAnalyzer.ts +130 -115
  180. package/src/analyses/ReflectControllerAnalyzer.ts +63 -115
  181. package/src/analyses/ReflectHttpOperationAnalyzer.ts +142 -278
  182. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +319 -0
  183. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +117 -0
  184. package/src/analyses/ReflectMetadataAnalyzer.ts +1 -18
  185. package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +143 -78
  186. package/src/analyses/TypedHttpRouteAnalyzer.ts +178 -0
  187. package/src/analyses/TypedWebSocketRouteAnalyzer.ts +18 -0
  188. package/src/decorators/OperationMetadata.ts +15 -0
  189. package/src/executable/internal/NestiaConfigLoader.ts +18 -3
  190. package/src/executable/internal/NestiaSdkCommand.ts +1 -4
  191. package/src/generates/CloneGenerator.ts +60 -59
  192. package/src/generates/E2eGenerator.ts +20 -21
  193. package/src/generates/OpenAiGenerator.ts +44 -45
  194. package/src/generates/SdkGenerator.ts +97 -125
  195. package/src/generates/SwaggerGenerator.ts +114 -416
  196. package/src/generates/internal/E2eFileProgrammer.ts +5 -14
  197. package/src/generates/internal/SdkAliasCollection.ts +33 -41
  198. package/src/generates/internal/SdkDistributionComposer.ts +9 -6
  199. package/src/generates/internal/SdkFileProgrammer.ts +11 -14
  200. package/src/generates/internal/SdkHttpCloneProgrammer.ts +142 -142
  201. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +20 -47
  202. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +245 -275
  203. package/src/generates/internal/SdkHttpRouteProgrammer.ts +7 -7
  204. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +11 -23
  205. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +197 -233
  206. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +5 -15
  207. package/src/generates/internal/{SwaggerDescriptionGenerator.ts → SwaggerDescriptionComposer.ts} +25 -5
  208. package/src/generates/internal/SwaggerOperationComposer.ts +90 -0
  209. package/src/generates/internal/SwaggerOperationParameterComposer.ts +173 -0
  210. package/src/generates/internal/SwaggerOperationResponseComposer.ts +110 -0
  211. package/src/structures/INestiaProject.ts +5 -5
  212. package/src/structures/INestiaSdkInput.ts +25 -0
  213. package/src/structures/IReflectApplication.ts +8 -0
  214. package/src/structures/IReflectController.ts +3 -5
  215. package/src/structures/IReflectHttpOperation.ts +14 -76
  216. package/src/structures/IReflectHttpOperationException.ts +19 -0
  217. package/src/structures/IReflectHttpOperationParameter.ts +81 -0
  218. package/src/structures/IReflectHttpOperationSuccess.ts +22 -0
  219. package/src/structures/IReflectOperationError.ts +26 -0
  220. package/src/structures/IReflectType.ts +4 -0
  221. package/src/structures/IReflectTypeImport.ts +4 -0
  222. package/src/structures/IReflectWebSocketOperation.ts +9 -9
  223. package/src/structures/IReflectWebSocketOperationParameter.ts +38 -0
  224. package/src/structures/ITypedApplication.ts +8 -0
  225. package/src/structures/ITypedHttpRoute.ts +15 -45
  226. package/src/structures/ITypedHttpRouteException.ts +15 -0
  227. package/src/structures/ITypedHttpRouteParameter.ts +41 -0
  228. package/src/structures/ITypedHttpRouteSuccess.ts +22 -0
  229. package/src/structures/ITypedWebSocketRoute.ts +8 -56
  230. package/src/structures/ITypedWebSocketRouteParameter.ts +3 -0
  231. package/src/transform.ts +9 -0
  232. package/src/transformers/IOperationMetadata.ts +38 -0
  233. package/src/transformers/ISdkTransformerContext.ts +8 -0
  234. package/src/transformers/SdkMetadataProgrammer.ts +227 -0
  235. package/src/transformers/SdkTransformer.ts +168 -0
  236. package/src/transformers/TextPlainValidator.ts +17 -0
  237. package/src/utils/StringUtil.ts +3 -0
  238. package/lib/analyses/TypedControllerAnalyzer.d.ts +0 -8
  239. package/lib/analyses/TypedControllerAnalyzer.js +0 -77
  240. package/lib/analyses/TypedControllerAnalyzer.js.map +0 -1
  241. package/lib/analyses/TypedHttpOperationAnalyzer.d.ts +0 -15
  242. package/lib/analyses/TypedHttpOperationAnalyzer.js +0 -263
  243. package/lib/analyses/TypedHttpOperationAnalyzer.js.map +0 -1
  244. package/lib/analyses/TypedWebSocketOperationAnalyzer.d.ts +0 -15
  245. package/lib/analyses/TypedWebSocketOperationAnalyzer.js +0 -226
  246. package/lib/analyses/TypedWebSocketOperationAnalyzer.js.map +0 -1
  247. package/lib/generates/internal/SwaggerDescriptionGenerator.d.ts +0 -14
  248. package/lib/generates/internal/SwaggerDescriptionGenerator.js +0 -33
  249. package/lib/generates/internal/SwaggerDescriptionGenerator.js.map +0 -1
  250. package/lib/generates/internal/SwaggerSchemaGenerator.d.ts +0 -21
  251. package/lib/generates/internal/SwaggerSchemaGenerator.js +0 -289
  252. package/lib/generates/internal/SwaggerSchemaGenerator.js.map +0 -1
  253. package/lib/generates/internal/SwaggerSchemaValidator.d.ts +0 -7
  254. package/lib/generates/internal/SwaggerSchemaValidator.js +0 -191
  255. package/lib/generates/internal/SwaggerSchemaValidator.js.map +0 -1
  256. package/lib/structures/IErrorReport.d.ts +0 -6
  257. package/lib/structures/IErrorReport.js.map +0 -1
  258. package/lib/structures/INormalizedInput.d.ts +0 -19
  259. package/lib/structures/INormalizedInput.js.map +0 -1
  260. package/lib/structures/ISwaggerError.d.ts +0 -6
  261. package/lib/structures/ISwaggerError.js.map +0 -1
  262. package/lib/structures/ISwaggerLazyProperty.d.ts +0 -6
  263. package/lib/structures/ISwaggerLazyProperty.js.map +0 -1
  264. package/lib/structures/ISwaggerLazySchema.d.ts +0 -6
  265. package/lib/structures/ISwaggerLazySchema.js.map +0 -1
  266. package/lib/structures/ITypeTuple.d.ts +0 -5
  267. package/lib/structures/ITypeTuple.js +0 -3
  268. package/lib/structures/ITypeTuple.js.map +0 -1
  269. package/src/analyses/TypedControllerAnalyzer.ts +0 -92
  270. package/src/analyses/TypedHttpOperationAnalyzer.ts +0 -365
  271. package/src/analyses/TypedWebSocketOperationAnalyzer.ts +0 -375
  272. package/src/generates/internal/SwaggerSchemaGenerator.ts +0 -473
  273. package/src/generates/internal/SwaggerSchemaValidator.ts +0 -206
  274. package/src/structures/IErrorReport.ts +0 -6
  275. package/src/structures/INormalizedInput.ts +0 -20
  276. package/src/structures/ISwaggerError.ts +0 -8
  277. package/src/structures/ISwaggerLazyProperty.ts +0 -7
  278. package/src/structures/ISwaggerLazySchema.ts +0 -7
  279. package/src/structures/ITypeTuple.ts +0 -6
@@ -15,57 +15,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.SdkGenerator = 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"));
19
- const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
20
- const CloneGenerator_1 = require("./CloneGenerator");
21
- const SwaggerGenerator_1 = require("./SwaggerGenerator");
18
+ // import { CloneGenerator } from "./CloneGenerator";
22
19
  const SdkDistributionComposer_1 = require("./internal/SdkDistributionComposer");
23
20
  const SdkFileProgrammer_1 = require("./internal/SdkFileProgrammer");
24
21
  var SdkGenerator;
25
22
  (function (SdkGenerator) {
26
- SdkGenerator.generate = (project) => (routes) => __awaiter(this, void 0, void 0, function* () {
27
- var _a;
28
- console.log("Generating SDK Library");
29
- // VALIDATE THROUGH SWAGGER GENERATOR
30
- const errors = [];
31
- const validate = SwaggerGenerator_1.SwaggerGenerator.generate_route({
32
- config: { output: "" },
33
- checker: project.checker,
34
- collection: new MetadataCollection_1.MetadataCollection({
35
- replace: MetadataCollection_1.MetadataCollection.replace,
36
- }),
37
- lazyProperties: [],
38
- lazySchemas: [],
39
- errors,
40
- swagger: yield SwaggerGenerator_1.SwaggerGenerator.initialize((_a = project.config.swagger) !== null && _a !== void 0 ? _a : { output: "" }),
41
- });
42
- for (const r of routes)
43
- if (r.protocol === "http") {
44
- validate(r);
45
- if (project.config.clone !== true)
46
- validateImplicity(project)(r);
47
- }
48
- if (errors.length) {
49
- for (const e of errors)
50
- console.error(`${path_2.default.relative(process.cwd(), e.route.location)}:${e.route.controller.name}.${e.route.name}:${e.from} - error TS(@nestia/sdk): invalid type detected.\n\n` +
51
- e.messages.map((m) => ` - ${m}`).join("\n"), "\n\n");
52
- throw new TypeError("Invalid type detected");
53
- }
54
- else if (project.errors.length) {
55
- for (const e of project.errors)
56
- console.error(`${path_2.default.relative(process.cwd(), e.file)}:${e.controller}.${e.function}: error TS(@nestia/sdk): ${e.message}`);
57
- throw new TypeError("Invalid type detected");
58
- }
23
+ SdkGenerator.generate = (app) => __awaiter(this, void 0, void 0, function* () {
24
+ if (app.project.config.output === undefined)
25
+ throw new Error("Output directory is not defined.");
59
26
  // PREPARE NEW DIRECTORIES
27
+ console.log("Generating SDK Library");
60
28
  try {
61
- yield fs_1.default.promises.mkdir(project.config.output);
29
+ yield fs_1.default.promises.mkdir(app.project.config.output);
62
30
  }
63
- catch (_b) { }
31
+ catch (_a) { }
64
32
  // BUNDLING
65
33
  const bundle = yield fs_1.default.promises.readdir(SdkGenerator.BUNDLE_PATH);
66
34
  for (const file of bundle) {
67
35
  const current = `${SdkGenerator.BUNDLE_PATH}/${file}`;
68
- const target = `${project.config.output}/${file}`;
36
+ const target = `${app.project.config.output}/${file}`;
69
37
  const stats = yield fs_1.default.promises.stat(current);
70
38
  if (stats.isFile() === true) {
71
39
  const content = yield fs_1.default.promises.readFile(current, "utf8");
@@ -81,47 +49,69 @@ var SdkGenerator;
81
49
  }
82
50
  }
83
51
  }
84
- // STRUCTURES
85
- if (project.config.clone)
86
- yield CloneGenerator_1.CloneGenerator.write(project)(routes.filter((r) => r.protocol === "http"));
52
+ // // STRUCTURES
53
+ // if (app.project.config.clone === true) await CloneGenerator.write(app);
87
54
  // FUNCTIONAL
88
- yield SdkFileProgrammer_1.SdkFileProgrammer.generate(project)(routes);
55
+ yield SdkFileProgrammer_1.SdkFileProgrammer.generate(app);
89
56
  // DISTRIBUTION
90
- if (project.config.distribute !== undefined)
91
- yield SdkDistributionComposer_1.SdkDistributionComposer.compose(project.config, routes.some((r) => r.protocol === "websocket"));
57
+ if (app.project.config.distribute !== undefined)
58
+ yield SdkDistributionComposer_1.SdkDistributionComposer.compose({
59
+ config: app.project.config,
60
+ websocket: app.routes.some((r) => r.protocol === "websocket"),
61
+ });
92
62
  });
93
- const validateImplicity = (project) => (route) => {
94
- for (const p of route.parameters) {
95
- if (isImplicitType(p.typeName))
96
- project.errors.push({
97
- file: route.location,
98
- controller: route.controller.name,
99
- function: route.name,
100
- message: `implicit (unnamed) parameter type from "${route.name}@${p.name}".`,
63
+ SdkGenerator.validate = (app) => {
64
+ const errors = [];
65
+ if (app.project.config.clone === true)
66
+ return errors;
67
+ for (const route of app.routes)
68
+ if (route.protocol === "http")
69
+ validateImplicity({
70
+ config: app.project.config,
71
+ errors,
72
+ route,
73
+ });
74
+ return errors;
75
+ };
76
+ const validateImplicity = (props) => {
77
+ for (const p of props.route.parameters) {
78
+ if (isImplicitType(p.type))
79
+ props.errors.push({
80
+ file: props.route.controller.file,
81
+ class: props.route.controller.class.name,
82
+ function: props.route.name,
83
+ from: `parameter ${JSON.stringify(p.name)}`,
84
+ contents: [`implicit (unnamed) parameter type.`],
101
85
  });
102
86
  }
103
- if (project.config.propagate !== true)
104
- for (const [key, value] of Object.entries(route.exceptions))
105
- if (isImplicitType(value.typeName))
106
- project.errors.push({
107
- file: route.location,
108
- controller: route.controller.name,
109
- function: route.name,
110
- message: `implicit (unnamed) exception type of ${key} status from "${route.name}".`,
87
+ if (props.config.propagate === true)
88
+ for (const [key, value] of Object.entries(props.route.exceptions))
89
+ if (isImplicitType(value.type))
90
+ props.errors.push({
91
+ file: props.route.controller.file,
92
+ class: props.route.controller.class.name,
93
+ function: props.route.name,
94
+ from: `exception ${JSON.stringify(key)}`,
95
+ contents: [`implicit (unnamed) exception type.`],
111
96
  });
112
- if (isImplicitType(route.output.typeName))
113
- project.errors.push({
114
- file: route.location,
115
- controller: route.controller.name,
116
- function: route.name,
117
- message: `implicit (unnamed) return type from "${route.name}".`,
97
+ if (isImplicitType(props.route.success.type))
98
+ props.errors.push({
99
+ file: props.route.controller.file,
100
+ class: props.route.controller.class.name,
101
+ function: props.route.name,
102
+ from: "success",
103
+ contents: [`implicit (unnamed) return type.`],
118
104
  });
119
105
  };
120
- const isImplicitType = (typeName) => typeName === "__type" ||
121
- typeName === "__object" ||
122
- typeName.startsWith("__type.") ||
123
- typeName.startsWith("__object.") ||
124
- typeName.includes("readonly [");
106
+ const isImplicitType = (type) => {
107
+ var _a;
108
+ return type.name === "__type" ||
109
+ type.name === "__object" ||
110
+ type.name.startsWith("__type.") ||
111
+ type.name.startsWith("__object.") ||
112
+ type.name.includes("readonly [") ||
113
+ (!!((_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.length) && type.typeArguments.some(isImplicitType));
114
+ };
125
115
  SdkGenerator.BUNDLE_PATH = path_1.default.join(__dirname, "..", "..", "assets", "bundle", "api");
126
116
  })(SdkGenerator || (exports.SdkGenerator = SdkGenerator = {}));
127
117
  const BUNDLE_CHANGES = {
@@ -1 +1 @@
1
- {"version":3,"file":"SdkGenerator.js","sourceRoot":"","sources":["../../src/generates/SdkGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SdkGenerator.js","sourceRoot":"","sources":["../../src/generates/SdkGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,13 @@
1
1
  import { OpenApi } from "@samchon/openapi";
2
- import ts from "typescript";
3
- import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
4
2
  import { INestiaConfig } from "../INestiaConfig";
5
- import { INestiaProject } from "../structures/INestiaProject";
6
- import { ISwaggerError } from "../structures/ISwaggerError";
7
- import { ISwaggerLazyProperty } from "../structures/ISwaggerLazyProperty";
8
- import { ISwaggerLazySchema } from "../structures/ISwaggerLazySchema";
3
+ import { ITypedApplication } from "../structures/ITypedApplication";
9
4
  import { ITypedHttpRoute } from "../structures/ITypedHttpRoute";
10
- import { ITypedWebSocketRoute } from "../structures/ITypedWebSocketRoute";
11
5
  export declare namespace SwaggerGenerator {
12
- interface IProps {
6
+ const generate: (app: ITypedApplication) => Promise<void>;
7
+ const compose: (props: {
13
8
  config: INestiaConfig.ISwaggerConfig;
14
- checker: ts.TypeChecker;
15
- collection: MetadataCollection;
16
- lazySchemas: Array<ISwaggerLazySchema>;
17
- lazyProperties: Array<ISwaggerLazyProperty>;
18
- errors: ISwaggerError[];
19
- swagger: OpenApi.IDocument;
20
- }
21
- const generate: (project: INestiaProject) => (routeList: Array<ITypedHttpRoute | ITypedWebSocketRoute>) => Promise<void>;
22
- const compose: (project: INestiaProject) => (routeList: Array<ITypedHttpRoute | ITypedWebSocketRoute>) => Promise<OpenApi.IDocument>;
9
+ routes: ITypedHttpRoute[];
10
+ document: OpenApi.IDocument;
11
+ }) => OpenApi.IDocument;
23
12
  const initialize: (config: INestiaConfig.ISwaggerConfig) => Promise<OpenApi.IDocument>;
24
- const generate_route: (props: IProps) => (route: ITypedHttpRoute) => OpenApi.IOperation;
25
13
  }
@@ -18,21 +18,17 @@ const fs_1 = __importDefault(require("fs"));
18
18
  const path_1 = __importDefault(require("path"));
19
19
  const tstl_1 = require("tstl");
20
20
  const typia_1 = __importDefault(require("typia"));
21
- const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
22
21
  const JsonApplicationProgrammer_1 = require("typia/lib/programmers/json/JsonApplicationProgrammer");
23
22
  const FileRetriever_1 = require("../utils/FileRetriever");
24
- const MapUtil_1 = require("../utils/MapUtil");
25
- const SwaggerDescriptionGenerator_1 = require("./internal/SwaggerDescriptionGenerator");
26
- const SwaggerSchemaGenerator_1 = require("./internal/SwaggerSchemaGenerator");
23
+ const SwaggerOperationComposer_1 = require("./internal/SwaggerOperationComposer");
27
24
  var SwaggerGenerator;
28
25
  (function (SwaggerGenerator) {
29
- SwaggerGenerator.generate = (project) => (routeList) => __awaiter(this, void 0, void 0, function* () {
30
- console.log("Generating Swagger Document");
31
- // VALIDATE SECURITY
32
- const config = project.config.swagger;
33
- const httpRoutes = routeList.filter((route) => route.protocol === "http");
34
- validate_security(config)(httpRoutes);
35
- // PREPARE ASSETS
26
+ SwaggerGenerator.generate = (app) => __awaiter(this, void 0, void 0, function* () {
27
+ // GET CONFIGURATION
28
+ if (app.project.config.swagger === undefined)
29
+ throw new Error("Swagger configuration is not defined.");
30
+ const config = app.project.config.swagger;
31
+ // TARGET LOCATION
36
32
  const parsed = path_1.default.parse(config.output);
37
33
  const directory = path_1.default.dirname(parsed.dir);
38
34
  if (fs_1.default.existsSync(directory) === false)
@@ -42,166 +38,49 @@ var SwaggerGenerator;
42
38
  catch (_a) { }
43
39
  if (fs_1.default.existsSync(directory) === false)
44
40
  throw new Error(`Error on NestiaApplication.swagger(): failed to create output directory: ${directory}`);
45
- // COMPOSE SWAGGER DOCUMENT
46
41
  const location = !!parsed.ext
47
42
  ? path_1.default.resolve(config.output)
48
43
  : path_1.default.join(path_1.default.resolve(config.output), "swagger.json");
49
- const swagger = yield SwaggerGenerator.compose(project)(routeList);
50
- // DO GENERATE
51
- const document = config.openapi === "2.0"
52
- ? openapi_1.OpenApi.downgrade(swagger, config.openapi)
44
+ // COMPOSE SWAGGER DOCUMENT
45
+ const document = SwaggerGenerator.compose({
46
+ config,
47
+ routes: app.routes.filter((route) => route.protocol === "http"),
48
+ document: yield SwaggerGenerator.initialize(config),
49
+ });
50
+ const specified = config.openapi === "2.0"
51
+ ? openapi_1.OpenApi.downgrade(document, config.openapi)
53
52
  : config.openapi === "3.0"
54
- ? openapi_1.OpenApi.downgrade(swagger, config.openapi)
55
- : swagger;
53
+ ? openapi_1.OpenApi.downgrade(document, config.openapi)
54
+ : document;
56
55
  yield fs_1.default.promises.writeFile(location, !config.beautify
57
- ? JSON.stringify(document)
58
- : JSON.stringify(document, null, typeof config.beautify === "number" ? config.beautify : 2), "utf8");
59
- });
60
- SwaggerGenerator.compose = (project) => (routeList) => __awaiter(this, void 0, void 0, function* () {
61
- var _a, _b, _c, _d, _e, _f, _g, _h;
62
- // VALIDATE SECURITY
63
- const config = project.config.swagger;
64
- const httpRoutes = routeList.filter((route) => route.protocol === "http");
65
- validate_security(config)(httpRoutes);
66
- const collection = new MetadataCollection_1.MetadataCollection({
67
- replace: MetadataCollection_1.MetadataCollection.replace,
68
- });
69
- // CONSTRUCT SWAGGER DOCUMENTS
70
- const errors = [];
71
- const lazySchemas = [];
72
- const lazyProperties = [];
73
- const swagger = yield SwaggerGenerator.initialize(config);
74
- const pathDict = new Map();
75
- for (const route of httpRoutes) {
76
- if (route.jsDocTags.find((tag) => tag.name === "internal"))
77
- continue;
78
- const path = MapUtil_1.MapUtil.take(pathDict, get_path(route.path, route.parameters), () => ({}));
79
- path[route.method.toLowerCase()] = SwaggerGenerator.generate_route({
80
- config,
81
- checker: project.checker,
82
- collection,
83
- lazySchemas,
84
- lazyProperties,
85
- errors,
86
- swagger,
87
- })(route);
88
- }
89
- swagger.paths = {};
90
- for (const [path, routes] of pathDict)
91
- swagger.paths[path] = routes;
92
- // FILL JSON-SCHEMAS
93
- const application = JsonApplicationProgrammer_1.JsonApplicationProgrammer.write("3.1")(lazySchemas.map(({ metadata }) => metadata));
94
- swagger.components = Object.assign(Object.assign({}, ((_a = swagger.components) !== null && _a !== void 0 ? _a : {})), ((_b = application.components) !== null && _b !== void 0 ? _b : {}));
95
- lazySchemas.forEach(({ schema }, index) => {
96
- Object.assign(schema, application.schemas[index]);
97
- });
98
- for (const p of lazyProperties)
99
- Object.assign(p.schema, (_f = (_e = (_d = (_c = application.components.schemas) === null || _c === void 0 ? void 0 : _c[p.object]) === null || _d === void 0 ? void 0 : _d.properties) === null || _e === void 0 ? void 0 : _e[p.property]) !== null && _f !== void 0 ? _f : {});
100
- // CONFIGURE SECURITY
101
- if (config.security)
102
- fill_security(config.security, swagger);
103
- // REPORT ERRORS
104
- if (errors.length) {
105
- for (const e of errors)
106
- console.error(`${path_1.default.relative(process.cwd(), e.route.location)}:${e.route.controller.name}.${e.route.name}:${e.from} - error TS(@nestia/sdk): invalid type detected.\n\n` +
107
- e.messages.map((m) => ` - ${m}`).join("\n"), "\n\n");
108
- throw new TypeError("Invalid type detected");
109
- }
110
- // SWAGGER CUSTOMIZER
111
- const customizer = {
112
- at: new tstl_1.Singleton(() => {
113
- var _a, _b;
114
- const functor = new Map();
115
- for (const route of httpRoutes) {
116
- const method = route.method.toLowerCase();
117
- const path = get_path(route.path, route.parameters);
118
- const operation = (_b = (_a = swagger.paths) === null || _a === void 0 ? void 0 : _a[path]) === null || _b === void 0 ? void 0 : _b[method];
119
- if (operation === undefined)
120
- continue;
121
- functor.set(route.function, {
122
- method,
123
- path,
124
- route: operation,
125
- });
126
- }
127
- return functor;
128
- }),
129
- get: new tstl_1.Singleton(() => (key) => {
130
- var _a, _b;
131
- const method = key.method.toLowerCase();
132
- const path = "/" +
133
- key.path
134
- .split("/")
135
- .filter((str) => !!str.length)
136
- .map((str) => str.startsWith(":") ? `{${str.substring(1)}}` : str)
137
- .join("/");
138
- return (_b = (_a = swagger.paths) === null || _a === void 0 ? void 0 : _a[path]) === null || _b === void 0 ? void 0 : _b[method];
139
- }),
140
- };
141
- for (const route of httpRoutes) {
142
- if (false ===
143
- Reflect.hasMetadata("nestia/SwaggerCustomizer", route.controller.prototype, route.name))
144
- continue;
145
- const path = get_path(route.path, route.parameters);
146
- const method = route.method.toLowerCase();
147
- const target = (_h = (_g = swagger.paths) === null || _g === void 0 ? void 0 : _g[path]) === null || _h === void 0 ? void 0 : _h[method];
148
- if (target === undefined)
149
- continue;
150
- const closure = Reflect.getMetadata("nestia/SwaggerCustomizer", route.controller.prototype, route.name);
151
- const array = Array.isArray(closure) ? closure : [closure];
152
- for (const fn of array)
153
- fn({
154
- route: target,
155
- method,
156
- path,
157
- swagger,
158
- at: (func) => customizer.at.get().get(func),
159
- get: (accessor) => customizer.get.get()(accessor),
160
- });
161
- }
162
- return swagger;
56
+ ? JSON.stringify(specified)
57
+ : JSON.stringify(specified, null, typeof config.beautify === "number" ? config.beautify : 2), "utf8");
163
58
  });
164
- const validate_security = (config) => (routeList) => {
165
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
166
- const securityMap = new Map();
167
- for (const [key, value] of Object.entries((_a = config.security) !== null && _a !== void 0 ? _a : {}))
168
- securityMap.set(key, {
169
- scheme: emend_security(value),
170
- scopes: value.type === "oauth2"
171
- ? new Set([
172
- ...Object.keys((_c = (_b = value.flows.authorizationCode) === null || _b === void 0 ? void 0 : _b.scopes) !== null && _c !== void 0 ? _c : {}),
173
- ...Object.keys((_e = (_d = value.flows.implicit) === null || _d === void 0 ? void 0 : _d.scopes) !== null && _e !== void 0 ? _e : {}),
174
- ...Object.keys((_g = (_f = value.flows.password) === null || _f === void 0 ? void 0 : _f.scopes) !== null && _g !== void 0 ? _g : {}),
175
- ...Object.keys((_j = (_h = value.flows.clientCredentials) === null || _h === void 0 ? void 0 : _h.scopes) !== null && _j !== void 0 ? _j : {}),
176
- ])
177
- : new Set(),
178
- });
179
- const validate = (reporter) => (key, scopes) => {
180
- const security = securityMap.get(key);
181
- if (security === undefined)
182
- return reporter(`target security scheme "${key}" does not exists.`);
183
- else if (scopes.length === 0)
184
- return;
185
- else if (security.scheme.type !== "oauth2")
186
- return reporter(`target security scheme "${key}" is not "oauth2" type, but you've configured the scopes.`);
187
- for (const s of scopes)
188
- if (security.scopes.has(s) === false)
189
- reporter(`target security scheme "${key}" does not have a specific scope "${s}".`);
190
- };
191
- const violations = [];
192
- for (const route of routeList)
193
- for (const record of route.security)
194
- for (const [key, scopes] of Object.entries(record))
195
- validate((str) => violations.push(` - ${str} (${route.controller.name}.${route.name}() at "${route.location}")`))(key, scopes);
196
- if (violations.length)
197
- throw new Error(`Error on NestiaApplication.swagger(): invalid security specification. Check your "nestia.config.ts" file's "swagger.security" property, or each controller methods.\n` +
198
- `\n` +
199
- `List of violations:\n` +
200
- violations.join("\n"));
59
+ SwaggerGenerator.compose = (props) => {
60
+ var _a;
61
+ var _b;
62
+ // GATHER METADATA
63
+ const metadatas = props.routes
64
+ .filter((r) => r.protocol === "http")
65
+ .map((r) => [
66
+ r.success.metadata,
67
+ ...r.parameters.map((p) => p.metadata),
68
+ ...Object.values(r.exceptions).map((e) => e.metadata),
69
+ ])
70
+ .flat()
71
+ .filter((m) => m.size() !== 0);
72
+ // COMPOSE JSON SCHEMAS
73
+ const json = JsonApplicationProgrammer_1.JsonApplicationProgrammer.write("3.1")(metadatas);
74
+ const dict = new WeakMap();
75
+ json.schemas.forEach((schema, i) => dict.set(metadatas[i], schema));
76
+ const schema = (metadata) => dict.get(metadata);
77
+ // COMPOSE DOCUMENT
78
+ const document = props.document;
79
+ (_a = (_b = document.components).schemas) !== null && _a !== void 0 ? _a : (_b.schemas = {});
80
+ Object.assign(document.components.schemas, json.components.schemas);
81
+ document.paths = writePaths(Object.assign(Object.assign({}, props), { schema }));
82
+ return document;
201
83
  };
202
- /* ---------------------------------------------------------
203
- INITIALIZERS
204
- --------------------------------------------------------- */
205
84
  SwaggerGenerator.initialize = (config) => __awaiter(this, void 0, void 0, function* () {
206
85
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
207
86
  const pack = new tstl_1.Singleton(() => __awaiter(this, void 0, void 0, function* () {
@@ -293,83 +172,29 @@ var SwaggerGenerator;
293
172
  paths: {},
294
173
  components: {
295
174
  schemas: {},
175
+ securitySchemes: config.security,
296
176
  },
297
177
  tags: (_t = config.tags) !== null && _t !== void 0 ? _t : [],
298
178
  "x-samchon-emended": true,
299
179
  };
300
180
  });
301
- function get_path(path, parameters) {
302
- const filtered = parameters.filter((param) => param.category === "param" && !!param.field);
303
- for (const param of filtered)
304
- path = path.replace(`:${param.field}`, `{${param.field}}`);
305
- return path;
306
- }
307
- SwaggerGenerator.generate_route = (props) => (route) => {
308
- var _a, _b, _c, _d, _e;
309
- var _f, _g;
310
- // FIND REQUEST BODY
311
- const body = route.parameters.find((param) => param.category === "body");
312
- // CONSTRUCT SUMMARY & DESCRIPTION
313
- const getJsDocTexts = (name) => route.jsDocTags
314
- .filter((tag) => tag.name === name &&
315
- tag.text &&
316
- tag.text.find((elem) => elem.kind === "text" && elem.text.length) !== undefined)
317
- .map((tag) => tag.text.find((elem) => elem.kind === "text").text);
318
- const { summary, description } = SwaggerDescriptionGenerator_1.SwaggerDescriptionGenerator.generate({
319
- description: route.description,
320
- jsDocTags: route.jsDocTags,
321
- kind: "summary",
322
- });
323
- const deprecated = route.jsDocTags.find((tag) => tag.name === "deprecated");
324
- // CONSTRUCT TAGS
325
- const tagSet = new Set([
326
- ...route.swaggerTags,
327
- ...getJsDocTexts("tag").map((tag) => tag.split(" ")[0]),
328
- ]);
329
- (_a = (_f = props.swagger).tags) !== null && _a !== void 0 ? _a : (_f.tags = []);
330
- for (const tag of tagSet)
331
- if (props.swagger.tags.find((elem) => elem.name === tag) === undefined)
332
- props.swagger.tags.push({ name: tag });
333
- for (const texts of getJsDocTexts("tag")) {
334
- const [name, ...description] = texts.split(" ");
335
- if (description.length)
336
- (_b = (_g = props.swagger.tags.find((elem) => elem.name === name)).description) !== null && _b !== void 0 ? _b : (_g.description = description.join(" "));
181
+ const writePaths = (props) => {
182
+ var _a;
183
+ const output = {};
184
+ for (const r of props.routes) {
185
+ const path = getPath(r);
186
+ (_a = output[path]) !== null && _a !== void 0 ? _a : (output[path] = {});
187
+ output[path][r.method.toLowerCase()] =
188
+ SwaggerOperationComposer_1.SwaggerOperationComposer.compose(Object.assign(Object.assign({}, props), { route: r }));
337
189
  }
338
- // FINALIZE
339
- return Object.assign({ deprecated: deprecated ? true : undefined, tags: [...tagSet], operationId: (_c = route.operationId) !== null && _c !== void 0 ? _c : (_e = (_d = props.config).operationId) === null || _e === void 0 ? void 0 : _e.call(_d, {
340
- class: route.controller.name,
341
- function: route.name,
342
- method: route.method,
343
- path: route.path,
344
- }), parameters: route.parameters
345
- .filter((param) => param.category !== "body")
346
- .map((param) => SwaggerSchemaGenerator_1.SwaggerSchemaGenerator.parameter(props)(route)(param))
347
- .flat(), requestBody: body
348
- ? SwaggerSchemaGenerator_1.SwaggerSchemaGenerator.body(props)(route)(body)
349
- : undefined, responses: SwaggerSchemaGenerator_1.SwaggerSchemaGenerator.response(props)(route), summary,
350
- description, security: route.security.length ? route.security : undefined }, (props.config.additional === true
351
- ? {
352
- "x-nestia-namespace": [
353
- ...route.path
354
- .split("/")
355
- .filter((str) => str.length && str[0] !== ":"),
356
- route.name,
357
- ].join("."),
358
- "x-nestia-jsDocTags": route.jsDocTags,
359
- "x-nestia-method": route.method,
360
- }
361
- : {}));
190
+ return output;
191
+ };
192
+ const getPath = (route) => {
193
+ let str = route.path;
194
+ const filtered = route.parameters.filter((param) => param.category === "param");
195
+ for (const param of filtered)
196
+ str = str.replace(`:${param.field}`, `{${param.field}}`);
197
+ return str;
362
198
  };
363
- function fill_security(security, swagger) {
364
- swagger.components.securitySchemes = {};
365
- for (const [key, value] of Object.entries(security))
366
- swagger.components.securitySchemes[key] = emend_security(value);
367
- }
368
- function emend_security(input) {
369
- var _a, _b;
370
- if (input.type === "apiKey")
371
- 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" });
372
- return input;
373
- }
374
199
  })(SwaggerGenerator || (exports.SwaggerGenerator = SwaggerGenerator = {}));
375
200
  //# sourceMappingURL=SwaggerGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SwaggerGenerator.js","sourceRoot":"","sources":["../../src/generates/SwaggerGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SwaggerGenerator.js","sourceRoot":"","sources":["../../src/generates/SwaggerGenerator.ts"],"names":[],"mappings":"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"}