typia 5.3.5-dev.20231206 → 5.3.5

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 (513) hide show
  1. package/README.md +1 -1
  2. package/lib/TypeGuardError.js.map +1 -1
  3. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  4. package/lib/factories/CommentFactory.d.ts +1 -0
  5. package/lib/factories/CommentFactory.js.map +1 -1
  6. package/lib/factories/ExpressionFactory.d.ts +1 -0
  7. package/lib/factories/IdentifierFactory.d.ts +1 -0
  8. package/lib/factories/JsonMetadataFactory.d.ts +1 -0
  9. package/lib/factories/LiteralFactory.d.ts +1 -0
  10. package/lib/factories/MetadataCollection.d.ts +1 -0
  11. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  12. package/lib/factories/MetadataFactory.d.ts +1 -0
  13. package/lib/factories/MetadataFactory.js.map +1 -1
  14. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  15. package/lib/factories/NumericRangeFactory.d.ts +1 -0
  16. package/lib/factories/ProtobufFactory.d.ts +1 -0
  17. package/lib/factories/ProtobufFactory.js.map +1 -1
  18. package/lib/factories/StatementFactory.d.ts +1 -0
  19. package/lib/factories/TemplateFactory.d.ts +1 -0
  20. package/lib/factories/TemplateFactory.js.map +1 -1
  21. package/lib/factories/TypeFactory.d.ts +1 -0
  22. package/lib/factories/TypeFactory.js.map +1 -1
  23. package/lib/factories/ValueFactory.d.ts +1 -0
  24. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  25. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -0
  26. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -0
  27. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -0
  28. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  29. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -0
  30. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -0
  31. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -0
  33. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -0
  35. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -0
  36. package/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts +1 -0
  37. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts +1 -0
  39. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  40. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  41. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  42. package/lib/factories/internal/metadata/iterate_metadata_constant.d.ts +1 -0
  43. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  44. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -0
  45. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -0
  47. package/lib/factories/internal/metadata/iterate_metadata_native.d.ts +1 -0
  48. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -0
  50. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  51. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -0
  52. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -0
  54. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -0
  56. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -0
  57. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -0
  58. package/lib/functional/$HeadersReader.js.map +1 -1
  59. package/lib/functional/$ParameterReader.js.map +1 -1
  60. package/lib/functional/$ProtobufReader.js.map +1 -1
  61. package/lib/functional/$ProtobufSizer.js.map +1 -1
  62. package/lib/functional/$ProtobufWriter.js.map +1 -1
  63. package/lib/functional/$QueryReader.js.map +1 -1
  64. package/lib/functional/$stoll.js.map +1 -1
  65. package/lib/functional/$string.js.map +1 -1
  66. package/lib/functional/$varint.js.map +1 -1
  67. package/lib/functional/$zigzag.js.map +1 -1
  68. package/lib/functional/Namespace.js.map +1 -1
  69. package/lib/http.js.map +1 -1
  70. package/lib/misc.js.map +1 -1
  71. package/lib/programmers/AssertProgrammer.d.ts +1 -0
  72. package/lib/programmers/CheckerProgrammer.d.ts +1 -0
  73. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  74. package/lib/programmers/FeatureProgrammer.d.ts +1 -0
  75. package/lib/programmers/IsProgrammer.d.ts +1 -0
  76. package/lib/programmers/IsProgrammer.js.map +1 -1
  77. package/lib/programmers/RandomProgrammer.d.ts +1 -0
  78. package/lib/programmers/ValidateProgrammer.d.ts +1 -0
  79. package/lib/programmers/helpers/CloneJoiner.d.ts +1 -0
  80. package/lib/programmers/helpers/FunctionImporeter.d.ts +1 -0
  81. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -0
  82. package/lib/programmers/helpers/IExpressionEntry.d.ts +1 -0
  83. package/lib/programmers/helpers/NotationJoiner.d.ts +1 -0
  84. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  85. package/lib/programmers/helpers/PruneJoiner.d.ts +1 -0
  86. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -0
  87. package/lib/programmers/helpers/RandomRanger.d.ts +1 -0
  88. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  89. package/lib/programmers/helpers/StringifyJoinder.d.ts +1 -0
  90. package/lib/programmers/helpers/UnionExplorer.d.ts +1 -0
  91. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  92. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  93. package/lib/programmers/http/HttpAssertHeadersProgrammer.d.ts +1 -0
  94. package/lib/programmers/http/HttpAssertQueryProgrammer.d.ts +1 -0
  95. package/lib/programmers/http/HttpHeadersProgrammer.d.ts +1 -0
  96. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  97. package/lib/programmers/http/HttpIsHeadersProgrammer.d.ts +1 -0
  98. package/lib/programmers/http/HttpIsQueryProgrammer.d.ts +1 -0
  99. package/lib/programmers/http/HttpParameterProgrammer.d.ts +1 -0
  100. package/lib/programmers/http/HttpQueryProgrammer.d.ts +1 -0
  101. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  102. package/lib/programmers/http/HttpValidateHeadersProgrammer.d.ts +1 -0
  103. package/lib/programmers/http/HttpValidateQueryProgrammer.d.ts +1 -0
  104. package/lib/programmers/internal/application_alias.js.map +1 -1
  105. package/lib/programmers/internal/application_escaped.js.map +1 -1
  106. package/lib/programmers/internal/application_native.js.map +1 -1
  107. package/lib/programmers/internal/application_number.js.map +1 -1
  108. package/lib/programmers/internal/application_object.js.map +1 -1
  109. package/lib/programmers/internal/application_schema.js.map +1 -1
  110. package/lib/programmers/internal/check_dynamic_key.d.ts +1 -0
  111. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  112. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  113. package/lib/programmers/json/JsonAssertParseProgrammer.d.ts +1 -0
  114. package/lib/programmers/json/JsonAssertStringifyProgrammer.d.ts +1 -0
  115. package/lib/programmers/json/JsonIsParseProgrammer.d.ts +1 -0
  116. package/lib/programmers/json/JsonIsStringifyProgrammer.d.ts +1 -0
  117. package/lib/programmers/json/JsonStringifyProgrammer.d.ts +1 -0
  118. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  119. package/lib/programmers/json/JsonValidateParseProgrammer.d.ts +1 -0
  120. package/lib/programmers/json/JsonValidateStringifyProgrammer.d.ts +1 -0
  121. package/lib/programmers/misc/MiscAssertCloneProgrammer.d.ts +1 -0
  122. package/lib/programmers/misc/MiscAssertPruneProgrammer.d.ts +1 -0
  123. package/lib/programmers/misc/MiscCloneProgrammer.d.ts +1 -0
  124. package/lib/programmers/misc/MiscIsCloneProgrammer.d.ts +1 -0
  125. package/lib/programmers/misc/MiscIsPruneProgrammer.d.ts +1 -0
  126. package/lib/programmers/misc/MiscLiteralsProgrammer.d.ts +1 -0
  127. package/lib/programmers/misc/MiscPruneProgrammer.d.ts +1 -0
  128. package/lib/programmers/misc/MiscValidateCloneProgrammer.d.ts +1 -0
  129. package/lib/programmers/misc/MiscValidatePruneProgrammer.d.ts +1 -0
  130. package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +1 -0
  131. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +1 -0
  132. package/lib/programmers/notations/NotationIsGeneralProgrammer.d.ts +1 -0
  133. package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +1 -0
  134. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.d.ts +1 -0
  135. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.d.ts +1 -0
  136. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.d.ts +1 -0
  137. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  138. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.d.ts +1 -0
  139. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +2 -2
  140. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  141. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.d.ts +1 -0
  142. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.d.ts +1 -0
  143. package/lib/programmers/protobuf/ProtobufMessageProgrammer.d.ts +1 -0
  144. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.d.ts +1 -0
  146. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.d.ts +1 -0
  147. package/lib/schemas/metadata/Metadata.js.map +1 -1
  148. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  149. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
  150. package/lib/transform.d.ts +1 -0
  151. package/lib/transformers/CallExpressionTransformer.d.ts +1 -0
  152. package/lib/transformers/FileTransformer.d.ts +1 -0
  153. package/lib/transformers/FileTransformer.js.map +1 -1
  154. package/lib/transformers/IProject.d.ts +1 -0
  155. package/lib/transformers/ImportTransformer.d.ts +1 -0
  156. package/lib/transformers/NodeTransformer.d.ts +1 -0
  157. package/lib/transformers/TransformerError.js.map +1 -1
  158. package/lib/transformers/features/CreateRandomTransformer.d.ts +1 -0
  159. package/lib/transformers/features/RandomTransformer.d.ts +1 -0
  160. package/lib/transformers/features/json/JsonApplicationTransformer.d.ts +1 -0
  161. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  162. package/lib/transformers/features/misc/MiscLiteralsTransformer.d.ts +1 -0
  163. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.d.ts +1 -0
  164. package/lib/transformers/features/reflect/ReflectMetadataTransformer.d.ts +1 -0
  165. package/lib/transformers/internal/GenericTransformer.d.ts +1 -0
  166. package/lib/utils/NamingConvention.js.map +1 -1
  167. package/package.json +7 -2
  168. package/src/AssertionGuard.ts +1 -1
  169. package/src/CamelCase.ts +114 -114
  170. package/src/IRandomGenerator.ts +35 -35
  171. package/src/IValidation.ts +21 -21
  172. package/src/PascalCase.ts +114 -114
  173. package/src/Primitive.ts +135 -135
  174. package/src/Resolved.ts +116 -116
  175. package/src/SnakeCase.ts +156 -156
  176. package/src/TypeGuardError.ts +36 -36
  177. package/src/executable/TypiaGenerateWizard.ts +83 -83
  178. package/src/executable/TypiaPatchWizard.ts +42 -42
  179. package/src/executable/TypiaSetupWizard.ts +151 -151
  180. package/src/executable/setup/ArgumentParser.ts +43 -43
  181. package/src/executable/setup/CommandExecutor.ts +8 -8
  182. package/src/executable/setup/FileRetriever.ts +22 -22
  183. package/src/executable/setup/PackageManager.ts +71 -71
  184. package/src/executable/setup/PluginConfigurator.ts +69 -69
  185. package/src/executable/typia.ts +55 -55
  186. package/src/factories/CommentFactory.ts +79 -79
  187. package/src/factories/ExpressionFactory.ts +150 -150
  188. package/src/factories/IdentifierFactory.ts +70 -70
  189. package/src/factories/JsonMetadataFactory.ts +53 -53
  190. package/src/factories/LiteralFactory.ts +47 -47
  191. package/src/factories/MetadataCollection.ts +269 -269
  192. package/src/factories/MetadataCommentTagFactory.ts +601 -601
  193. package/src/factories/MetadataFactory.ts +267 -267
  194. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  195. package/src/factories/NumericRangeFactory.ts +72 -72
  196. package/src/factories/ProtobufFactory.ts +259 -259
  197. package/src/factories/StatementFactory.ts +72 -72
  198. package/src/factories/TemplateFactory.ts +56 -56
  199. package/src/factories/TypeFactory.ts +118 -118
  200. package/src/factories/ValueFactory.ts +12 -12
  201. package/src/factories/internal/metadata/MetadataHelper.ts +15 -15
  202. package/src/factories/internal/metadata/emend_metadata_atomics.ts +37 -37
  203. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  204. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +38 -38
  205. package/src/factories/internal/metadata/emplace_metadata_object.ts +175 -175
  206. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  207. package/src/factories/internal/metadata/explore_metadata.ts +28 -28
  208. package/src/factories/internal/metadata/iterate_metadata.ts +94 -94
  209. package/src/factories/internal/metadata/iterate_metadata_alias.ts +34 -34
  210. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  211. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  212. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  213. package/src/factories/internal/metadata/iterate_metadata_collection.ts +131 -131
  214. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  215. package/src/factories/internal/metadata/iterate_metadata_constant.ts +48 -48
  216. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +230 -230
  217. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  218. package/src/factories/internal/metadata/iterate_metadata_native.ts +208 -208
  219. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  220. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  221. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  222. package/src/factories/internal/metadata/iterate_metadata_sort.ts +61 -61
  223. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  224. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  225. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  226. package/src/functional/$HeadersReader.ts +28 -28
  227. package/src/functional/$ParameterReader.ts +31 -31
  228. package/src/functional/$ProtobufReader.ts +195 -195
  229. package/src/functional/$ProtobufSizer.ts +147 -147
  230. package/src/functional/$ProtobufWriter.ts +150 -150
  231. package/src/functional/$QueryReader.ts +56 -56
  232. package/src/functional/$any.ts +4 -4
  233. package/src/functional/$clone.ts +4 -4
  234. package/src/functional/$convention.ts +37 -37
  235. package/src/functional/$dictionary.ts +22 -22
  236. package/src/functional/$every.ts +11 -11
  237. package/src/functional/$from.ts +5 -5
  238. package/src/functional/$guard.ts +35 -35
  239. package/src/functional/$is_between.ts +2 -2
  240. package/src/functional/$join.ts +46 -46
  241. package/src/functional/$number.ts +12 -12
  242. package/src/functional/$report.ts +13 -13
  243. package/src/functional/$rest.ts +3 -3
  244. package/src/functional/$stoll.ts +8 -8
  245. package/src/functional/$string.ts +50 -50
  246. package/src/functional/$strlen.ts +7 -7
  247. package/src/functional/$tail.ts +5 -5
  248. package/src/functional/$varint.ts +130 -130
  249. package/src/functional/$zigzag.ts +39 -39
  250. package/src/functional/IProtobufWriter.ts +18 -18
  251. package/src/functional/Namespace.ts +174 -174
  252. package/src/http.ts +1149 -1149
  253. package/src/json.ts +648 -648
  254. package/src/misc.ts +651 -651
  255. package/src/module.ts +897 -897
  256. package/src/notations.ts +855 -855
  257. package/src/programmers/AssertProgrammer.ts +293 -293
  258. package/src/programmers/CheckerProgrammer.ts +1025 -1025
  259. package/src/programmers/FeatureProgrammer.ts +460 -460
  260. package/src/programmers/IsProgrammer.ts +232 -232
  261. package/src/programmers/RandomProgrammer.ts +825 -825
  262. package/src/programmers/TypiaProgrammer.ts +167 -167
  263. package/src/programmers/ValidateProgrammer.ts +307 -307
  264. package/src/programmers/helpers/AtomicPredicator.ts +25 -25
  265. package/src/programmers/helpers/CloneJoiner.ts +130 -130
  266. package/src/programmers/helpers/FunctionImporeter.ts +87 -87
  267. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  268. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  269. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  270. package/src/programmers/helpers/NotationJoiner.ts +132 -132
  271. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  272. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  273. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  274. package/src/programmers/helpers/PruneJoiner.ts +141 -141
  275. package/src/programmers/helpers/RandomJoiner.ts +140 -140
  276. package/src/programmers/helpers/RandomRanger.ts +171 -171
  277. package/src/programmers/helpers/StringifyJoinder.ts +105 -105
  278. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  279. package/src/programmers/helpers/UnionExplorer.ts +269 -269
  280. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  281. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  282. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +77 -77
  283. package/src/programmers/http/HttpAssertQueryProgrammer.ts +75 -75
  284. package/src/programmers/http/HttpHeadersProgrammer.ts +314 -314
  285. package/src/programmers/http/HttpIsHeadersProgrammer.ts +84 -84
  286. package/src/programmers/http/HttpIsQueryProgrammer.ts +82 -82
  287. package/src/programmers/http/HttpParameterProgrammer.ts +97 -97
  288. package/src/programmers/http/HttpQueryProgrammer.ts +252 -252
  289. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +77 -77
  290. package/src/programmers/http/HttpValidateQueryProgrammer.ts +75 -75
  291. package/src/programmers/internal/application_alias.ts +65 -65
  292. package/src/programmers/internal/application_array.ts +59 -59
  293. package/src/programmers/internal/application_boolean.ts +30 -30
  294. package/src/programmers/internal/application_constant.ts +26 -26
  295. package/src/programmers/internal/application_default.ts +17 -17
  296. package/src/programmers/internal/application_default_string.ts +33 -33
  297. package/src/programmers/internal/application_escaped.ts +53 -53
  298. package/src/programmers/internal/application_native.ts +38 -38
  299. package/src/programmers/internal/application_number.ts +94 -94
  300. package/src/programmers/internal/application_object.ts +153 -153
  301. package/src/programmers/internal/application_schema.ts +180 -180
  302. package/src/programmers/internal/application_string.ts +58 -58
  303. package/src/programmers/internal/application_templates.ts +25 -25
  304. package/src/programmers/internal/application_tuple.ts +55 -55
  305. package/src/programmers/internal/check_array_length.ts +45 -45
  306. package/src/programmers/internal/check_bigint.ts +49 -49
  307. package/src/programmers/internal/check_dynamic_key.ts +175 -175
  308. package/src/programmers/internal/check_dynamic_properties.ts +198 -198
  309. package/src/programmers/internal/check_everything.ts +23 -23
  310. package/src/programmers/internal/check_native.ts +21 -21
  311. package/src/programmers/internal/check_number.ts +106 -106
  312. package/src/programmers/internal/check_object.ts +60 -60
  313. package/src/programmers/internal/check_string.ts +48 -48
  314. package/src/programmers/internal/check_template.ts +61 -61
  315. package/src/programmers/internal/check_union_array_like.ts +307 -307
  316. package/src/programmers/internal/decode_union_object.ts +78 -78
  317. package/src/programmers/internal/feature_object_entries.ts +58 -58
  318. package/src/programmers/internal/metadata_to_pattern.ts +33 -33
  319. package/src/programmers/internal/prune_object_properties.ts +60 -60
  320. package/src/programmers/internal/random_custom.ts +37 -37
  321. package/src/programmers/internal/stringify_dynamic_properties.ts +157 -157
  322. package/src/programmers/internal/stringify_native.ts +7 -7
  323. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  324. package/src/programmers/internal/template_to_pattern.ts +15 -15
  325. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  326. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  327. package/src/programmers/json/JsonAssertParseProgrammer.ts +67 -67
  328. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +61 -61
  329. package/src/programmers/json/JsonIsParseProgrammer.ts +73 -73
  330. package/src/programmers/json/JsonIsStringifyProgrammer.ts +75 -75
  331. package/src/programmers/json/JsonStringifyProgrammer.ts +893 -893
  332. package/src/programmers/json/JsonValidateParseProgrammer.ts +64 -64
  333. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +83 -83
  334. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +63 -63
  335. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +60 -60
  336. package/src/programmers/misc/MiscCloneProgrammer.ts +713 -713
  337. package/src/programmers/misc/MiscIsCloneProgrammer.ts +70 -70
  338. package/src/programmers/misc/MiscIsPruneProgrammer.ts +66 -66
  339. package/src/programmers/misc/MiscLiteralsProgrammer.ts +72 -72
  340. package/src/programmers/misc/MiscPruneProgrammer.ts +523 -523
  341. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +80 -80
  342. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +73 -73
  343. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +64 -64
  344. package/src/programmers/notations/NotationGeneralProgrammer.ts +647 -647
  345. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +71 -71
  346. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +81 -81
  347. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  348. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +61 -61
  349. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +607 -607
  350. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +819 -819
  351. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +82 -82
  352. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +75 -75
  353. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +160 -160
  354. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  355. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +83 -83
  356. package/src/protobuf.ts +887 -887
  357. package/src/reflect.ts +24 -24
  358. package/src/schemas/json/IJsonApplication.ts +8 -8
  359. package/src/schemas/json/IJsonComponents.ts +36 -36
  360. package/src/schemas/json/IJsonSchema.ts +113 -113
  361. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  362. package/src/schemas/metadata/IMetadata.ts +34 -34
  363. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  364. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  365. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  366. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  367. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  368. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  369. package/src/schemas/metadata/IMetadataConstant.ts +23 -23
  370. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  371. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  372. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  373. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  374. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  375. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  376. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  377. package/src/schemas/metadata/IMetadataTypeTag.ts +15 -15
  378. package/src/schemas/metadata/Metadata.ts +612 -612
  379. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  380. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  381. package/src/schemas/metadata/MetadataArray.ts +49 -49
  382. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  383. package/src/schemas/metadata/MetadataAtomic.ts +84 -84
  384. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  385. package/src/schemas/metadata/MetadataConstant.ts +46 -46
  386. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  387. package/src/schemas/metadata/MetadataObject.ts +135 -135
  388. package/src/schemas/metadata/MetadataProperty.ts +56 -56
  389. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  390. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  391. package/src/tags/Default.ts +15 -15
  392. package/src/tags/ExclusiveMaximum.ts +13 -13
  393. package/src/tags/ExclusiveMinimum.ts +13 -13
  394. package/src/tags/Format.ts +30 -30
  395. package/src/tags/MaxItems.ts +9 -9
  396. package/src/tags/MaxLength.ts +9 -9
  397. package/src/tags/Maximum.ts +13 -13
  398. package/src/tags/MinItems.ts +9 -9
  399. package/src/tags/MinLength.ts +9 -9
  400. package/src/tags/Minimum.ts +13 -13
  401. package/src/tags/MultipleOf.ts +15 -15
  402. package/src/tags/Pattern.ts +9 -9
  403. package/src/tags/TagBase.ts +68 -68
  404. package/src/tags/Type.ts +27 -27
  405. package/src/transform.ts +35 -35
  406. package/src/transformers/CallExpressionTransformer.ts +351 -351
  407. package/src/transformers/FileTransformer.ts +91 -91
  408. package/src/transformers/IProject.ts +15 -15
  409. package/src/transformers/ITransformOptions.ts +62 -62
  410. package/src/transformers/ImportTransformer.ts +66 -66
  411. package/src/transformers/NodeTransformer.ts +13 -13
  412. package/src/transformers/TransformerError.ts +55 -55
  413. package/src/transformers/features/AssertTransformer.ts +16 -16
  414. package/src/transformers/features/CreateAssertTransformer.ts +16 -16
  415. package/src/transformers/features/CreateIsTransformer.ts +10 -10
  416. package/src/transformers/features/CreateRandomTransformer.ts +40 -40
  417. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  418. package/src/transformers/features/IsTransformer.ts +10 -10
  419. package/src/transformers/features/RandomTransformer.ts +44 -44
  420. package/src/transformers/features/ValidateTransformer.ts +11 -11
  421. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +11 -11
  422. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +9 -9
  423. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +9 -9
  424. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +9 -9
  425. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +9 -9
  426. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +9 -9
  427. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +9 -9
  428. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +12 -12
  429. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +11 -11
  430. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +9 -9
  431. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +9 -9
  432. package/src/transformers/features/http/HttpHeadersTransformer.ts +9 -9
  433. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +9 -9
  434. package/src/transformers/features/http/HttpIsQueryTransformer.ts +9 -9
  435. package/src/transformers/features/http/HttpParameterTransformer.ts +9 -9
  436. package/src/transformers/features/http/HttpQueryTransformer.ts +9 -9
  437. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +10 -10
  438. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +9 -9
  439. package/src/transformers/features/json/JsonApplicationTransformer.ts +121 -121
  440. package/src/transformers/features/json/JsonAssertParseTransformer.ts +9 -9
  441. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  442. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +9 -9
  443. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  444. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  445. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +9 -9
  446. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  447. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +11 -11
  448. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  449. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  450. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +9 -9
  451. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  452. package/src/transformers/features/json/JsonValidateParseTransformer.ts +9 -9
  453. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  454. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +9 -9
  455. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +9 -9
  456. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  457. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +9 -9
  458. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +9 -9
  459. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  460. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  461. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  462. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  463. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +11 -11
  464. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +11 -11
  465. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  466. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  467. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  468. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  469. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +9 -9
  470. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +9 -9
  471. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -15
  472. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -15
  473. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -15
  474. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -15
  475. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +15 -15
  476. package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -11
  477. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -15
  478. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +15 -15
  479. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  480. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  481. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +12 -12
  482. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +12 -12
  483. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +9 -9
  484. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +9 -9
  485. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +9 -9
  486. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +9 -9
  487. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +12 -12
  488. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +12 -12
  489. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +9 -9
  490. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +9 -9
  491. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +9 -9
  492. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +9 -9
  493. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  494. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +10 -10
  495. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +10 -10
  496. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +73 -73
  497. package/src/transformers/internal/GenericTransformer.ts +96 -96
  498. package/src/typings/Atomic.ts +13 -13
  499. package/src/typings/ClassProperties.ts +5 -5
  500. package/src/typings/Customizable.ts +5 -5
  501. package/src/typings/ProtobufAtomic.ts +19 -19
  502. package/src/typings/SpecialFields.ts +3 -3
  503. package/src/typings/ValidationPipe.ts +9 -9
  504. package/src/typings/Writable.ts +11 -11
  505. package/src/utils/ArrayUtil.ts +43 -43
  506. package/src/utils/Escaper.ts +46 -46
  507. package/src/utils/MapUtil.ts +12 -12
  508. package/src/utils/NameEncoder.ts +32 -32
  509. package/src/utils/NamingConvention.ts +87 -87
  510. package/src/utils/PatternUtil.ts +29 -29
  511. package/src/utils/RandomGenerator.ts +83 -83
  512. package/src/utils/Singleton.ts +16 -16
  513. package/src/utils/StringUtil.ts +4 -4
@@ -1,83 +1,83 @@
1
- import fs from "fs";
2
-
3
- import { TypiaProgrammer } from "../programmers/TypiaProgrammer";
4
-
5
- import { ArgumentParser } from "./setup/ArgumentParser";
6
- import { PackageManager } from "./setup/PackageManager";
7
-
8
- export namespace TypiaGenerateWizard {
9
- export async function generate(): Promise<void> {
10
- console.log("----------------------------------------");
11
- console.log(" Typia Generate Wizard");
12
- console.log("----------------------------------------");
13
-
14
- // LOAD PACKAGE.JSON INFO
15
- const pack: PackageManager = await PackageManager.mount();
16
- const options: IArguments = await ArgumentParser.parse(pack)(inquiry);
17
- await TypiaProgrammer.build(options);
18
- }
19
-
20
- const inquiry: ArgumentParser.Inquiry<IArguments> = async (
21
- _pack,
22
- command,
23
- prompt,
24
- action,
25
- ) => {
26
- // PREPARE ASSETS
27
- command.option("--input [path]", "input directory");
28
- command.option("--output [directory]", "output directory");
29
- command.option("--project [project]", "tsconfig.json file location");
30
-
31
- const questioned = { value: false };
32
-
33
- const input = (name: string) => async (message: string) => {
34
- const result = await prompt()({
35
- type: "input",
36
- name,
37
- message,
38
- default: "",
39
- });
40
- return result[name] as string;
41
- };
42
- const select =
43
- (name: string) =>
44
- (message: string) =>
45
- async <Choice extends string>(choices: Choice[]): Promise<Choice> => {
46
- questioned.value = true;
47
- return (
48
- await prompt()({
49
- type: "list",
50
- name: name,
51
- message: message,
52
- choices: choices,
53
- })
54
- )[name];
55
- };
56
- const configure = async (): Promise<string> => {
57
- const files: string[] = await (
58
- await fs.promises.readdir(process.cwd())
59
- ).filter(
60
- (str) =>
61
- str.substring(0, 8) === "tsconfig" &&
62
- str.substring(str.length - 5) === ".json",
63
- );
64
- if (files.length === 0)
65
- throw new URIError(`Unable to find "tsconfig.json" file.`);
66
- else if (files.length === 1) return files[0]!;
67
- return select("tsconfig")("TS Config File")(files);
68
- };
69
-
70
- return action(async (options) => {
71
- options.input ??= await input("input")("input directory");
72
- options.output ??= await input("output")("output directory");
73
- options.project ??= await configure();
74
- return options as IArguments;
75
- });
76
- };
77
-
78
- export interface IArguments {
79
- input: string;
80
- output: string;
81
- project: string;
82
- }
83
- }
1
+ import fs from "fs";
2
+
3
+ import { TypiaProgrammer } from "../programmers/TypiaProgrammer";
4
+
5
+ import { ArgumentParser } from "./setup/ArgumentParser";
6
+ import { PackageManager } from "./setup/PackageManager";
7
+
8
+ export namespace TypiaGenerateWizard {
9
+ export async function generate(): Promise<void> {
10
+ console.log("----------------------------------------");
11
+ console.log(" Typia Generate Wizard");
12
+ console.log("----------------------------------------");
13
+
14
+ // LOAD PACKAGE.JSON INFO
15
+ const pack: PackageManager = await PackageManager.mount();
16
+ const options: IArguments = await ArgumentParser.parse(pack)(inquiry);
17
+ await TypiaProgrammer.build(options);
18
+ }
19
+
20
+ const inquiry: ArgumentParser.Inquiry<IArguments> = async (
21
+ _pack,
22
+ command,
23
+ prompt,
24
+ action,
25
+ ) => {
26
+ // PREPARE ASSETS
27
+ command.option("--input [path]", "input directory");
28
+ command.option("--output [directory]", "output directory");
29
+ command.option("--project [project]", "tsconfig.json file location");
30
+
31
+ const questioned = { value: false };
32
+
33
+ const input = (name: string) => async (message: string) => {
34
+ const result = await prompt()({
35
+ type: "input",
36
+ name,
37
+ message,
38
+ default: "",
39
+ });
40
+ return result[name] as string;
41
+ };
42
+ const select =
43
+ (name: string) =>
44
+ (message: string) =>
45
+ async <Choice extends string>(choices: Choice[]): Promise<Choice> => {
46
+ questioned.value = true;
47
+ return (
48
+ await prompt()({
49
+ type: "list",
50
+ name: name,
51
+ message: message,
52
+ choices: choices,
53
+ })
54
+ )[name];
55
+ };
56
+ const configure = async (): Promise<string> => {
57
+ const files: string[] = await (
58
+ await fs.promises.readdir(process.cwd())
59
+ ).filter(
60
+ (str) =>
61
+ str.substring(0, 8) === "tsconfig" &&
62
+ str.substring(str.length - 5) === ".json",
63
+ );
64
+ if (files.length === 0)
65
+ throw new URIError(`Unable to find "tsconfig.json" file.`);
66
+ else if (files.length === 1) return files[0]!;
67
+ return select("tsconfig")("TS Config File")(files);
68
+ };
69
+
70
+ return action(async (options) => {
71
+ options.input ??= await input("input")("input directory");
72
+ options.output ??= await input("output")("output directory");
73
+ options.project ??= await configure();
74
+ return options as IArguments;
75
+ });
76
+ };
77
+
78
+ export interface IArguments {
79
+ input: string;
80
+ output: string;
81
+ project: string;
82
+ }
83
+ }
@@ -1,42 +1,42 @@
1
- import fs from "fs";
2
-
3
- export namespace TypiaPatchWizard {
4
- export const main = async (): Promise<void> => {
5
- console.log("----------------------------------------");
6
- console.log(" Typia Setup Wizard");
7
- console.log("----------------------------------------");
8
- console.log(
9
- [
10
- `Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments.`,
11
- ``,
12
- `Therefore, "typia" revives the JSDoc parsing feature by patching "tsc".`,
13
- ``,
14
- `This is a temporary feature of "typia", and it would be removed when "ts-patch" being updated.`,
15
- ].join("\n"),
16
- );
17
-
18
- await patch();
19
- };
20
-
21
- export const patch = async (): Promise<void> => {
22
- const location: string = require.resolve("typescript/lib/tsc.js");
23
- const content: string = await fs.promises.readFile(location, "utf8");
24
- if (content.indexOf(FROM_WITH_COMMENT) !== -1)
25
- await fs.promises.writeFile(
26
- location,
27
- content.replace(FROM_WITH_COMMENT, TO_WITH_COMMENT),
28
- "utf8",
29
- );
30
- else if (content.indexOf(FROM_ONLY) !== -1)
31
- await fs.promises.writeFile(
32
- location,
33
- content.replace(FROM_ONLY, TO_ONLY),
34
- "utf8",
35
- );
36
- };
37
- }
38
-
39
- const FROM_WITH_COMMENT = `var defaultJSDocParsingMode = 2 /* ParseForTypeErrors */`;
40
- const TO_WITH_COMMENT = `var defaultJSDocParsingMode = 0 /* ParseAll */`;
41
- const FROM_ONLY = `var defaultJSDocParsingMode = 2`;
42
- const TO_ONLY = `var defaultJSDocParsingMode = 0`;
1
+ import fs from "fs";
2
+
3
+ export namespace TypiaPatchWizard {
4
+ export const main = async (): Promise<void> => {
5
+ console.log("----------------------------------------");
6
+ console.log(" Typia Setup Wizard");
7
+ console.log("----------------------------------------");
8
+ console.log(
9
+ [
10
+ `Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments.`,
11
+ ``,
12
+ `Therefore, "typia" revives the JSDoc parsing feature by patching "tsc".`,
13
+ ``,
14
+ `This is a temporary feature of "typia", and it would be removed when "ts-patch" being updated.`,
15
+ ].join("\n"),
16
+ );
17
+
18
+ await patch();
19
+ };
20
+
21
+ export const patch = async (): Promise<void> => {
22
+ const location: string = require.resolve("typescript/lib/tsc.js");
23
+ const content: string = await fs.promises.readFile(location, "utf8");
24
+ if (content.indexOf(FROM_WITH_COMMENT) !== -1)
25
+ await fs.promises.writeFile(
26
+ location,
27
+ content.replace(FROM_WITH_COMMENT, TO_WITH_COMMENT),
28
+ "utf8",
29
+ );
30
+ else if (content.indexOf(FROM_ONLY) !== -1)
31
+ await fs.promises.writeFile(
32
+ location,
33
+ content.replace(FROM_ONLY, TO_ONLY),
34
+ "utf8",
35
+ );
36
+ };
37
+ }
38
+
39
+ const FROM_WITH_COMMENT = `var defaultJSDocParsingMode = 2 /* ParseForTypeErrors */`;
40
+ const TO_WITH_COMMENT = `var defaultJSDocParsingMode = 0 /* ParseAll */`;
41
+ const FROM_ONLY = `var defaultJSDocParsingMode = 2`;
42
+ const TO_ONLY = `var defaultJSDocParsingMode = 0`;
@@ -1,151 +1,151 @@
1
- import fs from "fs";
2
-
3
- import { ArgumentParser } from "./setup/ArgumentParser";
4
- import { CommandExecutor } from "./setup/CommandExecutor";
5
- import { PackageManager } from "./setup/PackageManager";
6
- import { PluginConfigurator } from "./setup/PluginConfigurator";
7
-
8
- export namespace TypiaSetupWizard {
9
- export interface IArguments {
10
- manager: "npm" | "pnpm" | "yarn";
11
- project: string | null;
12
- }
13
-
14
- export async function setup(): Promise<void> {
15
- console.log("----------------------------------------");
16
- console.log(" Typia Setup Wizard");
17
- console.log("----------------------------------------");
18
-
19
- // PREPARE ASSETS
20
- const pack: PackageManager = await PackageManager.mount();
21
- const args: IArguments = await ArgumentParser.parse(pack)(inquiry);
22
-
23
- // INSTALL TYPESCRIPT COMPILERS
24
- pack.install({ dev: true, modulo: "ts-patch", version: "latest" });
25
- pack.install({ dev: true, modulo: "ts-node", version: "latest" });
26
- pack.install({ dev: true, modulo: "typescript", version: "5.3.2" });
27
- args.project ??= (() => {
28
- const runner: string = pack.manager === "npm" ? "npx" : pack.manager;
29
- CommandExecutor.run(`${runner} tsc --init`);
30
- return (args.project = "tsconfig.json");
31
- })();
32
-
33
- // SETUP TRANSFORMER
34
- await pack.save((data) => {
35
- // COMPOSE PREPARE COMMAND
36
- data.scripts ??= {};
37
- if (
38
- typeof data.scripts.prepare === "string" &&
39
- data.scripts.prepare.trim().length
40
- ) {
41
- if (
42
- data.scripts.prepare.indexOf("ts-patch install") === -1 &&
43
- data.scripts.prepare.indexOf("typia patch") === -1
44
- )
45
- data.scripts.prepare =
46
- "ts-patch install && typia patch && " + data.scripts.prepare;
47
- else if (data.scripts.prepare.indexOf("ts-patch install") === -1)
48
- data.scripts.prepare = "ts-patch install && " + data.scripts.prepare;
49
- else if (data.scripts.prepare.indexOf("typia patch") === -1)
50
- data.scripts.prepare = data.scripts.prepare.replace(
51
- "ts-patch install",
52
- "ts-patch install && typia patch",
53
- );
54
- } else data.scripts.prepare = "ts-patch install && typia patch";
55
-
56
- // FOR OLDER VERSIONS
57
- if (typeof data.scripts.postinstall === "string") {
58
- data.scripts.postinstall = data.scripts.postinstall
59
- .split("&&")
60
- .map((str) => str.trim())
61
- .filter((str) => str.indexOf("ts-patch install") === -1)
62
- .join(" && ");
63
- if (data.scripts.postinstall.length === 0)
64
- delete data.scripts.postinstall;
65
- }
66
- });
67
-
68
- // CONFIGURE TYPIA
69
- await PluginConfigurator.configure(args);
70
- CommandExecutor.run(`${pack.manager} run prepare`);
71
- }
72
-
73
- const inquiry: ArgumentParser.Inquiry<IArguments> = async (
74
- pack,
75
- command,
76
- prompt,
77
- action,
78
- ) => {
79
- // PREPARE ASSETS
80
- command.option("--manager [manager", "package manager");
81
- command.option("--project [project]", "tsconfig.json file location");
82
-
83
- // INTERNAL PROCEDURES
84
- const questioned = { value: false };
85
- const select =
86
- (name: string) =>
87
- (message: string) =>
88
- async <Choice extends string>(
89
- choices: Choice[],
90
- filter?: (choice: string) => Choice,
91
- ): Promise<Choice> => {
92
- questioned.value = true;
93
- return (
94
- await prompt()({
95
- type: "list",
96
- name: name,
97
- message: message,
98
- choices: choices,
99
- ...(filter
100
- ? {
101
- filter,
102
- }
103
- : {}),
104
- })
105
- )[name];
106
- };
107
- const configure = async (): Promise<string | null> => {
108
- const fileList: string[] = await (
109
- await fs.promises.readdir(process.cwd())
110
- )
111
- .filter(
112
- (str) =>
113
- str.substring(0, 8) === "tsconfig" &&
114
- str.substring(str.length - 5) === ".json",
115
- )
116
- .sort((x, y) =>
117
- x === "tsconfig.json"
118
- ? -1
119
- : y === "tsconfig.json"
120
- ? 1
121
- : x < y
122
- ? -1
123
- : 1,
124
- );
125
- if (fileList.length === 0) {
126
- if (process.cwd() !== pack.directory)
127
- throw new URIError(`Unable to find "tsconfig.json" file.`);
128
- return null;
129
- } else if (fileList.length === 1) return fileList[0]!;
130
- return select("tsconfig")("TS Config File")(fileList);
131
- };
132
-
133
- // DO CONSTRUCT
134
- return action(async (options) => {
135
- pack.manager = options.manager ??= await select("manager")(
136
- "Package Manager",
137
- )(
138
- [
139
- "npm" as const,
140
- "pnpm" as const,
141
- "yarn (berry is not supported)" as "yarn",
142
- ],
143
- (value) => value.split(" ")[0] as "yarn",
144
- );
145
- options.project ??= await configure();
146
-
147
- if (questioned.value) console.log("");
148
- return options as IArguments;
149
- });
150
- };
151
- }
1
+ import fs from "fs";
2
+
3
+ import { ArgumentParser } from "./setup/ArgumentParser";
4
+ import { CommandExecutor } from "./setup/CommandExecutor";
5
+ import { PackageManager } from "./setup/PackageManager";
6
+ import { PluginConfigurator } from "./setup/PluginConfigurator";
7
+
8
+ export namespace TypiaSetupWizard {
9
+ export interface IArguments {
10
+ manager: "npm" | "pnpm" | "yarn";
11
+ project: string | null;
12
+ }
13
+
14
+ export async function setup(): Promise<void> {
15
+ console.log("----------------------------------------");
16
+ console.log(" Typia Setup Wizard");
17
+ console.log("----------------------------------------");
18
+
19
+ // PREPARE ASSETS
20
+ const pack: PackageManager = await PackageManager.mount();
21
+ const args: IArguments = await ArgumentParser.parse(pack)(inquiry);
22
+
23
+ // INSTALL TYPESCRIPT COMPILERS
24
+ pack.install({ dev: true, modulo: "ts-patch", version: "latest" });
25
+ pack.install({ dev: true, modulo: "ts-node", version: "latest" });
26
+ pack.install({ dev: true, modulo: "typescript", version: "5.3.2" });
27
+ args.project ??= (() => {
28
+ const runner: string = pack.manager === "npm" ? "npx" : pack.manager;
29
+ CommandExecutor.run(`${runner} tsc --init`);
30
+ return (args.project = "tsconfig.json");
31
+ })();
32
+
33
+ // SETUP TRANSFORMER
34
+ await pack.save((data) => {
35
+ // COMPOSE PREPARE COMMAND
36
+ data.scripts ??= {};
37
+ if (
38
+ typeof data.scripts.prepare === "string" &&
39
+ data.scripts.prepare.trim().length
40
+ ) {
41
+ if (
42
+ data.scripts.prepare.indexOf("ts-patch install") === -1 &&
43
+ data.scripts.prepare.indexOf("typia patch") === -1
44
+ )
45
+ data.scripts.prepare =
46
+ "ts-patch install && typia patch && " + data.scripts.prepare;
47
+ else if (data.scripts.prepare.indexOf("ts-patch install") === -1)
48
+ data.scripts.prepare = "ts-patch install && " + data.scripts.prepare;
49
+ else if (data.scripts.prepare.indexOf("typia patch") === -1)
50
+ data.scripts.prepare = data.scripts.prepare.replace(
51
+ "ts-patch install",
52
+ "ts-patch install && typia patch",
53
+ );
54
+ } else data.scripts.prepare = "ts-patch install && typia patch";
55
+
56
+ // FOR OLDER VERSIONS
57
+ if (typeof data.scripts.postinstall === "string") {
58
+ data.scripts.postinstall = data.scripts.postinstall
59
+ .split("&&")
60
+ .map((str) => str.trim())
61
+ .filter((str) => str.indexOf("ts-patch install") === -1)
62
+ .join(" && ");
63
+ if (data.scripts.postinstall.length === 0)
64
+ delete data.scripts.postinstall;
65
+ }
66
+ });
67
+
68
+ // CONFIGURE TYPIA
69
+ await PluginConfigurator.configure(args);
70
+ CommandExecutor.run(`${pack.manager} run prepare`);
71
+ }
72
+
73
+ const inquiry: ArgumentParser.Inquiry<IArguments> = async (
74
+ pack,
75
+ command,
76
+ prompt,
77
+ action,
78
+ ) => {
79
+ // PREPARE ASSETS
80
+ command.option("--manager [manager", "package manager");
81
+ command.option("--project [project]", "tsconfig.json file location");
82
+
83
+ // INTERNAL PROCEDURES
84
+ const questioned = { value: false };
85
+ const select =
86
+ (name: string) =>
87
+ (message: string) =>
88
+ async <Choice extends string>(
89
+ choices: Choice[],
90
+ filter?: (choice: string) => Choice,
91
+ ): Promise<Choice> => {
92
+ questioned.value = true;
93
+ return (
94
+ await prompt()({
95
+ type: "list",
96
+ name: name,
97
+ message: message,
98
+ choices: choices,
99
+ ...(filter
100
+ ? {
101
+ filter,
102
+ }
103
+ : {}),
104
+ })
105
+ )[name];
106
+ };
107
+ const configure = async (): Promise<string | null> => {
108
+ const fileList: string[] = await (
109
+ await fs.promises.readdir(process.cwd())
110
+ )
111
+ .filter(
112
+ (str) =>
113
+ str.substring(0, 8) === "tsconfig" &&
114
+ str.substring(str.length - 5) === ".json",
115
+ )
116
+ .sort((x, y) =>
117
+ x === "tsconfig.json"
118
+ ? -1
119
+ : y === "tsconfig.json"
120
+ ? 1
121
+ : x < y
122
+ ? -1
123
+ : 1,
124
+ );
125
+ if (fileList.length === 0) {
126
+ if (process.cwd() !== pack.directory)
127
+ throw new URIError(`Unable to find "tsconfig.json" file.`);
128
+ return null;
129
+ } else if (fileList.length === 1) return fileList[0]!;
130
+ return select("tsconfig")("TS Config File")(fileList);
131
+ };
132
+
133
+ // DO CONSTRUCT
134
+ return action(async (options) => {
135
+ pack.manager = options.manager ??= await select("manager")(
136
+ "Package Manager",
137
+ )(
138
+ [
139
+ "npm" as const,
140
+ "pnpm" as const,
141
+ "yarn (berry is not supported)" as "yarn",
142
+ ],
143
+ (value) => value.split(" ")[0] as "yarn",
144
+ );
145
+ options.project ??= await configure();
146
+
147
+ if (questioned.value) console.log("");
148
+ return options as IArguments;
149
+ });
150
+ };
151
+ }
@@ -1,43 +1,43 @@
1
- import commander from "commander";
2
- import inquirer from "inquirer";
3
-
4
- import { PackageManager } from "./PackageManager";
5
-
6
- export namespace ArgumentParser {
7
- export type Inquiry<T> = (
8
- pack: PackageManager,
9
- command: commander.Command,
10
- prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
11
- action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
12
- ) => Promise<T>;
13
-
14
- export const parse =
15
- (pack: PackageManager) =>
16
- async <T>(
17
- inquiry: (
18
- pack: PackageManager,
19
- command: commander.Command,
20
- prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
21
- action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
22
- ) => Promise<T>,
23
- ): Promise<T> => {
24
- // TAKE OPTIONS
25
- const action = (closure: (options: Partial<T>) => Promise<T>) =>
26
- new Promise<T>((resolve, reject) => {
27
- commander.program.action(async (options) => {
28
- try {
29
- resolve(await closure(options));
30
- } catch (exp) {
31
- reject(exp);
32
- }
33
- });
34
- commander.program.parseAsync().catch(reject);
35
- });
36
- return inquiry(
37
- pack,
38
- commander.program,
39
- inquirer.createPromptModule,
40
- action,
41
- );
42
- };
43
- }
1
+ import commander from "commander";
2
+ import inquirer from "inquirer";
3
+
4
+ import { PackageManager } from "./PackageManager";
5
+
6
+ export namespace ArgumentParser {
7
+ export type Inquiry<T> = (
8
+ pack: PackageManager,
9
+ command: commander.Command,
10
+ prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
11
+ action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
12
+ ) => Promise<T>;
13
+
14
+ export const parse =
15
+ (pack: PackageManager) =>
16
+ async <T>(
17
+ inquiry: (
18
+ pack: PackageManager,
19
+ command: commander.Command,
20
+ prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
21
+ action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
22
+ ) => Promise<T>,
23
+ ): Promise<T> => {
24
+ // TAKE OPTIONS
25
+ const action = (closure: (options: Partial<T>) => Promise<T>) =>
26
+ new Promise<T>((resolve, reject) => {
27
+ commander.program.action(async (options) => {
28
+ try {
29
+ resolve(await closure(options));
30
+ } catch (exp) {
31
+ reject(exp);
32
+ }
33
+ });
34
+ commander.program.parseAsync().catch(reject);
35
+ });
36
+ return inquiry(
37
+ pack,
38
+ commander.program,
39
+ inquirer.createPromptModule,
40
+ action,
41
+ );
42
+ };
43
+ }
@@ -1,8 +1,8 @@
1
- import cp from "child_process";
2
-
3
- export namespace CommandExecutor {
4
- export const run = (str: string): void => {
5
- console.log(`\n$ ${str}`);
6
- cp.execSync(str, { stdio: "inherit" });
7
- };
8
- }
1
+ import cp from "child_process";
2
+
3
+ export namespace CommandExecutor {
4
+ export const run = (str: string): void => {
5
+ console.log(`\n$ ${str}`);
6
+ cp.execSync(str, { stdio: "inherit" });
7
+ };
8
+ }