@nestia/sdk 11.2.0 → 12.0.0-dev.20260520.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/assets/bundle/distribute/package.json +1 -1
  2. package/lib/NestiaSdkApplication.js +5 -4
  3. package/lib/NestiaSdkApplication.js.map +1 -1
  4. package/lib/NestiaSwaggerComposer.js +2 -2
  5. package/lib/NestiaSwaggerComposer.js.map +1 -1
  6. package/lib/analyses/AccessorAnalyzer.js.map +1 -1
  7. package/lib/analyses/ConfigAnalyzer.js +133 -7
  8. package/lib/analyses/ConfigAnalyzer.js.map +1 -1
  9. package/lib/analyses/ImportAnalyzer.d.ts +9 -2
  10. package/lib/analyses/ImportAnalyzer.js +13 -50
  11. package/lib/analyses/ImportAnalyzer.js.map +1 -1
  12. package/lib/analyses/PathAnalyzer.js.map +1 -1
  13. package/lib/analyses/ReflectControllerAnalyzer.js.map +1 -1
  14. package/lib/analyses/ReflectHttpOperationAnalyzer.d.ts +1 -1
  15. package/lib/analyses/ReflectHttpOperationAnalyzer.js +5 -4
  16. package/lib/analyses/ReflectHttpOperationAnalyzer.js.map +1 -1
  17. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.d.ts +1 -1
  18. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js +22 -5
  19. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js.map +1 -1
  20. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.d.ts +1 -1
  21. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js +8 -8
  22. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js.map +1 -1
  23. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.d.ts +1 -1
  24. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js +15 -15
  25. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js.map +1 -1
  26. package/lib/analyses/ReflectMetadataAnalyzer.js.map +1 -1
  27. package/lib/analyses/ReflectWebSocketOperationAnalyzer.d.ts +1 -1
  28. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js +1 -1
  29. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js.map +1 -1
  30. package/lib/analyses/SecurityAnalyzer.js.map +1 -1
  31. package/lib/analyses/TypedHttpRouteAnalyzer.d.ts +2 -1
  32. package/lib/analyses/TypedHttpRouteAnalyzer.js +296 -39
  33. package/lib/analyses/TypedHttpRouteAnalyzer.js.map +1 -1
  34. package/lib/analyses/TypedWebSocketRouteAnalyzer.js +1 -4
  35. package/lib/analyses/TypedWebSocketRouteAnalyzer.js.map +1 -1
  36. package/lib/decorators/OperationMetadata.d.ts +1 -1
  37. package/lib/decorators/OperationMetadata.js.map +1 -1
  38. package/lib/executable/internal/CommandParser.js.map +1 -1
  39. package/lib/executable/internal/NestiaConfigLoader.d.ts +6 -2
  40. package/lib/executable/internal/NestiaConfigLoader.js +285 -792
  41. package/lib/executable/internal/NestiaConfigLoader.js.map +1 -1
  42. package/lib/executable/internal/NestiaSdkCommand.js +6 -4
  43. package/lib/executable/internal/NestiaSdkCommand.js.map +1 -1
  44. package/lib/executable/sdk.js +17 -5
  45. package/lib/executable/sdk.js.map +1 -1
  46. package/lib/generates/CloneGenerator.js +2 -2
  47. package/lib/generates/CloneGenerator.js.map +1 -1
  48. package/lib/generates/E2eGenerator.js.map +1 -1
  49. package/lib/generates/SdkGenerator.js +6 -9
  50. package/lib/generates/SdkGenerator.js.map +1 -1
  51. package/lib/generates/SwaggerGenerator.js +20 -107
  52. package/lib/generates/SwaggerGenerator.js.map +1 -1
  53. package/lib/generates/internal/E2eFileProgrammer.js +44 -28
  54. package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
  55. package/lib/generates/internal/FilePrinter.d.ts +4 -4
  56. package/lib/generates/internal/FilePrinter.js +25 -16
  57. package/lib/generates/internal/FilePrinter.js.map +1 -1
  58. package/lib/generates/internal/ImportDictionary.d.ts +2 -2
  59. package/lib/generates/internal/ImportDictionary.js +7 -5
  60. package/lib/generates/internal/ImportDictionary.js.map +1 -1
  61. package/lib/generates/internal/SdkAliasCollection.d.ts +11 -11
  62. package/lib/generates/internal/SdkAliasCollection.js +27 -31
  63. package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
  64. package/lib/generates/internal/SdkDistributionComposer.js +15 -70
  65. package/lib/generates/internal/SdkDistributionComposer.js.map +1 -1
  66. package/lib/generates/internal/SdkFileProgrammer.js +2 -2
  67. package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
  68. package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +2 -2
  69. package/lib/generates/internal/SdkHttpCloneProgrammer.js +6 -12
  70. package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
  71. package/lib/generates/internal/SdkHttpCloneReferencer.js +2 -1
  72. package/lib/generates/internal/SdkHttpCloneReferencer.js.map +1 -1
  73. package/lib/generates/internal/SdkHttpFunctionProgrammer.d.ts +2 -2
  74. package/lib/generates/internal/SdkHttpFunctionProgrammer.js +73 -77
  75. package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
  76. package/lib/generates/internal/SdkHttpNamespaceProgrammer.d.ts +2 -2
  77. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +64 -66
  78. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
  79. package/lib/generates/internal/SdkHttpParameterProgrammer.d.ts +4 -10
  80. package/lib/generates/internal/SdkHttpParameterProgrammer.js +15 -22
  81. package/lib/generates/internal/SdkHttpParameterProgrammer.js.map +1 -1
  82. package/lib/generates/internal/SdkHttpRouteProgrammer.d.ts +2 -2
  83. package/lib/generates/internal/SdkHttpRouteProgrammer.js +18 -20
  84. package/lib/generates/internal/SdkHttpRouteProgrammer.js.map +1 -1
  85. package/lib/generates/internal/SdkHttpSimulationProgrammer.d.ts +3 -3
  86. package/lib/generates/internal/SdkHttpSimulationProgrammer.js +47 -49
  87. package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
  88. package/lib/generates/internal/SdkImportWizard.js.map +1 -1
  89. package/lib/generates/internal/SdkRouteDirectory.js.map +1 -1
  90. package/lib/generates/internal/SdkTypeProgrammer.d.ts +4 -4
  91. package/lib/generates/internal/SdkTypeProgrammer.js +66 -67
  92. package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
  93. package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +1 -2
  94. package/lib/generates/internal/SdkTypeTagProgrammer.js +29 -11
  95. package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -1
  96. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.d.ts +2 -2
  97. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +55 -55
  98. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
  99. package/lib/generates/internal/SdkWebSocketParameterProgrammer.d.ts +3 -3
  100. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js +9 -12
  101. package/lib/generates/internal/SdkWebSocketParameterProgrammer.js.map +1 -1
  102. package/lib/generates/internal/SdkWebSocketRouteProgrammer.d.ts +2 -2
  103. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +43 -45
  104. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
  105. package/lib/generates/internal/SwaggerDescriptionComposer.js.map +1 -1
  106. package/lib/generates/internal/SwaggerOperationComposer.d.ts +1 -1
  107. package/lib/generates/internal/SwaggerOperationComposer.js +5 -4
  108. package/lib/generates/internal/SwaggerOperationComposer.js.map +1 -1
  109. package/lib/generates/internal/SwaggerOperationParameterComposer.d.ts +0 -3
  110. package/lib/generates/internal/SwaggerOperationParameterComposer.js +19 -20
  111. package/lib/generates/internal/SwaggerOperationParameterComposer.js.map +1 -1
  112. package/lib/generates/internal/SwaggerOperationResponseComposer.d.ts +1 -1
  113. package/lib/generates/internal/SwaggerOperationResponseComposer.js +4 -3
  114. package/lib/generates/internal/SwaggerOperationResponseComposer.js.map +1 -1
  115. package/lib/index.js.map +1 -1
  116. package/lib/internal/legacy.d.ts +180 -0
  117. package/lib/internal/legacy.js +361 -0
  118. package/lib/internal/legacy.js.map +1 -0
  119. package/lib/structures/INestiaProject.d.ts +0 -2
  120. package/lib/{transformers → structures}/IOperationMetadata.d.ts +2 -7
  121. package/lib/structures/IOperationMetadata.js.map +1 -0
  122. package/lib/structures/IReflectHttpOperationException.d.ts +1 -1
  123. package/lib/structures/IReflectHttpOperationParameter.d.ts +1 -1
  124. package/lib/structures/IReflectHttpOperationSuccess.d.ts +1 -1
  125. package/lib/structures/IReflectOperationError.d.ts +1 -1
  126. package/lib/structures/IReflectOperationError.js.map +1 -1
  127. package/lib/structures/IReflectWebSocketOperation.d.ts +2 -2
  128. package/lib/structures/ITypedApplication.d.ts +1 -1
  129. package/lib/structures/ITypedHttpRouteException.d.ts +1 -1
  130. package/lib/structures/ITypedHttpRouteParameter.d.ts +1 -1
  131. package/lib/structures/ITypedHttpRouteSuccess.d.ts +1 -1
  132. package/lib/structures/ITypedWebSocketRoute.d.ts +2 -2
  133. package/lib/transform.d.ts +9 -3
  134. package/lib/transform.js +47 -5
  135. package/lib/transform.js.map +1 -1
  136. package/lib/utils/ArrayUtil.js.map +1 -1
  137. package/lib/utils/FileRetriever.js.map +1 -1
  138. package/lib/utils/MapUtil.js.map +1 -1
  139. package/lib/utils/PathUtil.js.map +1 -1
  140. package/lib/utils/SourceFinder.js.map +1 -1
  141. package/lib/utils/StringUtil.js.map +1 -1
  142. package/lib/utils/TsConfigReader.d.ts +7 -0
  143. package/lib/utils/TsConfigReader.js +102 -0
  144. package/lib/utils/TsConfigReader.js.map +1 -0
  145. package/lib/utils/TtscExecutor.d.ts +8 -0
  146. package/lib/utils/TtscExecutor.js +58 -0
  147. package/lib/utils/TtscExecutor.js.map +1 -0
  148. package/lib/utils/VersioningStrategy.js.map +1 -1
  149. package/lib/validators/HttpHeadersValidator.d.ts +8 -5
  150. package/lib/validators/HttpHeadersValidator.js +7 -26
  151. package/lib/validators/HttpHeadersValidator.js.map +1 -1
  152. package/lib/validators/HttpQueryValidator.d.ts +8 -5
  153. package/lib/validators/HttpQueryValidator.js +7 -26
  154. package/lib/validators/HttpQueryValidator.js.map +1 -1
  155. package/lib/{transformers → validators}/TextPlainValidator.d.ts +1 -1
  156. package/lib/{transformers → validators}/TextPlainValidator.js +2 -1
  157. package/lib/validators/TextPlainValidator.js.map +1 -0
  158. package/package.json +21 -19
  159. package/src/NestiaSdkApplication.ts +9 -5
  160. package/src/NestiaSwaggerComposer.ts +2 -3
  161. package/src/analyses/ConfigAnalyzer.ts +175 -1
  162. package/src/analyses/ImportAnalyzer.ts +15 -49
  163. package/src/analyses/ReflectControllerAnalyzer.ts +1 -1
  164. package/src/analyses/ReflectHttpOperationAnalyzer.ts +1 -1
  165. package/src/analyses/ReflectHttpOperationExceptionAnalyzer.ts +24 -6
  166. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +3 -3
  167. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +14 -10
  168. package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +2 -2
  169. package/src/analyses/TypedHttpRouteAnalyzer.ts +354 -22
  170. package/src/decorators/OperationMetadata.ts +1 -1
  171. package/src/executable/internal/NestiaConfigLoader.ts +419 -52
  172. package/src/executable/internal/NestiaSdkCommand.ts +9 -10
  173. package/src/executable/sdk.ts +15 -4
  174. package/src/generates/CloneGenerator.ts +10 -10
  175. package/src/generates/SwaggerGenerator.ts +28 -9
  176. package/src/generates/internal/E2eFileProgrammer.ts +80 -43
  177. package/src/generates/internal/FilePrinter.ts +38 -37
  178. package/src/generates/internal/ImportDictionary.ts +18 -16
  179. package/src/generates/internal/SdkAliasCollection.ts +41 -40
  180. package/src/generates/internal/SdkDistributionComposer.ts +21 -8
  181. package/src/generates/internal/SdkFileProgrammer.ts +7 -5
  182. package/src/generates/internal/SdkHttpCloneProgrammer.ts +10 -10
  183. package/src/generates/internal/SdkHttpCloneReferencer.ts +6 -6
  184. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +101 -78
  185. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +153 -145
  186. package/src/generates/internal/SdkHttpParameterProgrammer.ts +20 -33
  187. package/src/generates/internal/SdkHttpRouteProgrammer.ts +2 -2
  188. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +88 -86
  189. package/src/generates/internal/SdkTypeProgrammer.ts +93 -99
  190. package/src/generates/internal/SdkTypeTagProgrammer.ts +12 -12
  191. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +128 -118
  192. package/src/generates/internal/SdkWebSocketParameterProgrammer.ts +15 -13
  193. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +133 -112
  194. package/src/generates/internal/SwaggerOperationComposer.ts +1 -1
  195. package/src/generates/internal/SwaggerOperationParameterComposer.ts +10 -9
  196. package/src/generates/internal/SwaggerOperationResponseComposer.ts +1 -1
  197. package/src/internal/legacy.ts +492 -0
  198. package/src/structures/INestiaProject.ts +0 -3
  199. package/src/{transformers → structures}/IOperationMetadata.ts +2 -7
  200. package/src/structures/IReflectHttpOperationException.ts +1 -1
  201. package/src/structures/IReflectHttpOperationParameter.ts +1 -1
  202. package/src/structures/IReflectHttpOperationSuccess.ts +1 -1
  203. package/src/structures/IReflectOperationError.ts +1 -1
  204. package/src/structures/IReflectWebSocketOperation.ts +2 -2
  205. package/src/structures/ITypedApplication.ts +1 -1
  206. package/src/structures/ITypedHttpRouteException.ts +1 -1
  207. package/src/structures/ITypedHttpRouteParameter.ts +1 -1
  208. package/src/structures/ITypedHttpRouteSuccess.ts +1 -1
  209. package/src/structures/ITypedWebSocketRoute.ts +2 -2
  210. package/src/transform.ts +68 -7
  211. package/src/utils/TsConfigReader.ts +108 -0
  212. package/src/utils/TtscExecutor.ts +63 -0
  213. package/src/validators/HttpHeadersValidator.ts +8 -37
  214. package/src/validators/HttpQueryValidator.ts +8 -37
  215. package/src/{transformers → validators}/TextPlainValidator.ts +2 -2
  216. package/lib/analyses/DtoAnalyzer.d.ts +0 -21
  217. package/lib/analyses/DtoAnalyzer.js +0 -219
  218. package/lib/analyses/DtoAnalyzer.js.map +0 -1
  219. package/lib/analyses/ExceptionAnalyzer.d.ts +0 -0
  220. package/lib/analyses/ExceptionAnalyzer.js +0 -2
  221. package/lib/analyses/ExceptionAnalyzer.js.map +0 -1
  222. package/lib/analyses/GenericAnalyzer.d.ts +0 -4
  223. package/lib/analyses/GenericAnalyzer.js +0 -42
  224. package/lib/analyses/GenericAnalyzer.js.map +0 -1
  225. package/lib/structures/IReflectApplication.d.ts +0 -6
  226. package/lib/structures/IReflectApplication.js +0 -3
  227. package/lib/structures/IReflectApplication.js.map +0 -1
  228. package/lib/structures/MethodType.d.ts +0 -4
  229. package/lib/structures/MethodType.js +0 -8
  230. package/lib/structures/MethodType.js.map +0 -1
  231. package/lib/structures/ParamCategory.d.ts +0 -1
  232. package/lib/structures/ParamCategory.js +0 -3
  233. package/lib/structures/ParamCategory.js.map +0 -1
  234. package/lib/structures/TypeEntry.d.ts +0 -9
  235. package/lib/structures/TypeEntry.js +0 -21
  236. package/lib/structures/TypeEntry.js.map +0 -1
  237. package/lib/transformers/IOperationMetadata.js.map +0 -1
  238. package/lib/transformers/ISdkOperationTransformerContext.d.ts +0 -7
  239. package/lib/transformers/ISdkOperationTransformerContext.js +0 -3
  240. package/lib/transformers/ISdkOperationTransformerContext.js.map +0 -1
  241. package/lib/transformers/SdkOperationProgrammer.d.ts +0 -15
  242. package/lib/transformers/SdkOperationProgrammer.js +0 -186
  243. package/lib/transformers/SdkOperationProgrammer.js.map +0 -1
  244. package/lib/transformers/SdkOperationTransformer.d.ts +0 -4
  245. package/lib/transformers/SdkOperationTransformer.js +0 -128
  246. package/lib/transformers/SdkOperationTransformer.js.map +0 -1
  247. package/lib/transformers/TextPlainValidator.js.map +0 -1
  248. package/lib/utils/MetadataUtil.d.ts +0 -4
  249. package/lib/utils/MetadataUtil.js +0 -34
  250. package/lib/utils/MetadataUtil.js.map +0 -1
  251. package/lib/utils/StripEnums.d.ts +0 -3
  252. package/lib/utils/StripEnums.js +0 -3
  253. package/lib/utils/StripEnums.js.map +0 -1
  254. package/lib/utils/TypeLiteralExpression.d.ts +0 -0
  255. package/lib/utils/TypeLiteralExpression.js +0 -2
  256. package/lib/utils/TypeLiteralExpression.js.map +0 -1
  257. package/src/analyses/DtoAnalyzer.ts +0 -260
  258. package/src/analyses/ExceptionAnalyzer.ts +0 -154
  259. package/src/analyses/GenericAnalyzer.ts +0 -49
  260. package/src/structures/IReflectApplication.ts +0 -8
  261. package/src/structures/MethodType.ts +0 -5
  262. package/src/structures/ParamCategory.ts +0 -1
  263. package/src/structures/TypeEntry.ts +0 -22
  264. package/src/transformers/ISdkOperationTransformerContext.ts +0 -8
  265. package/src/transformers/SdkOperationProgrammer.ts +0 -240
  266. package/src/transformers/SdkOperationTransformer.ts +0 -248
  267. package/src/utils/MetadataUtil.ts +0 -26
  268. package/src/utils/StripEnums.ts +0 -5
  269. package/src/utils/TypeLiteralExpression.ts +0 -0
  270. /package/lib/{transformers → structures}/IOperationMetadata.js +0 -0
@@ -1,18 +1,7 @@
1
- import {
2
- ExpressionFactory,
3
- MetadataAliasType,
4
- MetadataArray,
5
- MetadataAtomic,
6
- MetadataConstantValue,
7
- MetadataEscaped,
8
- MetadataObjectType,
9
- MetadataProperty,
10
- MetadataSchema,
11
- MetadataTuple,
12
- TypeFactory,
13
- } from "@typia/core";
1
+ import { Node, SyntaxKind, TypeScriptFactory } from "@nestia/factory";
2
+ import { ExpressionFactory, TypeFactory } from "@nestia/factory";
3
+ import { MetadataAliasType, MetadataArray, MetadataAtomic, MetadataConstantValue, MetadataEscaped, MetadataObjectType, MetadataProperty, MetadataSchema, MetadataTuple, isSoleLiteralOf, sizeOf } from "../../internal/legacy";
14
4
  import { NamingConvention } from "@typia/utils";
15
- import ts from "typescript";
16
5
  import { IJsDocTagInfo, IMetadataTypeTag } from "typia";
17
6
 
18
7
  import { INestiaProject } from "../../structures/INestiaProject";
@@ -27,13 +16,13 @@ export namespace SdkTypeProgrammer {
27
16
  export const write =
28
17
  (project: INestiaProject) =>
29
18
  (importer: ImportDictionary) =>
30
- (meta: MetadataSchema, parentEscaped: boolean = false): ts.TypeNode => {
31
- const union: ts.TypeNode[] = [];
19
+ (meta: MetadataSchema, parentEscaped: boolean = false): Node => {
20
+ const union: Node[] = [];
32
21
 
33
22
  // COALESCES
34
23
  if (meta.any) union.push(TypeFactory.keyword("any"));
35
24
  if (meta.nullable) union.push(writeNode("null"));
36
- if (meta.isRequired() === false) union.push(writeNode("undefined"));
25
+ if (meta.required === false) union.push(writeNode("undefined"));
37
26
  if (parentEscaped === false && meta.escaped)
38
27
  union.push(write_escaped(project)(importer)(meta.escaped));
39
28
 
@@ -46,43 +35,45 @@ export namespace SdkTypeProgrammer {
46
35
 
47
36
  // OBJECT TYPES
48
37
  for (const tuple of meta.tuples)
49
- union.push(write_tuple(project)(importer)(tuple));
38
+ union.push(write_tuple(project)(importer)(tuple as MetadataTuple));
50
39
  for (const array of meta.arrays)
51
- union.push(write_array(project)(importer)(array));
52
- for (const object of meta.objects)
40
+ union.push(write_array(project)(importer)(array as MetadataArray));
41
+ for (const object of meta.objects) {
42
+ const target = object.type as MetadataObjectType;
53
43
  if (
54
- object.type.name === "object" ||
55
- object.type.name === "__type" ||
56
- object.type.name.startsWith("__type.") ||
57
- object.type.name === "__object" ||
58
- object.type.name.startsWith("__object.")
44
+ target.name === "object" ||
45
+ target.name === "__type" ||
46
+ target.name.startsWith("__type.") ||
47
+ target.name === "__object" ||
48
+ target.name.startsWith("__object.")
59
49
  )
60
- union.push(write_object(project)(importer)(object.type));
61
- else union.push(writeAlias(project)(importer)(object.type));
50
+ union.push(write_object(project)(importer)(target));
51
+ else union.push(writeAlias(project)(importer)(target));
52
+ }
62
53
  for (const alias of meta.aliases)
63
- union.push(writeAlias(project)(importer)(alias.type));
54
+ union.push(writeAlias(project)(importer)(alias.type as MetadataAliasType));
64
55
  for (const native of meta.natives)
65
56
  if (native.name === "Blob" || native.name === "File")
66
57
  union.push(write_native(native.name));
67
58
 
68
59
  return union.length === 1
69
60
  ? union[0]!
70
- : ts.factory.createUnionTypeNode(union);
61
+ : TypeScriptFactory.createUnionTypeNode(union);
71
62
  };
72
63
 
73
64
  export const write_object =
74
65
  (project: INestiaProject) =>
75
66
  (importer: ImportDictionary) =>
76
- (object: MetadataObjectType): ts.TypeNode => {
77
- const regular = object.properties.filter((p) => p.key.isSoleLiteral());
78
- const dynamic = object.properties.filter((p) => !p.key.isSoleLiteral());
67
+ (object: MetadataObjectType): Node => {
68
+ const regular = object.properties.filter((p) => isSoleLiteralOf(p.key));
69
+ const dynamic = object.properties.filter((p) => !isSoleLiteralOf(p.key));
79
70
  return regular.length && dynamic.length
80
- ? ts.factory.createIntersectionTypeNode([
71
+ ? TypeScriptFactory.createIntersectionTypeNode([
81
72
  write_regular_property(project)(importer)(regular),
82
73
  ...dynamic.map(write_dynamic_property(project)(importer)),
83
74
  ])
84
75
  : dynamic.length
85
- ? ts.factory.createIntersectionTypeNode(
76
+ ? TypeScriptFactory.createIntersectionTypeNode(
86
77
  dynamic.map(write_dynamic_property(project)(importer)),
87
78
  )
88
79
  : write_regular_property(project)(importer)(regular);
@@ -91,13 +82,13 @@ export namespace SdkTypeProgrammer {
91
82
  const write_escaped =
92
83
  (project: INestiaProject) =>
93
84
  (importer: ImportDictionary) =>
94
- (meta: MetadataEscaped): ts.TypeNode => {
85
+ (meta: MetadataEscaped): Node => {
95
86
  if (
96
- meta.original.size() === 1 &&
87
+ sizeOf(meta.original) === 1 &&
97
88
  meta.original.natives.length === 1 &&
98
89
  meta.original.natives[0]!.name === "Date"
99
90
  )
100
- return ts.factory.createIntersectionTypeNode([
91
+ return TypeScriptFactory.createIntersectionTypeNode([
101
92
  TypeFactory.keyword("string"),
102
93
  SdkTypeTagProgrammer.write(importer, "string", {
103
94
  name: "Format",
@@ -112,48 +103,50 @@ export namespace SdkTypeProgrammer {
112
103
  ----------------------------------------------------------- */
113
104
  const write_constant = (value: MetadataConstantValue) => {
114
105
  if (typeof value.value === "boolean")
115
- return ts.factory.createLiteralTypeNode(
116
- value ? ts.factory.createTrue() : ts.factory.createFalse(),
106
+ return TypeScriptFactory.createLiteralTypeNode(
107
+ value.value
108
+ ? TypeScriptFactory.createTrue()
109
+ : TypeScriptFactory.createFalse(),
117
110
  );
118
111
  else if (typeof value.value === "bigint")
119
- return ts.factory.createLiteralTypeNode(
112
+ return TypeScriptFactory.createLiteralTypeNode(
120
113
  value.value < BigInt(0)
121
- ? ts.factory.createPrefixUnaryExpression(
122
- ts.SyntaxKind.MinusToken,
123
- ts.factory.createBigIntLiteral((-value).toString()),
114
+ ? TypeScriptFactory.createPrefixUnaryExpression(
115
+ SyntaxKind.MinusToken,
116
+ TypeScriptFactory.createBigIntLiteral((-value.value).toString()),
124
117
  )
125
- : ts.factory.createBigIntLiteral(value.toString()),
118
+ : TypeScriptFactory.createBigIntLiteral(value.value.toString()),
126
119
  );
127
120
  else if (typeof value.value === "number")
128
- return ts.factory.createLiteralTypeNode(
121
+ return TypeScriptFactory.createLiteralTypeNode(
129
122
  ExpressionFactory.number(value.value),
130
123
  );
131
- return ts.factory.createLiteralTypeNode(
132
- ts.factory.createStringLiteral(value.value as string),
124
+ return TypeScriptFactory.createLiteralTypeNode(
125
+ TypeScriptFactory.createStringLiteral(value.value as string),
133
126
  );
134
127
  };
135
128
 
136
129
  const write_template =
137
130
  (project: INestiaProject) =>
138
131
  (importer: ImportDictionary) =>
139
- (meta: MetadataSchema[]): ts.TypeNode => {
140
- const head: boolean = meta[0]!.isSoleLiteral();
141
- const spans: [ts.TypeNode | null, string | null][] = [];
132
+ (meta: MetadataSchema[]): Node => {
133
+ const head: boolean = isSoleLiteralOf(meta[0]!);
134
+ const spans: [Node | null, string | null][] = [];
142
135
  for (const elem of meta.slice(head ? 1 : 0)) {
143
136
  const last =
144
137
  spans.at(-1) ??
145
138
  (() => {
146
- const tuple = [null!, null!] as [ts.TypeNode | null, string | null];
139
+ const tuple = [null!, null!] as [Node | null, string | null];
147
140
  spans.push(tuple);
148
141
  return tuple;
149
142
  })();
150
- if (elem.isSoleLiteral())
143
+ if (isSoleLiteralOf(elem))
151
144
  if (last[1] === null)
152
145
  last[1] = String(elem.constants[0]!.values[0]!.value);
153
146
  else
154
147
  spans.push([
155
- ts.factory.createLiteralTypeNode(
156
- ts.factory.createStringLiteral(
148
+ TypeScriptFactory.createLiteralTypeNode(
149
+ TypeScriptFactory.createStringLiteral(
157
150
  String(elem.constants[0]!.values[0]!.value),
158
151
  ),
159
152
  ),
@@ -162,18 +155,18 @@ export namespace SdkTypeProgrammer {
162
155
  else if (last[0] === null) last[0] = write(project)(importer)(elem);
163
156
  else spans.push([write(project)(importer)(elem), null]);
164
157
  }
165
- return ts.factory.createTemplateLiteralType(
166
- ts.factory.createTemplateHead(
158
+ return TypeScriptFactory.createTemplateLiteralType(
159
+ TypeScriptFactory.createTemplateHead(
167
160
  head ? (meta[0]!.constants[0]!.values[0]!.value as string) : "",
168
161
  ),
169
162
  spans
170
163
  .filter(([node]) => node !== null)
171
164
  .map(([node, str], i, array) =>
172
- ts.factory.createTemplateLiteralTypeSpan(
165
+ TypeScriptFactory.createTemplateLiteralTypeSpan(
173
166
  node!,
174
167
  (i !== array.length - 1
175
- ? ts.factory.createTemplateMiddle
176
- : ts.factory.createTemplateTail)(str ?? ""),
168
+ ? TypeScriptFactory.createTemplateMiddle
169
+ : TypeScriptFactory.createTemplateTail)(str ?? ""),
177
170
  ),
178
171
  ),
179
172
  );
@@ -181,17 +174,17 @@ export namespace SdkTypeProgrammer {
181
174
 
182
175
  const write_atomic =
183
176
  (importer: ImportDictionary) =>
184
- (meta: MetadataAtomic): ts.TypeNode =>
177
+ (meta: MetadataAtomic): Node =>
185
178
  write_type_tag_matrix(importer)(
186
179
  meta.type as "boolean" | "bigint" | "number" | "string",
187
- ts.factory.createKeywordTypeNode(
180
+ TypeScriptFactory.createKeywordTypeNode(
188
181
  meta.type === "boolean"
189
- ? ts.SyntaxKind.BooleanKeyword
182
+ ? SyntaxKind.BooleanKeyword
190
183
  : meta.type === "bigint"
191
- ? ts.SyntaxKind.BigIntKeyword
184
+ ? SyntaxKind.BigIntKeyword
192
185
  : meta.type === "number"
193
- ? ts.SyntaxKind.NumberKeyword
194
- : ts.SyntaxKind.StringKeyword,
186
+ ? SyntaxKind.NumberKeyword
187
+ : SyntaxKind.StringKeyword,
195
188
  ),
196
189
  meta.tags,
197
190
  );
@@ -202,11 +195,11 @@ export namespace SdkTypeProgrammer {
202
195
  const write_array =
203
196
  (project: INestiaProject) =>
204
197
  (importer: ImportDictionary) =>
205
- (meta: MetadataArray): ts.TypeNode =>
198
+ (meta: MetadataArray): Node =>
206
199
  write_type_tag_matrix(importer)(
207
200
  "array",
208
- ts.factory.createArrayTypeNode(
209
- write(project)(importer)(meta.type.value),
201
+ TypeScriptFactory.createArrayTypeNode(
202
+ write(project)(importer)(meta.type!.value),
210
203
  ),
211
204
  meta.tags,
212
205
  );
@@ -214,17 +207,17 @@ export namespace SdkTypeProgrammer {
214
207
  const write_tuple =
215
208
  (project: INestiaProject) =>
216
209
  (importer: ImportDictionary) =>
217
- (meta: MetadataTuple): ts.TypeNode =>
218
- ts.factory.createTupleTypeNode(
219
- meta.type.elements.map((elem) =>
210
+ (meta: MetadataTuple): Node =>
211
+ TypeScriptFactory.createTupleTypeNode(
212
+ meta.type!.elements.map((elem) =>
220
213
  elem.rest
221
- ? ts.factory.createRestTypeNode(
222
- ts.factory.createArrayTypeNode(
214
+ ? TypeScriptFactory.createRestTypeNode(
215
+ TypeScriptFactory.createArrayTypeNode(
223
216
  write(project)(importer)(elem.rest),
224
217
  ),
225
218
  )
226
219
  : elem.optional
227
- ? ts.factory.createOptionalTypeNode(
220
+ ? TypeScriptFactory.createOptionalTypeNode(
228
221
  write(project)(importer)(elem),
229
222
  )
230
223
  : write(project)(importer)(elem),
@@ -234,34 +227,34 @@ export namespace SdkTypeProgrammer {
234
227
  const write_regular_property =
235
228
  (project: INestiaProject) =>
236
229
  (importer: ImportDictionary) =>
237
- (properties: MetadataProperty[]): ts.TypeLiteralNode =>
238
- ts.factory.createTypeLiteralNode(
230
+ (properties: MetadataProperty[]): Node =>
231
+ TypeScriptFactory.createTypeLiteralNode(
239
232
  properties
240
233
  .map((p) => {
241
234
  const description: string = writeComment(p.value.atomics)(
242
235
  p.description,
243
236
  p.jsDocTags,
244
237
  );
245
- const signature: ts.PropertySignature =
246
- ts.factory.createPropertySignature(
238
+ const signature: Node =
239
+ TypeScriptFactory.createPropertySignature(
247
240
  undefined,
248
241
  NamingConvention.variable(
249
242
  String(p.key.constants[0]!.values[0]!.value),
250
243
  )
251
- ? ts.factory.createIdentifier(
244
+ ? TypeScriptFactory.createIdentifier(
252
245
  String(p.key.constants[0]!.values[0]!.value),
253
246
  )
254
- : ts.factory.createStringLiteral(
247
+ : TypeScriptFactory.createStringLiteral(
255
248
  String(p.key.constants[0]!.values[0]!.value),
256
249
  ),
257
- p.value.isRequired() === false
258
- ? ts.factory.createToken(ts.SyntaxKind.QuestionToken)
250
+ p.value.required === false
251
+ ? TypeScriptFactory.createToken(SyntaxKind.QuestionToken)
259
252
  : undefined,
260
253
  SdkTypeProgrammer.write(project)(importer)(p.value),
261
254
  );
262
255
  return !!description.length
263
256
  ? [
264
- ts.factory.createIdentifier("\n") as any,
257
+ TypeScriptFactory.createIdentifier("\n") as any,
265
258
  FilePrinter.description(signature, description),
266
259
  ]
267
260
  : signature;
@@ -272,16 +265,16 @@ export namespace SdkTypeProgrammer {
272
265
  const write_dynamic_property =
273
266
  (project: INestiaProject) =>
274
267
  (importer: ImportDictionary) =>
275
- (property: MetadataProperty): ts.TypeLiteralNode =>
276
- ts.factory.createTypeLiteralNode([
268
+ (property: MetadataProperty): Node =>
269
+ TypeScriptFactory.createTypeLiteralNode([
277
270
  FilePrinter.description(
278
- ts.factory.createIndexSignature(
271
+ TypeScriptFactory.createIndexSignature(
279
272
  undefined,
280
273
  [
281
- ts.factory.createParameterDeclaration(
274
+ TypeScriptFactory.createParameterDeclaration(
282
275
  undefined,
283
276
  undefined,
284
- ts.factory.createIdentifier("key"),
277
+ TypeScriptFactory.createIdentifier("key"),
285
278
  undefined,
286
279
  SdkTypeProgrammer.write(project)(importer)(property.key),
287
280
  ),
@@ -298,13 +291,13 @@ export namespace SdkTypeProgrammer {
298
291
  const writeAlias =
299
292
  (project: INestiaProject) =>
300
293
  (importer: ImportDictionary) =>
301
- (meta: MetadataAliasType | MetadataObjectType): ts.TypeNode => {
294
+ (meta: MetadataAliasType | MetadataObjectType): Node => {
302
295
  importInternalFile(project)(importer)(meta.name);
303
- return ts.factory.createTypeReferenceNode(meta.name);
296
+ return TypeScriptFactory.createTypeReferenceNode(meta.name);
304
297
  };
305
298
 
306
- const write_native = (name: string): ts.TypeNode =>
307
- ts.factory.createTypeReferenceNode(name);
299
+ const write_native = (name: string): Node =>
300
+ TypeScriptFactory.createTypeReferenceNode(name);
308
301
 
309
302
  /* -----------------------------------------------------------
310
303
  MISCELLANEOUS
@@ -313,25 +306,25 @@ export namespace SdkTypeProgrammer {
313
306
  (importer: ImportDictionary) =>
314
307
  (
315
308
  from: "array" | "boolean" | "number" | "bigint" | "string" | "object",
316
- base: ts.TypeNode,
309
+ base: Node,
317
310
  matrix: IMetadataTypeTag[][],
318
- ): ts.TypeNode => {
311
+ ): Node => {
319
312
  matrix = matrix.filter((row) => row.length !== 0);
320
313
  if (matrix.length === 0) return base;
321
314
  else if (matrix.length === 1)
322
- return ts.factory.createIntersectionTypeNode([
315
+ return TypeScriptFactory.createIntersectionTypeNode([
323
316
  base,
324
317
  ...matrix[0]!.map((tag) =>
325
318
  SdkTypeTagProgrammer.write(importer, from, tag),
326
319
  ),
327
320
  ]);
328
- return ts.factory.createIntersectionTypeNode([
321
+ return TypeScriptFactory.createIntersectionTypeNode([
329
322
  base,
330
- ts.factory.createUnionTypeNode(
323
+ TypeScriptFactory.createUnionTypeNode(
331
324
  matrix.map((row) =>
332
325
  row.length === 1
333
326
  ? SdkTypeTagProgrammer.write(importer, from, row[0]!)
334
- : ts.factory.createIntersectionTypeNode(
327
+ : TypeScriptFactory.createIntersectionTypeNode(
335
328
  row.map((tag) =>
336
329
  SdkTypeTagProgrammer.write(importer, from, tag),
337
330
  ),
@@ -342,7 +335,8 @@ export namespace SdkTypeProgrammer {
342
335
  };
343
336
  }
344
337
 
345
- const writeNode = (text: string) => ts.factory.createTypeReferenceNode(text);
338
+ const writeNode = (text: string) =>
339
+ TypeScriptFactory.createTypeReferenceNode(text);
346
340
  const writeComment =
347
341
  (atomics: MetadataAtomic[]) =>
348
342
  (description: string | null, jsDocTags: IJsDocTagInfo[]): string => {
@@ -1,6 +1,6 @@
1
- import { LiteralFactory } from "@typia/core";
1
+ import { TypeScriptFactory } from "@nestia/factory";
2
+ import { LiteralFactory } from "@nestia/factory";
2
3
  import { IMetadataTypeTag } from "@typia/interface";
3
- import ts from "typescript";
4
4
 
5
5
  import { ImportDictionary } from "./ImportDictionary";
6
6
 
@@ -12,9 +12,9 @@ export namespace SdkTypeTagProgrammer {
12
12
  ) => {
13
13
  const name: string = tag.name.split("<")[0]!;
14
14
  if (PREDEFINED[from]?.has(name) === true)
15
- return ts.factory.createTypeReferenceNode(
16
- ts.factory.createQualifiedName(
17
- ts.factory.createIdentifier(
15
+ return TypeScriptFactory.createTypeReferenceNode(
16
+ TypeScriptFactory.createQualifiedName(
17
+ TypeScriptFactory.createIdentifier(
18
18
  importer.external({
19
19
  declaration: true,
20
20
  file: `typia`,
@@ -22,17 +22,17 @@ export namespace SdkTypeTagProgrammer {
22
22
  name: "tags",
23
23
  }),
24
24
  ),
25
- ts.factory.createIdentifier(name),
25
+ TypeScriptFactory.createIdentifier(name),
26
26
  ),
27
27
  [
28
- ts.factory.createLiteralTypeNode(
28
+ TypeScriptFactory.createLiteralTypeNode(
29
29
  LiteralFactory.write(tag.value) as any,
30
30
  ),
31
31
  ],
32
32
  );
33
- return ts.factory.createTypeReferenceNode(
34
- ts.factory.createQualifiedName(
35
- ts.factory.createIdentifier(
33
+ return TypeScriptFactory.createTypeReferenceNode(
34
+ TypeScriptFactory.createQualifiedName(
35
+ TypeScriptFactory.createIdentifier(
36
36
  importer.external({
37
37
  declaration: true,
38
38
  file: `typia`,
@@ -40,10 +40,10 @@ export namespace SdkTypeTagProgrammer {
40
40
  name: "tags",
41
41
  }),
42
42
  ),
43
- ts.factory.createIdentifier("TagBase"),
43
+ TypeScriptFactory.createIdentifier("TagBase"),
44
44
  ),
45
45
  [
46
- ts.factory.createLiteralTypeNode(
46
+ TypeScriptFactory.createLiteralTypeNode(
47
47
  LiteralFactory.write({
48
48
  target: from,
49
49
  kind: tag.kind,