typia 5.3.5 → 5.3.6-dev.20231229

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 (354) hide show
  1. package/README.md +2 -1
  2. package/lib/functional/$ProtobufReader.js +2 -2
  3. package/lib/functional/$ProtobufReader.js.map +1 -1
  4. package/package.json +1 -1
  5. package/src/AssertionGuard.ts +1 -1
  6. package/src/CamelCase.ts +114 -114
  7. package/src/IRandomGenerator.ts +35 -35
  8. package/src/IValidation.ts +21 -21
  9. package/src/PascalCase.ts +114 -114
  10. package/src/Primitive.ts +135 -135
  11. package/src/Resolved.ts +116 -116
  12. package/src/SnakeCase.ts +156 -156
  13. package/src/TypeGuardError.ts +36 -36
  14. package/src/executable/TypiaGenerateWizard.ts +83 -83
  15. package/src/executable/TypiaPatchWizard.ts +42 -42
  16. package/src/executable/TypiaSetupWizard.ts +151 -151
  17. package/src/executable/setup/ArgumentParser.ts +43 -43
  18. package/src/executable/setup/CommandExecutor.ts +8 -8
  19. package/src/executable/setup/FileRetriever.ts +22 -22
  20. package/src/executable/setup/PackageManager.ts +71 -71
  21. package/src/executable/setup/PluginConfigurator.ts +69 -69
  22. package/src/executable/typia.ts +55 -55
  23. package/src/factories/CommentFactory.ts +79 -79
  24. package/src/factories/ExpressionFactory.ts +150 -150
  25. package/src/factories/IdentifierFactory.ts +70 -70
  26. package/src/factories/JsonMetadataFactory.ts +53 -53
  27. package/src/factories/LiteralFactory.ts +47 -47
  28. package/src/factories/MetadataCollection.ts +269 -269
  29. package/src/factories/MetadataCommentTagFactory.ts +601 -601
  30. package/src/factories/MetadataFactory.ts +267 -267
  31. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  32. package/src/factories/NumericRangeFactory.ts +72 -72
  33. package/src/factories/ProtobufFactory.ts +259 -259
  34. package/src/factories/StatementFactory.ts +72 -72
  35. package/src/factories/TemplateFactory.ts +56 -56
  36. package/src/factories/TypeFactory.ts +118 -118
  37. package/src/factories/ValueFactory.ts +12 -12
  38. package/src/factories/internal/metadata/MetadataHelper.ts +15 -15
  39. package/src/factories/internal/metadata/emend_metadata_atomics.ts +37 -37
  40. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  41. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +38 -38
  42. package/src/factories/internal/metadata/emplace_metadata_object.ts +175 -175
  43. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  44. package/src/factories/internal/metadata/explore_metadata.ts +28 -28
  45. package/src/factories/internal/metadata/iterate_metadata.ts +94 -94
  46. package/src/factories/internal/metadata/iterate_metadata_alias.ts +34 -34
  47. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  48. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  49. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  50. package/src/factories/internal/metadata/iterate_metadata_collection.ts +131 -131
  51. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  52. package/src/factories/internal/metadata/iterate_metadata_constant.ts +48 -48
  53. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +230 -230
  54. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  55. package/src/factories/internal/metadata/iterate_metadata_native.ts +208 -208
  56. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  57. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  58. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  59. package/src/factories/internal/metadata/iterate_metadata_sort.ts +61 -61
  60. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  61. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  62. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  63. package/src/functional/$HeadersReader.ts +28 -28
  64. package/src/functional/$ParameterReader.ts +31 -31
  65. package/src/functional/$ProtobufReader.ts +199 -195
  66. package/src/functional/$ProtobufSizer.ts +147 -147
  67. package/src/functional/$ProtobufWriter.ts +150 -150
  68. package/src/functional/$QueryReader.ts +56 -56
  69. package/src/functional/$any.ts +4 -4
  70. package/src/functional/$clone.ts +4 -4
  71. package/src/functional/$convention.ts +37 -37
  72. package/src/functional/$dictionary.ts +22 -22
  73. package/src/functional/$every.ts +11 -11
  74. package/src/functional/$from.ts +5 -5
  75. package/src/functional/$guard.ts +35 -35
  76. package/src/functional/$is_between.ts +2 -2
  77. package/src/functional/$join.ts +46 -46
  78. package/src/functional/$number.ts +12 -12
  79. package/src/functional/$report.ts +13 -13
  80. package/src/functional/$rest.ts +3 -3
  81. package/src/functional/$stoll.ts +8 -8
  82. package/src/functional/$string.ts +50 -50
  83. package/src/functional/$strlen.ts +7 -7
  84. package/src/functional/$tail.ts +5 -5
  85. package/src/functional/$varint.ts +130 -130
  86. package/src/functional/$zigzag.ts +39 -39
  87. package/src/functional/IProtobufWriter.ts +18 -18
  88. package/src/functional/Namespace.ts +174 -174
  89. package/src/http.ts +1149 -1149
  90. package/src/index.ts +4 -4
  91. package/src/json.ts +648 -648
  92. package/src/misc.ts +651 -651
  93. package/src/module.ts +897 -897
  94. package/src/notations.ts +855 -855
  95. package/src/programmers/AssertProgrammer.ts +293 -293
  96. package/src/programmers/CheckerProgrammer.ts +1025 -1025
  97. package/src/programmers/FeatureProgrammer.ts +460 -460
  98. package/src/programmers/IsProgrammer.ts +232 -232
  99. package/src/programmers/RandomProgrammer.ts +825 -825
  100. package/src/programmers/TypiaProgrammer.ts +167 -167
  101. package/src/programmers/ValidateProgrammer.ts +307 -307
  102. package/src/programmers/helpers/AtomicPredicator.ts +25 -25
  103. package/src/programmers/helpers/CloneJoiner.ts +130 -130
  104. package/src/programmers/helpers/FunctionImporeter.ts +87 -87
  105. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  106. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  107. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  108. package/src/programmers/helpers/NotationJoiner.ts +132 -132
  109. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  110. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  111. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  112. package/src/programmers/helpers/PruneJoiner.ts +141 -141
  113. package/src/programmers/helpers/RandomJoiner.ts +140 -140
  114. package/src/programmers/helpers/RandomRanger.ts +171 -171
  115. package/src/programmers/helpers/StringifyJoinder.ts +105 -105
  116. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  117. package/src/programmers/helpers/UnionExplorer.ts +269 -269
  118. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  119. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  120. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +77 -77
  121. package/src/programmers/http/HttpAssertQueryProgrammer.ts +75 -75
  122. package/src/programmers/http/HttpHeadersProgrammer.ts +314 -314
  123. package/src/programmers/http/HttpIsHeadersProgrammer.ts +84 -84
  124. package/src/programmers/http/HttpIsQueryProgrammer.ts +82 -82
  125. package/src/programmers/http/HttpParameterProgrammer.ts +97 -97
  126. package/src/programmers/http/HttpQueryProgrammer.ts +252 -252
  127. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +77 -77
  128. package/src/programmers/http/HttpValidateQueryProgrammer.ts +75 -75
  129. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  130. package/src/programmers/internal/application_alias.ts +65 -65
  131. package/src/programmers/internal/application_array.ts +59 -59
  132. package/src/programmers/internal/application_boolean.ts +30 -30
  133. package/src/programmers/internal/application_constant.ts +26 -26
  134. package/src/programmers/internal/application_default.ts +17 -17
  135. package/src/programmers/internal/application_default_string.ts +33 -33
  136. package/src/programmers/internal/application_escaped.ts +53 -53
  137. package/src/programmers/internal/application_native.ts +38 -38
  138. package/src/programmers/internal/application_number.ts +94 -94
  139. package/src/programmers/internal/application_object.ts +153 -153
  140. package/src/programmers/internal/application_schema.ts +180 -180
  141. package/src/programmers/internal/application_string.ts +58 -58
  142. package/src/programmers/internal/application_templates.ts +25 -25
  143. package/src/programmers/internal/application_tuple.ts +55 -55
  144. package/src/programmers/internal/check_array_length.ts +45 -45
  145. package/src/programmers/internal/check_bigint.ts +49 -49
  146. package/src/programmers/internal/check_dynamic_key.ts +175 -175
  147. package/src/programmers/internal/check_dynamic_properties.ts +198 -198
  148. package/src/programmers/internal/check_everything.ts +23 -23
  149. package/src/programmers/internal/check_native.ts +21 -21
  150. package/src/programmers/internal/check_number.ts +106 -106
  151. package/src/programmers/internal/check_object.ts +60 -60
  152. package/src/programmers/internal/check_string.ts +48 -48
  153. package/src/programmers/internal/check_template.ts +61 -61
  154. package/src/programmers/internal/check_union_array_like.ts +307 -307
  155. package/src/programmers/internal/decode_union_object.ts +78 -78
  156. package/src/programmers/internal/feature_object_entries.ts +58 -58
  157. package/src/programmers/internal/metadata_to_pattern.ts +33 -33
  158. package/src/programmers/internal/prune_object_properties.ts +60 -60
  159. package/src/programmers/internal/random_custom.ts +37 -37
  160. package/src/programmers/internal/stringify_dynamic_properties.ts +157 -157
  161. package/src/programmers/internal/stringify_native.ts +7 -7
  162. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  163. package/src/programmers/internal/template_to_pattern.ts +15 -15
  164. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  165. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  166. package/src/programmers/json/JsonAssertParseProgrammer.ts +67 -67
  167. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +61 -61
  168. package/src/programmers/json/JsonIsParseProgrammer.ts +73 -73
  169. package/src/programmers/json/JsonIsStringifyProgrammer.ts +75 -75
  170. package/src/programmers/json/JsonStringifyProgrammer.ts +893 -893
  171. package/src/programmers/json/JsonValidateParseProgrammer.ts +64 -64
  172. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +83 -83
  173. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +63 -63
  174. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +60 -60
  175. package/src/programmers/misc/MiscCloneProgrammer.ts +713 -713
  176. package/src/programmers/misc/MiscIsCloneProgrammer.ts +70 -70
  177. package/src/programmers/misc/MiscIsPruneProgrammer.ts +66 -66
  178. package/src/programmers/misc/MiscLiteralsProgrammer.ts +72 -72
  179. package/src/programmers/misc/MiscPruneProgrammer.ts +523 -523
  180. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +80 -80
  181. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +73 -73
  182. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +64 -64
  183. package/src/programmers/notations/NotationGeneralProgrammer.ts +647 -647
  184. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +71 -71
  185. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +81 -81
  186. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  187. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +61 -61
  188. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +607 -607
  189. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +819 -819
  190. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +82 -82
  191. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +75 -75
  192. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +160 -160
  193. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  194. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +83 -83
  195. package/src/protobuf.ts +887 -887
  196. package/src/reflect.ts +24 -24
  197. package/src/schemas/json/IJsonApplication.ts +8 -8
  198. package/src/schemas/json/IJsonComponents.ts +36 -36
  199. package/src/schemas/json/IJsonSchema.ts +113 -113
  200. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  201. package/src/schemas/metadata/IMetadata.ts +34 -34
  202. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  203. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  204. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  205. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  206. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  207. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  208. package/src/schemas/metadata/IMetadataConstant.ts +23 -23
  209. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  210. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  211. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  212. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  213. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  214. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  215. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  216. package/src/schemas/metadata/IMetadataTypeTag.ts +15 -15
  217. package/src/schemas/metadata/Metadata.ts +612 -612
  218. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  219. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  220. package/src/schemas/metadata/MetadataArray.ts +49 -49
  221. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  222. package/src/schemas/metadata/MetadataAtomic.ts +84 -84
  223. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  224. package/src/schemas/metadata/MetadataConstant.ts +46 -46
  225. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  226. package/src/schemas/metadata/MetadataObject.ts +135 -135
  227. package/src/schemas/metadata/MetadataProperty.ts +56 -56
  228. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  229. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  230. package/src/tags/Default.ts +15 -15
  231. package/src/tags/ExclusiveMaximum.ts +13 -13
  232. package/src/tags/ExclusiveMinimum.ts +13 -13
  233. package/src/tags/Format.ts +30 -30
  234. package/src/tags/MaxItems.ts +9 -9
  235. package/src/tags/MaxLength.ts +9 -9
  236. package/src/tags/Maximum.ts +13 -13
  237. package/src/tags/MinItems.ts +9 -9
  238. package/src/tags/MinLength.ts +9 -9
  239. package/src/tags/Minimum.ts +13 -13
  240. package/src/tags/MultipleOf.ts +15 -15
  241. package/src/tags/Pattern.ts +9 -9
  242. package/src/tags/TagBase.ts +68 -68
  243. package/src/tags/Type.ts +27 -27
  244. package/src/tags/index.ts +14 -14
  245. package/src/transform.ts +35 -35
  246. package/src/transformers/CallExpressionTransformer.ts +351 -351
  247. package/src/transformers/FileTransformer.ts +91 -91
  248. package/src/transformers/IProject.ts +15 -15
  249. package/src/transformers/ITransformOptions.ts +62 -62
  250. package/src/transformers/ImportTransformer.ts +66 -66
  251. package/src/transformers/NodeTransformer.ts +13 -13
  252. package/src/transformers/TransformerError.ts +55 -55
  253. package/src/transformers/features/AssertTransformer.ts +16 -16
  254. package/src/transformers/features/CreateAssertTransformer.ts +16 -16
  255. package/src/transformers/features/CreateIsTransformer.ts +10 -10
  256. package/src/transformers/features/CreateRandomTransformer.ts +40 -40
  257. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  258. package/src/transformers/features/IsTransformer.ts +10 -10
  259. package/src/transformers/features/RandomTransformer.ts +44 -44
  260. package/src/transformers/features/ValidateTransformer.ts +11 -11
  261. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +11 -11
  262. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +9 -9
  263. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +9 -9
  264. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +9 -9
  265. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +9 -9
  266. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +9 -9
  267. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +9 -9
  268. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +12 -12
  269. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +11 -11
  270. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +9 -9
  271. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +9 -9
  272. package/src/transformers/features/http/HttpHeadersTransformer.ts +9 -9
  273. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +9 -9
  274. package/src/transformers/features/http/HttpIsQueryTransformer.ts +9 -9
  275. package/src/transformers/features/http/HttpParameterTransformer.ts +9 -9
  276. package/src/transformers/features/http/HttpQueryTransformer.ts +9 -9
  277. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +10 -10
  278. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +9 -9
  279. package/src/transformers/features/json/JsonApplicationTransformer.ts +121 -121
  280. package/src/transformers/features/json/JsonAssertParseTransformer.ts +9 -9
  281. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  282. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +9 -9
  283. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  284. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  285. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +9 -9
  286. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  287. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +11 -11
  288. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  289. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  290. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +9 -9
  291. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  292. package/src/transformers/features/json/JsonValidateParseTransformer.ts +9 -9
  293. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  294. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +9 -9
  295. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +9 -9
  296. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  297. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +9 -9
  298. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +9 -9
  299. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  300. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  301. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  302. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  303. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +11 -11
  304. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +11 -11
  305. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  306. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  307. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  308. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  309. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +9 -9
  310. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +9 -9
  311. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -15
  312. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -15
  313. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -15
  314. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -15
  315. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +15 -15
  316. package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -11
  317. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -15
  318. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +15 -15
  319. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  320. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  321. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +12 -12
  322. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +12 -12
  323. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +9 -9
  324. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +9 -9
  325. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +9 -9
  326. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +9 -9
  327. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +12 -12
  328. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +12 -12
  329. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +9 -9
  330. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +9 -9
  331. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +9 -9
  332. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +9 -9
  333. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  334. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +10 -10
  335. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +10 -10
  336. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +73 -73
  337. package/src/transformers/internal/GenericTransformer.ts +96 -96
  338. package/src/typings/Atomic.ts +13 -13
  339. package/src/typings/ClassProperties.ts +5 -5
  340. package/src/typings/Customizable.ts +5 -5
  341. package/src/typings/OmitNever.ts +3 -3
  342. package/src/typings/ProtobufAtomic.ts +19 -19
  343. package/src/typings/SpecialFields.ts +3 -3
  344. package/src/typings/ValidationPipe.ts +9 -9
  345. package/src/typings/Writable.ts +11 -11
  346. package/src/utils/ArrayUtil.ts +43 -43
  347. package/src/utils/Escaper.ts +46 -46
  348. package/src/utils/MapUtil.ts +12 -12
  349. package/src/utils/NameEncoder.ts +32 -32
  350. package/src/utils/NamingConvention.ts +87 -87
  351. package/src/utils/PatternUtil.ts +29 -29
  352. package/src/utils/RandomGenerator.ts +83 -83
  353. package/src/utils/Singleton.ts +16 -16
  354. package/src/utils/StringUtil.ts +4 -4
package/src/SnakeCase.ts CHANGED
@@ -1,156 +1,156 @@
1
- /**
2
- * Snake case type.
3
- *
4
- * `SnakeCase` type is a type that all keys of an object are converted to snake case.
5
- *
6
- * It also erase every method properties like {@link Resolved} type.
7
- *
8
- * @template T Target type to be snake cased
9
- * @author Jeongho Nam - https://github.com/samchon
10
- */
11
- export type SnakeCase<T> = Equal<T, SnakageMain<T>> extends true
12
- ? T
13
- : SnakageMain<T>;
14
-
15
- /* -----------------------------------------------------------
16
- OBJECT CONVERSION
17
- ----------------------------------------------------------- */
18
- type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
19
-
20
- type SnakageMain<T> = T extends [never]
21
- ? never // special trick for (jsonable | null) type
22
- : T extends { valueOf(): boolean | bigint | number | string }
23
- ? ValueOf<T>
24
- : T extends Function
25
- ? never
26
- : T extends object
27
- ? SnakageObject<T>
28
- : T;
29
-
30
- type SnakageObject<T extends object> = T extends Array<infer U>
31
- ? IsTuple<T> extends true
32
- ? SnakageTuple<T>
33
- : SnakageMain<U>[]
34
- : T extends Set<infer U>
35
- ? Set<SnakageMain<U>>
36
- : T extends Map<infer K, infer V>
37
- ? Map<SnakageMain<K>, SnakageMain<V>>
38
- : T extends WeakSet<any> | WeakMap<any, any>
39
- ? never
40
- : T extends
41
- | Date
42
- | Uint8Array
43
- | Uint8ClampedArray
44
- | Uint16Array
45
- | Uint32Array
46
- | BigUint64Array
47
- | Int8Array
48
- | Int16Array
49
- | Int32Array
50
- | BigInt64Array
51
- | Float32Array
52
- | Float64Array
53
- | ArrayBuffer
54
- | SharedArrayBuffer
55
- | DataView
56
- ? T
57
- : {
58
- [Key in keyof T as SnakageString<Key & string>]: SnakageMain<T[Key]>;
59
- };
60
-
61
- /* -----------------------------------------------------------
62
- SPECIAL CASES
63
- ----------------------------------------------------------- */
64
- type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
65
- never,
66
- ]
67
- ? false
68
- : T extends readonly any[]
69
- ? number extends T["length"]
70
- ? false
71
- : true
72
- : false;
73
- type SnakageTuple<T extends readonly any[]> = T extends []
74
- ? []
75
- : T extends [infer F]
76
- ? [SnakageMain<F>]
77
- : T extends [infer F, ...infer Rest extends readonly any[]]
78
- ? [SnakageMain<F>, ...SnakageTuple<Rest>]
79
- : T extends [(infer F)?]
80
- ? [SnakageMain<F>?]
81
- : T extends [(infer F)?, ...infer Rest extends readonly any[]]
82
- ? [SnakageMain<F>?, ...SnakageTuple<Rest>]
83
- : [];
84
-
85
- type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true
86
- ? boolean
87
- : IsValueOf<Instance, Number> extends true
88
- ? number
89
- : IsValueOf<Instance, String> extends true
90
- ? string
91
- : Instance;
92
-
93
- type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
94
- ? Object extends IValueOf<infer Primitive>
95
- ? Instance extends Primitive
96
- ? false
97
- : true // not Primitive, but Object
98
- : false // cannot be
99
- : false;
100
-
101
- interface IValueOf<T> {
102
- valueOf(): T;
103
- }
104
-
105
- /* -----------------------------------------------------------
106
- STRING CONVERTER
107
- ----------------------------------------------------------- */
108
- type SnakageString<Key extends string> = Key extends `${infer _}`
109
- ? SnakageStringRepeatedly<Key, "">
110
- : Key;
111
- type SnakageStringRepeatedly<
112
- S extends string,
113
- Previous extends string,
114
- > = S extends `${infer First}${infer Second}${infer Rest}`
115
- ? `${Underscore<Previous, First>}${Lowercase<First>}${Underscore<
116
- First,
117
- Second
118
- >}${Lowercase<Second>}${SnakageStringRepeatedly<Rest, Second>}`
119
- : S extends `${infer First}`
120
- ? `${Underscore<Previous, First>}${Lowercase<First>}`
121
- : "";
122
- type Underscore<First extends string, Second extends string> = First extends
123
- | UpperAlphabetic
124
- | ""
125
- | "_"
126
- ? ""
127
- : Second extends UpperAlphabetic
128
- ? "_"
129
- : "";
130
- type UpperAlphabetic =
131
- | "A"
132
- | "B"
133
- | "C"
134
- | "D"
135
- | "E"
136
- | "F"
137
- | "G"
138
- | "H"
139
- | "I"
140
- | "J"
141
- | "K"
142
- | "L"
143
- | "M"
144
- | "N"
145
- | "O"
146
- | "P"
147
- | "Q"
148
- | "R"
149
- | "S"
150
- | "T"
151
- | "U"
152
- | "V"
153
- | "W"
154
- | "X"
155
- | "Y"
156
- | "Z";
1
+ /**
2
+ * Snake case type.
3
+ *
4
+ * `SnakeCase` type is a type that all keys of an object are converted to snake case.
5
+ *
6
+ * It also erase every method properties like {@link Resolved} type.
7
+ *
8
+ * @template T Target type to be snake cased
9
+ * @author Jeongho Nam - https://github.com/samchon
10
+ */
11
+ export type SnakeCase<T> = Equal<T, SnakageMain<T>> extends true
12
+ ? T
13
+ : SnakageMain<T>;
14
+
15
+ /* -----------------------------------------------------------
16
+ OBJECT CONVERSION
17
+ ----------------------------------------------------------- */
18
+ type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
19
+
20
+ type SnakageMain<T> = T extends [never]
21
+ ? never // special trick for (jsonable | null) type
22
+ : T extends { valueOf(): boolean | bigint | number | string }
23
+ ? ValueOf<T>
24
+ : T extends Function
25
+ ? never
26
+ : T extends object
27
+ ? SnakageObject<T>
28
+ : T;
29
+
30
+ type SnakageObject<T extends object> = T extends Array<infer U>
31
+ ? IsTuple<T> extends true
32
+ ? SnakageTuple<T>
33
+ : SnakageMain<U>[]
34
+ : T extends Set<infer U>
35
+ ? Set<SnakageMain<U>>
36
+ : T extends Map<infer K, infer V>
37
+ ? Map<SnakageMain<K>, SnakageMain<V>>
38
+ : T extends WeakSet<any> | WeakMap<any, any>
39
+ ? never
40
+ : T extends
41
+ | Date
42
+ | Uint8Array
43
+ | Uint8ClampedArray
44
+ | Uint16Array
45
+ | Uint32Array
46
+ | BigUint64Array
47
+ | Int8Array
48
+ | Int16Array
49
+ | Int32Array
50
+ | BigInt64Array
51
+ | Float32Array
52
+ | Float64Array
53
+ | ArrayBuffer
54
+ | SharedArrayBuffer
55
+ | DataView
56
+ ? T
57
+ : {
58
+ [Key in keyof T as SnakageString<Key & string>]: SnakageMain<T[Key]>;
59
+ };
60
+
61
+ /* -----------------------------------------------------------
62
+ SPECIAL CASES
63
+ ----------------------------------------------------------- */
64
+ type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
65
+ never,
66
+ ]
67
+ ? false
68
+ : T extends readonly any[]
69
+ ? number extends T["length"]
70
+ ? false
71
+ : true
72
+ : false;
73
+ type SnakageTuple<T extends readonly any[]> = T extends []
74
+ ? []
75
+ : T extends [infer F]
76
+ ? [SnakageMain<F>]
77
+ : T extends [infer F, ...infer Rest extends readonly any[]]
78
+ ? [SnakageMain<F>, ...SnakageTuple<Rest>]
79
+ : T extends [(infer F)?]
80
+ ? [SnakageMain<F>?]
81
+ : T extends [(infer F)?, ...infer Rest extends readonly any[]]
82
+ ? [SnakageMain<F>?, ...SnakageTuple<Rest>]
83
+ : [];
84
+
85
+ type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true
86
+ ? boolean
87
+ : IsValueOf<Instance, Number> extends true
88
+ ? number
89
+ : IsValueOf<Instance, String> extends true
90
+ ? string
91
+ : Instance;
92
+
93
+ type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
94
+ ? Object extends IValueOf<infer Primitive>
95
+ ? Instance extends Primitive
96
+ ? false
97
+ : true // not Primitive, but Object
98
+ : false // cannot be
99
+ : false;
100
+
101
+ interface IValueOf<T> {
102
+ valueOf(): T;
103
+ }
104
+
105
+ /* -----------------------------------------------------------
106
+ STRING CONVERTER
107
+ ----------------------------------------------------------- */
108
+ type SnakageString<Key extends string> = Key extends `${infer _}`
109
+ ? SnakageStringRepeatedly<Key, "">
110
+ : Key;
111
+ type SnakageStringRepeatedly<
112
+ S extends string,
113
+ Previous extends string,
114
+ > = S extends `${infer First}${infer Second}${infer Rest}`
115
+ ? `${Underscore<Previous, First>}${Lowercase<First>}${Underscore<
116
+ First,
117
+ Second
118
+ >}${Lowercase<Second>}${SnakageStringRepeatedly<Rest, Second>}`
119
+ : S extends `${infer First}`
120
+ ? `${Underscore<Previous, First>}${Lowercase<First>}`
121
+ : "";
122
+ type Underscore<First extends string, Second extends string> = First extends
123
+ | UpperAlphabetic
124
+ | ""
125
+ | "_"
126
+ ? ""
127
+ : Second extends UpperAlphabetic
128
+ ? "_"
129
+ : "";
130
+ type UpperAlphabetic =
131
+ | "A"
132
+ | "B"
133
+ | "C"
134
+ | "D"
135
+ | "E"
136
+ | "F"
137
+ | "G"
138
+ | "H"
139
+ | "I"
140
+ | "J"
141
+ | "K"
142
+ | "L"
143
+ | "M"
144
+ | "N"
145
+ | "O"
146
+ | "P"
147
+ | "Q"
148
+ | "R"
149
+ | "S"
150
+ | "T"
151
+ | "U"
152
+ | "V"
153
+ | "W"
154
+ | "X"
155
+ | "Y"
156
+ | "Z";
@@ -1,36 +1,36 @@
1
- export class TypeGuardError extends Error {
2
- public readonly method: string;
3
- public readonly path: string | undefined;
4
- public readonly expected: string;
5
- public readonly value: any;
6
-
7
- public constructor(props: TypeGuardError.IProps) {
8
- // MESSAGE CONSTRUCTION
9
- super(
10
- props.message ||
11
- `Error on ${props.method}(): invalid type${
12
- props.path ? ` on ${props.path}` : ""
13
- }, expect to be ${props.expected}`,
14
- );
15
-
16
- // INHERITANCE POLYFILL
17
- const proto = new.target.prototype;
18
- if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
19
- else (this as any).__proto__ = proto;
20
-
21
- // ASSIGN MEMBERS
22
- this.method = props.method;
23
- this.path = props.path;
24
- this.expected = props.expected;
25
- this.value = props.value;
26
- }
27
- }
28
- export namespace TypeGuardError {
29
- export interface IProps {
30
- method: string;
31
- path?: undefined | string;
32
- expected: string;
33
- value: any;
34
- message?: undefined | string;
35
- }
36
- }
1
+ export class TypeGuardError extends Error {
2
+ public readonly method: string;
3
+ public readonly path: string | undefined;
4
+ public readonly expected: string;
5
+ public readonly value: any;
6
+
7
+ public constructor(props: TypeGuardError.IProps) {
8
+ // MESSAGE CONSTRUCTION
9
+ super(
10
+ props.message ||
11
+ `Error on ${props.method}(): invalid type${
12
+ props.path ? ` on ${props.path}` : ""
13
+ }, expect to be ${props.expected}`,
14
+ );
15
+
16
+ // INHERITANCE POLYFILL
17
+ const proto = new.target.prototype;
18
+ if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
19
+ else (this as any).__proto__ = proto;
20
+
21
+ // ASSIGN MEMBERS
22
+ this.method = props.method;
23
+ this.path = props.path;
24
+ this.expected = props.expected;
25
+ this.value = props.value;
26
+ }
27
+ }
28
+ export namespace TypeGuardError {
29
+ export interface IProps {
30
+ method: string;
31
+ path?: undefined | string;
32
+ expected: string;
33
+ value: any;
34
+ message?: undefined | string;
35
+ }
36
+ }
@@ -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`;