@nestia/migrate 6.0.5 → 7.0.0-dev.20250605

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 (218) hide show
  1. package/README.md +92 -92
  2. package/lib/NestiaMigrateApplication.d.ts +23 -0
  3. package/lib/NestiaMigrateApplication.js +17522 -0
  4. package/lib/NestiaMigrateApplication.js.map +1 -0
  5. package/lib/analyzers/NestiaMigrateControllerAnalyzer.d.ts +5 -0
  6. package/lib/analyzers/{MigrateControllerAnalyzer.js → NestiaMigrateControllerAnalyzer.js} +10 -10
  7. package/lib/analyzers/NestiaMigrateControllerAnalyzer.js.map +1 -0
  8. package/lib/archivers/NestiaMigrateFileArchiver.d.ts +8 -0
  9. package/lib/archivers/NestiaMigrateFileArchiver.js +36 -0
  10. package/lib/archivers/NestiaMigrateFileArchiver.js.map +1 -0
  11. package/lib/bundles/NEST_TEMPLATE.d.ts +1 -5
  12. package/lib/bundles/NEST_TEMPLATE.js +50 -242
  13. package/lib/bundles/NEST_TEMPLATE.js.map +1 -1
  14. package/lib/bundles/SDK_TEMPLATE.d.ts +1 -5
  15. package/lib/bundles/SDK_TEMPLATE.js +23 -107
  16. package/lib/bundles/SDK_TEMPLATE.js.map +1 -1
  17. package/lib/{internal/MigrateCommander.d.ts → executable/NestiaMigrateCommander.d.ts} +1 -1
  18. package/lib/{internal/MigrateCommander.js → executable/NestiaMigrateCommander.js} +23 -21
  19. package/lib/executable/NestiaMigrateCommander.js.map +1 -0
  20. package/lib/{internal/MigrateInquirer.d.ts → executable/NestiaMigrateInquirer.d.ts} +2 -1
  21. package/lib/{internal/MigrateInquirer.js → executable/NestiaMigrateInquirer.js} +22 -9
  22. package/lib/executable/NestiaMigrateInquirer.js.map +1 -0
  23. package/lib/executable/migrate.js +2 -2
  24. package/lib/executable/migrate.js.map +1 -1
  25. package/lib/index.mjs +10042 -694
  26. package/lib/index.mjs.map +1 -1
  27. package/lib/module.d.ts +2 -5
  28. package/lib/module.js +2 -5
  29. package/lib/module.js.map +1 -1
  30. package/lib/programmers/NestiaMigrateApiFileProgrammer.d.ts +13 -0
  31. package/lib/programmers/NestiaMigrateApiFileProgrammer.js +40 -0
  32. package/lib/programmers/NestiaMigrateApiFileProgrammer.js.map +1 -0
  33. package/lib/programmers/NestiaMigrateApiFunctionProgrammer.d.ts +14 -0
  34. package/lib/programmers/NestiaMigrateApiFunctionProgrammer.js +132 -0
  35. package/lib/programmers/NestiaMigrateApiFunctionProgrammer.js.map +1 -0
  36. package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.d.ts +14 -0
  37. package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.js +237 -0
  38. package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.js.map +1 -0
  39. package/lib/programmers/NestiaMigrateApiProgrammer.d.ts +4 -0
  40. package/lib/programmers/{MigrateApiProgrammer.js → NestiaMigrateApiProgrammer.js} +31 -30
  41. package/lib/programmers/NestiaMigrateApiProgrammer.js.map +1 -0
  42. package/lib/programmers/NestiaMigrateApiSimulationProgrammer.d.ts +14 -0
  43. package/lib/programmers/{MigrateApiSimulationProgrammer.js → NestiaMigrateApiSimulationProgrammer.js} +54 -36
  44. package/lib/programmers/NestiaMigrateApiSimulationProgrammer.js.map +1 -0
  45. package/lib/programmers/NestiaMigrateApiStartProgrammer.d.ts +4 -0
  46. package/lib/programmers/{MigrateApiStartProgrammer.js → NestiaMigrateApiStartProgrammer.js} +23 -20
  47. package/lib/programmers/NestiaMigrateApiStartProgrammer.js.map +1 -0
  48. package/lib/programmers/NestiaMigrateDtoProgrammer.d.ts +15 -0
  49. package/lib/programmers/{MigrateDtoProgrammer.js → NestiaMigrateDtoProgrammer.js} +21 -12
  50. package/lib/programmers/NestiaMigrateDtoProgrammer.js.map +1 -0
  51. package/lib/programmers/NestiaMigrateE2eFileProgrammer.d.ts +14 -0
  52. package/lib/programmers/NestiaMigrateE2eFileProgrammer.js +81 -0
  53. package/lib/programmers/NestiaMigrateE2eFileProgrammer.js.map +1 -0
  54. package/lib/programmers/NestiaMigrateE2eProgrammer.d.ts +4 -0
  55. package/lib/programmers/NestiaMigrateE2eProgrammer.js +32 -0
  56. package/lib/programmers/NestiaMigrateE2eProgrammer.js.map +1 -0
  57. package/lib/programmers/{MigrateImportProgrammer.d.ts → NestiaMigrateImportProgrammer.d.ts} +1 -1
  58. package/lib/programmers/{MigrateImportProgrammer.js → NestiaMigrateImportProgrammer.js} +4 -4
  59. package/lib/programmers/NestiaMigrateImportProgrammer.js.map +1 -0
  60. package/lib/programmers/NestiaMigrateNestControllerProgrammer.d.ts +12 -0
  61. package/lib/programmers/{MigrateNestControllerProgrammer.js → NestiaMigrateNestControllerProgrammer.js} +20 -13
  62. package/lib/programmers/NestiaMigrateNestControllerProgrammer.js.map +1 -0
  63. package/lib/programmers/NestiaMigrateNestMethodProgrammer.d.ts +15 -0
  64. package/lib/programmers/{MigrateNestMethodProgrammer.js → NestiaMigrateNestMethodProgrammer.js} +85 -69
  65. package/lib/programmers/NestiaMigrateNestMethodProgrammer.js.map +1 -0
  66. package/lib/programmers/NestiaMigrateNestModuleProgrammer.d.ts +5 -0
  67. package/lib/programmers/{MigrateNestModuleProgrammer.js → NestiaMigrateNestModuleProgrammer.js} +6 -6
  68. package/lib/programmers/NestiaMigrateNestModuleProgrammer.js.map +1 -0
  69. package/lib/programmers/NestiaMigrateNestProgrammer.d.ts +4 -0
  70. package/lib/programmers/NestiaMigrateNestProgrammer.js +65 -0
  71. package/lib/programmers/NestiaMigrateNestProgrammer.js.map +1 -0
  72. package/lib/programmers/NestiaMigrateSchemaProgrammer.d.ts +10 -0
  73. package/lib/programmers/NestiaMigrateSchemaProgrammer.js +414 -0
  74. package/lib/programmers/NestiaMigrateSchemaProgrammer.js.map +1 -0
  75. package/lib/structures/INestiaMigrateConfig.d.ts +10 -0
  76. package/lib/structures/{IHttpMigrateFile.js → INestiaMigrateConfig.js} +1 -1
  77. package/lib/structures/INestiaMigrateConfig.js.map +1 -0
  78. package/lib/structures/INestiaMigrateContext.d.ts +9 -0
  79. package/lib/structures/INestiaMigrateContext.js +3 -0
  80. package/lib/structures/INestiaMigrateContext.js.map +1 -0
  81. package/lib/structures/INestiaMigrateController.d.ts +7 -0
  82. package/lib/structures/{IHttpMigrateController.js → INestiaMigrateController.js} +1 -1
  83. package/lib/structures/INestiaMigrateController.js.map +1 -0
  84. package/lib/structures/{IHttpMigrateDto.d.ts → INestiaMigrateDto.d.ts} +2 -2
  85. package/lib/structures/{IHttpMigrateRoute.js → INestiaMigrateDto.js} +1 -1
  86. package/lib/structures/INestiaMigrateDto.js.map +1 -0
  87. package/lib/structures/{IHttpMigrateFile.d.ts → INestiaMigrateFile.d.ts} +1 -1
  88. package/lib/structures/{IHttpMigrateDto.js → INestiaMigrateFile.js} +1 -1
  89. package/lib/structures/INestiaMigrateFile.js.map +1 -0
  90. package/lib/structures/INestiaMigrateProgram.d.ts +9 -0
  91. package/lib/structures/INestiaMigrateProgram.js +3 -0
  92. package/lib/structures/INestiaMigrateProgram.js.map +1 -0
  93. package/lib/structures/INestiaMigrateSchema.d.ts +4 -0
  94. package/lib/structures/{IHttpMigrateProgram.js → INestiaMigrateSchema.js} +1 -1
  95. package/lib/structures/INestiaMigrateSchema.js.map +1 -0
  96. package/lib/utils/openapi-down-convert/converter.js +2 -2
  97. package/package.json +8 -8
  98. package/src/NestiaMigrateApplication.ts +144 -0
  99. package/src/analyzers/{MigrateControllerAnalyzer.ts → NestiaMigrateControllerAnalyzer.ts} +51 -51
  100. package/src/archivers/NestiaMigrateFileArchiver.ts +28 -0
  101. package/src/bundles/NEST_TEMPLATE.ts +50 -242
  102. package/src/bundles/SDK_TEMPLATE.ts +23 -107
  103. package/src/{internal/MigrateCommander.ts → executable/NestiaMigrateCommander.ts} +98 -94
  104. package/src/{internal/MigrateInquirer.ts → executable/NestiaMigrateInquirer.ts} +106 -89
  105. package/src/executable/bundle.js +129 -127
  106. package/src/executable/migrate.ts +7 -7
  107. package/src/factories/TypeLiteralFactory.ts +57 -57
  108. package/src/index.ts +4 -4
  109. package/src/module.ts +2 -8
  110. package/src/programmers/NestiaMigrateApiFileProgrammer.ts +55 -0
  111. package/src/programmers/NestiaMigrateApiFunctionProgrammer.ts +256 -0
  112. package/src/programmers/NestiaMigrateApiNamespaceProgrammer.ts +524 -0
  113. package/src/programmers/NestiaMigrateApiProgrammer.ts +107 -0
  114. package/src/programmers/NestiaMigrateApiSimulationProgrammer.ts +340 -0
  115. package/src/programmers/NestiaMigrateApiStartProgrammer.ts +198 -0
  116. package/src/programmers/NestiaMigrateDtoProgrammer.ts +101 -0
  117. package/src/programmers/NestiaMigrateE2eFileProgrammer.ts +153 -0
  118. package/src/programmers/NestiaMigrateE2eProgrammer.ts +46 -0
  119. package/src/programmers/{MigrateImportProgrammer.ts → NestiaMigrateImportProgrammer.ts} +118 -118
  120. package/src/programmers/NestiaMigrateNestControllerProgrammer.ts +66 -0
  121. package/src/programmers/NestiaMigrateNestMethodProgrammer.ts +406 -0
  122. package/src/programmers/{MigrateNestModuleProgrammer.ts → NestiaMigrateNestModuleProgrammer.ts} +65 -65
  123. package/src/programmers/NestiaMigrateNestProgrammer.ts +88 -0
  124. package/src/programmers/NestiaMigrateSchemaProgrammer.ts +475 -0
  125. package/src/structures/INestiaMigrateConfig.ts +10 -0
  126. package/src/structures/INestiaMigrateContext.ts +15 -0
  127. package/src/structures/INestiaMigrateController.ts +8 -0
  128. package/src/structures/{IHttpMigrateDto.ts → INestiaMigrateDto.ts} +8 -8
  129. package/src/structures/{IHttpMigrateFile.ts → INestiaMigrateFile.ts} +5 -5
  130. package/src/structures/INestiaMigrateProgram.ts +11 -0
  131. package/src/structures/INestiaMigrateSchema.ts +4 -0
  132. package/src/utils/FilePrinter.ts +38 -38
  133. package/src/utils/MapUtil.ts +13 -13
  134. package/src/utils/OpenApiTypeChecker.ts +73 -73
  135. package/src/utils/SetupWizard.ts +12 -12
  136. package/src/utils/StringUtil.ts +113 -113
  137. package/src/utils/openapi-down-convert/RefVisitor.ts +139 -139
  138. package/src/utils/openapi-down-convert/converter.ts +527 -527
  139. package/lib/MigrateApplication.d.ts +0 -28
  140. package/lib/MigrateApplication.js +0 -7994
  141. package/lib/MigrateApplication.js.map +0 -1
  142. package/lib/analyzers/MigrateApplicationAnalyzer.d.ts +0 -4
  143. package/lib/analyzers/MigrateApplicationAnalyzer.js +0 -12
  144. package/lib/analyzers/MigrateApplicationAnalyzer.js.map +0 -1
  145. package/lib/analyzers/MigrateControllerAnalyzer.d.ts +0 -7
  146. package/lib/analyzers/MigrateControllerAnalyzer.js.map +0 -1
  147. package/lib/archivers/MigrateFileArchiver.d.ts +0 -8
  148. package/lib/archivers/MigrateFileArchiver.js +0 -35
  149. package/lib/archivers/MigrateFileArchiver.js.map +0 -1
  150. package/lib/internal/MigrateCommander.js.map +0 -1
  151. package/lib/internal/MigrateInquirer.js.map +0 -1
  152. package/lib/programmers/MigrateApiFileProgrammer.d.ts +0 -11
  153. package/lib/programmers/MigrateApiFileProgrammer.js +0 -30
  154. package/lib/programmers/MigrateApiFileProgrammer.js.map +0 -1
  155. package/lib/programmers/MigrateApiFunctionProgrammer.d.ts +0 -9
  156. package/lib/programmers/MigrateApiFunctionProgrammer.js +0 -102
  157. package/lib/programmers/MigrateApiFunctionProgrammer.js.map +0 -1
  158. package/lib/programmers/MigrateApiNamespaceProgrammer.d.ts +0 -9
  159. package/lib/programmers/MigrateApiNamespaceProgrammer.js +0 -142
  160. package/lib/programmers/MigrateApiNamespaceProgrammer.js.map +0 -1
  161. package/lib/programmers/MigrateApiProgrammer.d.ts +0 -5
  162. package/lib/programmers/MigrateApiProgrammer.js.map +0 -1
  163. package/lib/programmers/MigrateApiSimulationProgrammer.d.ts +0 -8
  164. package/lib/programmers/MigrateApiSimulationProgrammer.js.map +0 -1
  165. package/lib/programmers/MigrateApiStartProgrammer.d.ts +0 -5
  166. package/lib/programmers/MigrateApiStartProgrammer.js.map +0 -1
  167. package/lib/programmers/MigrateDtoProgrammer.d.ts +0 -11
  168. package/lib/programmers/MigrateDtoProgrammer.js.map +0 -1
  169. package/lib/programmers/MigrateE2eFileProgrammer.d.ts +0 -8
  170. package/lib/programmers/MigrateE2eFileProgrammer.js +0 -45
  171. package/lib/programmers/MigrateE2eFileProgrammer.js.map +0 -1
  172. package/lib/programmers/MigrateE2eProgrammer.d.ts +0 -5
  173. package/lib/programmers/MigrateE2eProgrammer.js +0 -25
  174. package/lib/programmers/MigrateE2eProgrammer.js.map +0 -1
  175. package/lib/programmers/MigrateImportProgrammer.js.map +0 -1
  176. package/lib/programmers/MigrateNestControllerProgrammer.d.ts +0 -7
  177. package/lib/programmers/MigrateNestControllerProgrammer.js.map +0 -1
  178. package/lib/programmers/MigrateNestMethodProgrammer.d.ts +0 -9
  179. package/lib/programmers/MigrateNestMethodProgrammer.js.map +0 -1
  180. package/lib/programmers/MigrateNestModuleProgrammer.d.ts +0 -5
  181. package/lib/programmers/MigrateNestModuleProgrammer.js.map +0 -1
  182. package/lib/programmers/MigrateNestProgrammer.d.ts +0 -5
  183. package/lib/programmers/MigrateNestProgrammer.js +0 -69
  184. package/lib/programmers/MigrateNestProgrammer.js.map +0 -1
  185. package/lib/programmers/MigrateSchemaProgrammer.d.ts +0 -6
  186. package/lib/programmers/MigrateSchemaProgrammer.js +0 -335
  187. package/lib/programmers/MigrateSchemaProgrammer.js.map +0 -1
  188. package/lib/structures/IHttpMigrateController.d.ts +0 -7
  189. package/lib/structures/IHttpMigrateController.js.map +0 -1
  190. package/lib/structures/IHttpMigrateDto.js.map +0 -1
  191. package/lib/structures/IHttpMigrateFile.js.map +0 -1
  192. package/lib/structures/IHttpMigrateProgram.d.ts +0 -33
  193. package/lib/structures/IHttpMigrateProgram.js.map +0 -1
  194. package/lib/structures/IHttpMigrateRoute.d.ts +0 -1
  195. package/lib/structures/IHttpMigrateRoute.js.map +0 -1
  196. package/lib/structures/IHttpMigrateSchema.d.ts +0 -4
  197. package/lib/structures/IHttpMigrateSchema.js +0 -3
  198. package/lib/structures/IHttpMigrateSchema.js.map +0 -1
  199. package/src/MigrateApplication.ts +0 -124
  200. package/src/analyzers/MigrateApplicationAnalyzer.ts +0 -18
  201. package/src/archivers/MigrateFileArchiver.ts +0 -38
  202. package/src/programmers/MigrateApiFileProgrammer.ts +0 -51
  203. package/src/programmers/MigrateApiFunctionProgrammer.ts +0 -213
  204. package/src/programmers/MigrateApiNamespaceProgrammer.ts +0 -418
  205. package/src/programmers/MigrateApiProgrammer.ts +0 -104
  206. package/src/programmers/MigrateApiSimulationProgrammer.ts +0 -324
  207. package/src/programmers/MigrateApiStartProgrammer.ts +0 -194
  208. package/src/programmers/MigrateDtoProgrammer.ts +0 -87
  209. package/src/programmers/MigrateE2eFileProgrammer.ts +0 -117
  210. package/src/programmers/MigrateE2eProgrammer.ts +0 -34
  211. package/src/programmers/MigrateNestControllerProgrammer.ts +0 -57
  212. package/src/programmers/MigrateNestMethodProgrammer.ts +0 -397
  213. package/src/programmers/MigrateNestProgrammer.ts +0 -82
  214. package/src/programmers/MigrateSchemaProgrammer.ts +0 -378
  215. package/src/structures/IHttpMigrateController.ts +0 -8
  216. package/src/structures/IHttpMigrateProgram.ts +0 -35
  217. package/src/structures/IHttpMigrateRoute.ts +0 -1
  218. package/src/structures/IHttpMigrateSchema.ts +0 -4
@@ -1,378 +0,0 @@
1
- import { OpenApi } from "@samchon/openapi";
2
- import ts from "typescript";
3
- import typia from "typia";
4
- import { TypeFactory } from "typia/lib/factories/TypeFactory";
5
- import { FormatCheatSheet } from "typia/lib/tags/internal/FormatCheatSheet";
6
- import { Escaper } from "typia/lib/utils/Escaper";
7
-
8
- import { FilePrinter } from "../utils/FilePrinter";
9
- import { OpenApiTypeChecker } from "../utils/OpenApiTypeChecker";
10
- import { StringUtil } from "../utils/StringUtil";
11
- import { MigrateImportProgrammer } from "./MigrateImportProgrammer";
12
-
13
- export namespace MigrateSchemaProgrammer {
14
- /* -----------------------------------------------------------
15
- FACADE
16
- ----------------------------------------------------------- */
17
- export const write =
18
- (components: OpenApi.IComponents) =>
19
- (importer: MigrateImportProgrammer) =>
20
- (schema: OpenApi.IJsonSchema): ts.TypeNode => {
21
- // CONSIDER ANY TYPE CASE
22
- const union: ts.TypeNode[] = [];
23
- if (OpenApiTypeChecker.isUnknown(schema))
24
- return TypeFactory.keyword("any");
25
-
26
- // ITERATION
27
- const type: ts.TypeNode = (() => {
28
- // ATOMIC
29
- if (OpenApiTypeChecker.isConstant(schema))
30
- return writeConstant(importer)(schema);
31
- else if (OpenApiTypeChecker.isBoolean(schema))
32
- return writeBoolean(importer)(schema);
33
- else if (OpenApiTypeChecker.isInteger(schema))
34
- return writeInteger(importer)(schema);
35
- else if (OpenApiTypeChecker.isNumber(schema))
36
- return writeNumber(importer)(schema);
37
- else if (OpenApiTypeChecker.isString(schema))
38
- return writeString(importer)(schema);
39
- // INSTANCES
40
- else if (OpenApiTypeChecker.isArray(schema))
41
- return writeArray(components)(importer)(schema);
42
- else if (OpenApiTypeChecker.isTuple(schema))
43
- return writeTuple(components)(importer)(schema);
44
- else if (OpenApiTypeChecker.isObject(schema))
45
- return writeObject(components)(importer)(schema);
46
- else if (OpenApiTypeChecker.isReference(schema))
47
- return writeReference(importer)(schema);
48
- // UNION
49
- else if (OpenApiTypeChecker.isOneOf(schema))
50
- return writeUnion(components)(importer)(schema.oneOf);
51
- else if (OpenApiTypeChecker.isNull(schema)) return createNode("null");
52
- else return TypeFactory.keyword("any");
53
- })();
54
- union.push(type);
55
-
56
- // DETERMINE
57
- if (union.length === 0) return TypeFactory.keyword("any");
58
- else if (union.length === 1) return union[0];
59
- return ts.factory.createUnionTypeNode(union);
60
- };
61
-
62
- /* -----------------------------------------------------------
63
- ATOMICS
64
- ----------------------------------------------------------- */
65
- const writeConstant =
66
- (importer: MigrateImportProgrammer) =>
67
- (schema: OpenApi.IJsonSchema.IConstant): ts.TypeNode => {
68
- const intersection: ts.TypeNode[] = [
69
- ts.factory.createLiteralTypeNode(
70
- typeof schema.const === "boolean"
71
- ? schema.const === true
72
- ? ts.factory.createTrue()
73
- : ts.factory.createFalse()
74
- : typeof schema.const === "number"
75
- ? schema.const < 0
76
- ? ts.factory.createPrefixUnaryExpression(
77
- ts.SyntaxKind.MinusToken,
78
- ts.factory.createNumericLiteral(-schema.const),
79
- )
80
- : ts.factory.createNumericLiteral(schema.const)
81
- : ts.factory.createStringLiteral(schema.const),
82
- ),
83
- ];
84
- writePlugin({
85
- importer,
86
- regular: typia.misc.literals<keyof OpenApi.IJsonSchema.IConstant>(),
87
- intersection,
88
- })(schema);
89
- return intersection.length === 1
90
- ? intersection[0]
91
- : ts.factory.createIntersectionTypeNode(intersection);
92
- };
93
-
94
- const writeBoolean =
95
- (importer: MigrateImportProgrammer) =>
96
- (schema: OpenApi.IJsonSchema.IBoolean): ts.TypeNode => {
97
- const intersection: ts.TypeNode[] = [TypeFactory.keyword("boolean")];
98
- writePlugin({
99
- importer,
100
- regular: typia.misc.literals<keyof OpenApi.IJsonSchema.IBoolean>(),
101
- intersection,
102
- })(schema);
103
- return intersection.length === 1
104
- ? intersection[0]
105
- : ts.factory.createIntersectionTypeNode(intersection);
106
- };
107
-
108
- const writeInteger =
109
- (importer: MigrateImportProgrammer) =>
110
- (schema: OpenApi.IJsonSchema.IInteger): ts.TypeNode =>
111
- writeNumeric(() => [
112
- TypeFactory.keyword("number"),
113
- importer.tag("Type", "int32"),
114
- ])(importer)(schema);
115
-
116
- const writeNumber =
117
- (importer: MigrateImportProgrammer) =>
118
- (schema: OpenApi.IJsonSchema.INumber): ts.TypeNode =>
119
- writeNumeric(() => [TypeFactory.keyword("number")])(importer)(schema);
120
-
121
- const writeNumeric =
122
- (factory: () => ts.TypeNode[]) =>
123
- (importer: MigrateImportProgrammer) =>
124
- (
125
- schema: OpenApi.IJsonSchema.IInteger | OpenApi.IJsonSchema.INumber,
126
- ): ts.TypeNode => {
127
- const intersection: ts.TypeNode[] = factory();
128
- if (schema.default !== undefined)
129
- intersection.push(importer.tag("Default", schema.default));
130
- if (schema.minimum !== undefined)
131
- intersection.push(
132
- importer.tag(
133
- schema.exclusiveMinimum ? "ExclusiveMinimum" : "Minimum",
134
- schema.minimum,
135
- ),
136
- );
137
- if (schema.maximum !== undefined)
138
- intersection.push(
139
- importer.tag(
140
- schema.exclusiveMaximum ? "ExclusiveMaximum" : "Maximum",
141
- schema.maximum,
142
- ),
143
- );
144
- if (schema.multipleOf !== undefined)
145
- intersection.push(importer.tag("MultipleOf", schema.multipleOf));
146
- writePlugin({
147
- importer,
148
- regular: typia.misc.literals<keyof OpenApi.IJsonSchema.INumber>(),
149
- intersection,
150
- })(schema);
151
- return intersection.length === 1
152
- ? intersection[0]
153
- : ts.factory.createIntersectionTypeNode(intersection);
154
- };
155
-
156
- const writeString =
157
- (importer: MigrateImportProgrammer) =>
158
- (schema: OpenApi.IJsonSchema.IString): ts.TypeNode => {
159
- if (schema.format === "binary")
160
- return ts.factory.createTypeReferenceNode("File");
161
-
162
- const intersection: ts.TypeNode[] = [TypeFactory.keyword("string")];
163
- if (schema.default !== undefined)
164
- intersection.push(importer.tag("Default", schema.default));
165
- if (schema.minLength !== undefined)
166
- intersection.push(importer.tag("MinLength", schema.minLength));
167
- if (schema.maxLength !== undefined)
168
- intersection.push(importer.tag("MaxLength", schema.maxLength));
169
- if (schema.pattern !== undefined)
170
- intersection.push(importer.tag("Pattern", schema.pattern));
171
- if (
172
- schema.format !== undefined &&
173
- (FormatCheatSheet as Record<string, string>)[schema.format] !==
174
- undefined
175
- )
176
- intersection.push(importer.tag("Format", schema.format));
177
- if (schema.contentMediaType !== undefined)
178
- intersection.push(
179
- importer.tag("ContentMediaType", schema.contentMediaType),
180
- );
181
- writePlugin({
182
- importer,
183
- regular: typia.misc.literals<keyof OpenApi.IJsonSchema.IString>(),
184
- intersection,
185
- })(schema);
186
- return intersection.length === 1
187
- ? intersection[0]
188
- : ts.factory.createIntersectionTypeNode(intersection);
189
- };
190
-
191
- /* -----------------------------------------------------------
192
- INSTANCES
193
- ----------------------------------------------------------- */
194
- const writeArray =
195
- (components: OpenApi.IComponents) =>
196
- (importer: MigrateImportProgrammer) =>
197
- (schema: OpenApi.IJsonSchema.IArray): ts.TypeNode => {
198
- const intersection: ts.TypeNode[] = [
199
- ts.factory.createArrayTypeNode(
200
- write(components)(importer)(schema.items),
201
- ),
202
- ];
203
- if (schema.minItems !== undefined)
204
- intersection.push(importer.tag("MinItems", schema.minItems));
205
- if (schema.maxItems !== undefined)
206
- intersection.push(importer.tag("MaxItems", schema.maxItems));
207
- if (schema.uniqueItems === true)
208
- intersection.push(importer.tag("UniqueItems"));
209
- writePlugin({
210
- importer,
211
- regular: typia.misc.literals<keyof OpenApi.IJsonSchema.IArray>(),
212
- intersection,
213
- })(schema);
214
- return intersection.length === 1
215
- ? intersection[0]
216
- : ts.factory.createIntersectionTypeNode(intersection);
217
- };
218
-
219
- const writeTuple =
220
- (components: OpenApi.IComponents) =>
221
- (importer: MigrateImportProgrammer) =>
222
- (schema: OpenApi.IJsonSchema.ITuple): ts.TypeNode => {
223
- const tuple: ts.TypeNode = ts.factory.createTupleTypeNode([
224
- ...schema.prefixItems.map(write(components)(importer)),
225
- ...(typeof schema.additionalItems === "object" &&
226
- schema.additionalItems !== null
227
- ? [
228
- ts.factory.createRestTypeNode(
229
- write(components)(importer)(schema.additionalItems),
230
- ),
231
- ]
232
- : schema.additionalItems === true
233
- ? [
234
- ts.factory.createRestTypeNode(
235
- ts.factory.createArrayTypeNode(
236
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
237
- ),
238
- ),
239
- ]
240
- : []),
241
- ]);
242
- const intersection: ts.TypeNode[] = [tuple];
243
- writePlugin({
244
- importer,
245
- regular: typia.misc.literals<keyof OpenApi.IJsonSchema.ITuple>(),
246
- intersection,
247
- })(schema);
248
- return intersection.length === 1
249
- ? intersection[0]
250
- : ts.factory.createIntersectionTypeNode(intersection);
251
- };
252
-
253
- const writeObject =
254
- (components: OpenApi.IComponents) =>
255
- (importer: MigrateImportProgrammer) =>
256
- (schema: OpenApi.IJsonSchema.IObject): ts.TypeNode => {
257
- const regular = () =>
258
- ts.factory.createTypeLiteralNode(
259
- Object.entries(schema.properties ?? [])
260
- .map(([key, value], index) => [
261
- ...(index !== 0
262
- ? [ts.factory.createIdentifier("\n") as any]
263
- : []),
264
- writeRegularProperty(components)(importer)(schema.required ?? [])(
265
- key,
266
- value,
267
- ),
268
- ])
269
- .flat(),
270
- );
271
- const dynamic = () =>
272
- ts.factory.createTypeLiteralNode([
273
- writeDynamicProperty(components)(importer)(
274
- schema.additionalProperties as OpenApi.IJsonSchema,
275
- ),
276
- ]);
277
- return !!schema.properties?.length &&
278
- typeof schema.additionalProperties === "object"
279
- ? ts.factory.createIntersectionTypeNode([regular(), dynamic()])
280
- : typeof schema.additionalProperties === "object"
281
- ? dynamic()
282
- : regular();
283
- };
284
-
285
- const writeRegularProperty =
286
- (components: OpenApi.IComponents) =>
287
- (importer: MigrateImportProgrammer) =>
288
- (required: string[]) =>
289
- (key: string, value: OpenApi.IJsonSchema) =>
290
- FilePrinter.description(
291
- ts.factory.createPropertySignature(
292
- undefined,
293
- Escaper.variable(key)
294
- ? ts.factory.createIdentifier(key)
295
- : ts.factory.createStringLiteral(key),
296
- required.includes(key)
297
- ? undefined
298
- : ts.factory.createToken(ts.SyntaxKind.QuestionToken),
299
- write(components)(importer)(value),
300
- ),
301
- writeComment(value),
302
- );
303
-
304
- const writeDynamicProperty =
305
- (components: OpenApi.IComponents) =>
306
- (importer: MigrateImportProgrammer) =>
307
- (value: OpenApi.IJsonSchema) =>
308
- FilePrinter.description(
309
- ts.factory.createIndexSignature(
310
- undefined,
311
- [
312
- ts.factory.createParameterDeclaration(
313
- undefined,
314
- undefined,
315
- ts.factory.createIdentifier("key"),
316
- undefined,
317
- TypeFactory.keyword("string"),
318
- ),
319
- ],
320
- write(components)(importer)(value),
321
- ),
322
- writeComment(value),
323
- );
324
-
325
- const writeReference =
326
- (importer: MigrateImportProgrammer) =>
327
- (
328
- schema: OpenApi.IJsonSchema.IReference,
329
- ): ts.TypeReferenceNode | ts.KeywordTypeNode => {
330
- if (schema.$ref.startsWith("#/components/schemas") === false)
331
- return TypeFactory.keyword("any");
332
- const name: string = schema.$ref
333
- .split("/")
334
- .slice(3)
335
- .filter((str) => str.length !== 0)
336
- .map(StringUtil.escapeNonVariable)
337
- .join("");
338
- if (name === "") return TypeFactory.keyword("any");
339
- return importer.dto(name);
340
- };
341
-
342
- /* -----------------------------------------------------------
343
- UNIONS
344
- ----------------------------------------------------------- */
345
- const writeUnion =
346
- (components: OpenApi.IComponents) =>
347
- (importer: MigrateImportProgrammer) =>
348
- (elements: OpenApi.IJsonSchema[]): ts.UnionTypeNode =>
349
- ts.factory.createUnionTypeNode(elements.map(write(components)(importer)));
350
- }
351
- const createNode = (text: string) => ts.factory.createTypeReferenceNode(text);
352
- const writeComment = (schema: OpenApi.IJsonSchema): string =>
353
- [
354
- ...(schema.description?.length ? [schema.description] : []),
355
- ...(schema.description?.length &&
356
- (schema.title !== undefined || schema.deprecated === true)
357
- ? [""]
358
- : []),
359
- ...(schema.title !== undefined ? [`@title ${schema.title}`] : []),
360
- ...(schema.deprecated === true ? [`@deprecated`] : []),
361
- ]
362
- .join("\n")
363
- .split("*/")
364
- .join("*\\/");
365
- const writePlugin =
366
- (props: {
367
- importer: MigrateImportProgrammer;
368
- regular: string[];
369
- intersection: ts.TypeNode[];
370
- }) =>
371
- (schema: any) => {
372
- const extra: any = {};
373
- for (const [key, value] of Object.entries(schema))
374
- if (value !== undefined && false === props.regular.includes(key))
375
- extra[key] = value;
376
- if (Object.keys(extra).length !== 0)
377
- props.intersection.push(props.importer.tag("JsonSchemaPlugin", extra));
378
- };
@@ -1,8 +0,0 @@
1
- import { IHttpMigrateRoute } from "./IHttpMigrateRoute";
2
-
3
- export interface IHttpMigrateController {
4
- name: string;
5
- path: string;
6
- location: string;
7
- routes: IHttpMigrateRoute[];
8
- }
@@ -1,35 +0,0 @@
1
- import { OpenApi } from "@samchon/openapi";
2
-
3
- import { IHttpMigrateRoute } from "./IHttpMigrateRoute";
4
-
5
- export interface IHttpMigrateProgram extends IHttpMigrateProgram.IProps {
6
- routes: IHttpMigrateRoute[];
7
- errors: IHttpMigrateProgram.IError[];
8
- }
9
- export namespace IHttpMigrateProgram {
10
- export interface IProps {
11
- mode: "nest" | "sdk";
12
- simulate: boolean;
13
- e2e: boolean;
14
- document: OpenApi.IDocument;
15
- author?: {
16
- tag: string;
17
- value: string;
18
- };
19
- }
20
- export interface IConfig {
21
- mode: "nest" | "sdk";
22
- simulate: boolean;
23
- e2e: boolean;
24
- author?: {
25
- tag: string;
26
- value: string;
27
- };
28
- }
29
- export interface IError {
30
- method: string;
31
- path: string;
32
- operation: () => OpenApi.IOperation;
33
- messages: string[];
34
- }
35
- }
@@ -1 +0,0 @@
1
- export { IHttpMigrateRoute } from "@samchon/openapi";
@@ -1,4 +0,0 @@
1
- export interface IHttpMigrateSchema {
2
- name: string;
3
- children: IHttpMigrateSchema[];
4
- }