typia 5.3.12-dev.20240121 → 5.3.12-dev.20240122

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 (360) hide show
  1. package/package.json +1 -1
  2. package/src/AssertionGuard.ts +1 -1
  3. package/src/CamelCase.ts +114 -114
  4. package/src/IRandomGenerator.ts +35 -35
  5. package/src/IValidation.ts +21 -21
  6. package/src/PascalCase.ts +114 -114
  7. package/src/Primitive.ts +135 -135
  8. package/src/Resolved.ts +116 -116
  9. package/src/SnakeCase.ts +156 -156
  10. package/src/TypeGuardError.ts +36 -36
  11. package/src/executable/TypiaGenerateWizard.ts +83 -83
  12. package/src/executable/TypiaPatchWizard.ts +42 -42
  13. package/src/executable/TypiaSetupWizard.ts +151 -151
  14. package/src/executable/setup/ArgumentParser.ts +43 -43
  15. package/src/executable/setup/CommandExecutor.ts +8 -8
  16. package/src/executable/setup/FileRetriever.ts +22 -22
  17. package/src/executable/setup/PackageManager.ts +71 -71
  18. package/src/executable/setup/PluginConfigurator.ts +69 -69
  19. package/src/executable/typia.ts +55 -55
  20. package/src/factories/CommentFactory.ts +79 -79
  21. package/src/factories/ExpressionFactory.ts +150 -150
  22. package/src/factories/IdentifierFactory.ts +70 -70
  23. package/src/factories/JsonMetadataFactory.ts +53 -53
  24. package/src/factories/LiteralFactory.ts +47 -47
  25. package/src/factories/MetadataCollection.ts +260 -260
  26. package/src/factories/MetadataCommentTagFactory.ts +601 -601
  27. package/src/factories/MetadataFactory.ts +267 -267
  28. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  29. package/src/factories/NumericRangeFactory.ts +72 -72
  30. package/src/factories/ProtobufFactory.ts +259 -259
  31. package/src/factories/StatementFactory.ts +72 -72
  32. package/src/factories/TemplateFactory.ts +56 -56
  33. package/src/factories/TypeFactory.ts +118 -118
  34. package/src/factories/ValueFactory.ts +12 -12
  35. package/src/factories/internal/metadata/MetadataHelper.ts +15 -15
  36. package/src/factories/internal/metadata/emend_metadata_atomics.ts +37 -37
  37. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  38. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +38 -38
  39. package/src/factories/internal/metadata/emplace_metadata_object.ts +175 -175
  40. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  41. package/src/factories/internal/metadata/explore_metadata.ts +28 -28
  42. package/src/factories/internal/metadata/iterate_metadata.ts +94 -94
  43. package/src/factories/internal/metadata/iterate_metadata_alias.ts +34 -34
  44. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  45. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  46. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  47. package/src/factories/internal/metadata/iterate_metadata_collection.ts +131 -131
  48. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  49. package/src/factories/internal/metadata/iterate_metadata_constant.ts +48 -48
  50. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +230 -230
  51. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  52. package/src/factories/internal/metadata/iterate_metadata_native.ts +208 -208
  53. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  54. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  55. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  56. package/src/factories/internal/metadata/iterate_metadata_sort.ts +61 -61
  57. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  58. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  59. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  60. package/src/functional/$HeadersReader/$HeadersReader.ts +26 -26
  61. package/src/functional/$HeadersReader/index.ts +1 -1
  62. package/src/functional/$ParameterReader/$ParameterReader.ts +29 -29
  63. package/src/functional/$ParameterReader/index.ts +1 -1
  64. package/src/functional/$ProtobufReader.ts +195 -195
  65. package/src/functional/$ProtobufSizer.ts +147 -147
  66. package/src/functional/$ProtobufWriter.ts +150 -150
  67. package/src/functional/$QueryReader/$QueryReader.ts +46 -46
  68. package/src/functional/$QueryReader/index.ts +1 -1
  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/$guard.ts +35 -35
  75. package/src/functional/$is_between.ts +2 -2
  76. package/src/functional/$join.ts +46 -46
  77. package/src/functional/$number.ts +12 -12
  78. package/src/functional/$report.ts +13 -13
  79. package/src/functional/$rest.ts +3 -3
  80. package/src/functional/$stoll.ts +8 -8
  81. package/src/functional/$string.ts +50 -50
  82. package/src/functional/$strlen.ts +7 -7
  83. package/src/functional/$tail.ts +5 -5
  84. package/src/functional/$throws.ts +10 -10
  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/http.ts +7 -7
  89. package/src/functional/Namespace/index.ts +75 -75
  90. package/src/functional/Namespace/json.ts +15 -15
  91. package/src/functional/Namespace/misc.ts +14 -14
  92. package/src/functional/Namespace/notations.ts +23 -23
  93. package/src/functional/Namespace/protobuf.ts +20 -20
  94. package/src/functional/is.ts +10 -10
  95. package/src/http.ts +1267 -1267
  96. package/src/index.ts +4 -4
  97. package/src/notations.ts +977 -977
  98. package/src/programmers/AssertProgrammer.ts +293 -293
  99. package/src/programmers/CheckerProgrammer.ts +1025 -1025
  100. package/src/programmers/FeatureProgrammer.ts +460 -460
  101. package/src/programmers/IsProgrammer.ts +232 -232
  102. package/src/programmers/RandomProgrammer.ts +825 -825
  103. package/src/programmers/TypiaProgrammer.ts +167 -167
  104. package/src/programmers/ValidateProgrammer.ts +307 -307
  105. package/src/programmers/helpers/AtomicPredicator.ts +25 -25
  106. package/src/programmers/helpers/CloneJoiner.ts +130 -130
  107. package/src/programmers/helpers/FunctionImporeter.ts +87 -87
  108. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  109. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  110. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  111. package/src/programmers/helpers/NotationJoiner.ts +132 -132
  112. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  113. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  114. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  115. package/src/programmers/helpers/PruneJoiner.ts +141 -141
  116. package/src/programmers/helpers/RandomJoiner.ts +140 -140
  117. package/src/programmers/helpers/RandomRanger.ts +171 -171
  118. package/src/programmers/helpers/StringifyJoinder.ts +105 -105
  119. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  120. package/src/programmers/helpers/UnionExplorer.ts +269 -269
  121. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  122. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  123. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +77 -77
  124. package/src/programmers/http/HttpAssertQueryProgrammer.ts +75 -75
  125. package/src/programmers/http/HttpHeadersProgrammer.ts +314 -314
  126. package/src/programmers/http/HttpIsHeadersProgrammer.ts +84 -84
  127. package/src/programmers/http/HttpIsQueryProgrammer.ts +82 -82
  128. package/src/programmers/http/HttpParameterProgrammer.ts +97 -97
  129. package/src/programmers/http/HttpQueryProgrammer.ts +252 -252
  130. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +77 -77
  131. package/src/programmers/http/HttpValidateQueryProgrammer.ts +75 -75
  132. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  133. package/src/programmers/internal/application_alias.ts +74 -74
  134. package/src/programmers/internal/application_array.ts +59 -59
  135. package/src/programmers/internal/application_boolean.ts +35 -35
  136. package/src/programmers/internal/application_constant.ts +25 -25
  137. package/src/programmers/internal/application_default.ts +17 -17
  138. package/src/programmers/internal/application_default_string.ts +33 -33
  139. package/src/programmers/internal/application_escaped.ts +52 -52
  140. package/src/programmers/internal/application_native.ts +34 -34
  141. package/src/programmers/internal/application_number.ts +97 -97
  142. package/src/programmers/internal/application_object.ts +183 -183
  143. package/src/programmers/internal/application_schema.ts +165 -165
  144. package/src/programmers/internal/application_string.ts +61 -61
  145. package/src/programmers/internal/application_templates.ts +24 -24
  146. package/src/programmers/internal/application_tuple.ts +54 -54
  147. package/src/programmers/internal/check_array_length.ts +45 -45
  148. package/src/programmers/internal/check_bigint.ts +49 -49
  149. package/src/programmers/internal/check_dynamic_key.ts +175 -175
  150. package/src/programmers/internal/check_dynamic_properties.ts +198 -198
  151. package/src/programmers/internal/check_everything.ts +23 -23
  152. package/src/programmers/internal/check_native.ts +21 -21
  153. package/src/programmers/internal/check_number.ts +106 -106
  154. package/src/programmers/internal/check_object.ts +60 -60
  155. package/src/programmers/internal/check_string.ts +48 -48
  156. package/src/programmers/internal/check_template.ts +61 -61
  157. package/src/programmers/internal/check_union_array_like.ts +307 -307
  158. package/src/programmers/internal/decode_union_object.ts +78 -78
  159. package/src/programmers/internal/feature_object_entries.ts +58 -58
  160. package/src/programmers/internal/metadata_to_pattern.ts +33 -33
  161. package/src/programmers/internal/prune_object_properties.ts +60 -60
  162. package/src/programmers/internal/random_custom.ts +37 -37
  163. package/src/programmers/internal/stringify_dynamic_properties.ts +157 -157
  164. package/src/programmers/internal/stringify_native.ts +7 -7
  165. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  166. package/src/programmers/internal/template_to_pattern.ts +15 -15
  167. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  168. package/src/programmers/json/JsonApplicationProgrammer.ts +49 -49
  169. package/src/programmers/json/JsonAssertParseProgrammer.ts +67 -67
  170. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +61 -61
  171. package/src/programmers/json/JsonIsParseProgrammer.ts +73 -73
  172. package/src/programmers/json/JsonIsStringifyProgrammer.ts +75 -75
  173. package/src/programmers/json/JsonStringifyProgrammer.ts +893 -893
  174. package/src/programmers/json/JsonValidateParseProgrammer.ts +64 -64
  175. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +83 -83
  176. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +63 -63
  177. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +60 -60
  178. package/src/programmers/misc/MiscCloneProgrammer.ts +713 -713
  179. package/src/programmers/misc/MiscIsCloneProgrammer.ts +70 -70
  180. package/src/programmers/misc/MiscIsPruneProgrammer.ts +66 -66
  181. package/src/programmers/misc/MiscLiteralsProgrammer.ts +72 -72
  182. package/src/programmers/misc/MiscPruneProgrammer.ts +523 -523
  183. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +80 -80
  184. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +73 -73
  185. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +64 -64
  186. package/src/programmers/notations/NotationGeneralProgrammer.ts +647 -647
  187. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +71 -71
  188. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +81 -81
  189. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  190. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +61 -61
  191. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +607 -607
  192. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +819 -819
  193. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +82 -82
  194. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +75 -75
  195. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +160 -160
  196. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  197. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +83 -83
  198. package/src/protobuf.ts +970 -970
  199. package/src/reflect.ts +57 -57
  200. package/src/schemas/json/IJsonApplication.ts +9 -9
  201. package/src/schemas/json/IJsonComponents.ts +19 -19
  202. package/src/schemas/json/IJsonSchema.ts +122 -122
  203. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  204. package/src/schemas/metadata/IMetadata.ts +34 -34
  205. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  206. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  207. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  208. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  209. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  210. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  211. package/src/schemas/metadata/IMetadataConstant.ts +23 -23
  212. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  213. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  214. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  215. package/src/schemas/metadata/IMetadataObject.ts +13 -13
  216. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  217. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  218. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  219. package/src/schemas/metadata/IMetadataTypeTag.ts +15 -15
  220. package/src/schemas/metadata/Metadata.ts +612 -612
  221. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  222. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  223. package/src/schemas/metadata/MetadataArray.ts +49 -49
  224. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  225. package/src/schemas/metadata/MetadataAtomic.ts +84 -84
  226. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  227. package/src/schemas/metadata/MetadataConstant.ts +46 -46
  228. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  229. package/src/schemas/metadata/MetadataObject.ts +154 -154
  230. package/src/schemas/metadata/MetadataProperty.ts +56 -56
  231. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  232. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  233. package/src/tags/Default.ts +15 -15
  234. package/src/tags/ExclusiveMaximum.ts +13 -13
  235. package/src/tags/ExclusiveMinimum.ts +13 -13
  236. package/src/tags/Format.ts +30 -30
  237. package/src/tags/MaxItems.ts +9 -9
  238. package/src/tags/MaxLength.ts +9 -9
  239. package/src/tags/Maximum.ts +13 -13
  240. package/src/tags/MinItems.ts +9 -9
  241. package/src/tags/MinLength.ts +9 -9
  242. package/src/tags/Minimum.ts +13 -13
  243. package/src/tags/MultipleOf.ts +15 -15
  244. package/src/tags/Pattern.ts +9 -9
  245. package/src/tags/TagBase.ts +68 -68
  246. package/src/tags/Type.ts +27 -27
  247. package/src/tags/index.ts +14 -14
  248. package/src/transform.ts +35 -35
  249. package/src/transformers/CallExpressionTransformer.ts +351 -351
  250. package/src/transformers/FileTransformer.ts +91 -91
  251. package/src/transformers/IProject.ts +15 -15
  252. package/src/transformers/ITransformOptions.ts +62 -62
  253. package/src/transformers/ImportTransformer.ts +66 -66
  254. package/src/transformers/NodeTransformer.ts +13 -13
  255. package/src/transformers/TransformerError.ts +55 -55
  256. package/src/transformers/features/AssertTransformer.ts +16 -16
  257. package/src/transformers/features/CreateAssertTransformer.ts +16 -16
  258. package/src/transformers/features/CreateIsTransformer.ts +10 -10
  259. package/src/transformers/features/CreateRandomTransformer.ts +40 -40
  260. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  261. package/src/transformers/features/IsTransformer.ts +10 -10
  262. package/src/transformers/features/RandomTransformer.ts +44 -44
  263. package/src/transformers/features/ValidateTransformer.ts +11 -11
  264. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +11 -11
  265. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +9 -9
  266. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +9 -9
  267. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +9 -9
  268. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +9 -9
  269. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +9 -9
  270. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +9 -9
  271. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +12 -12
  272. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +11 -11
  273. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +9 -9
  274. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +9 -9
  275. package/src/transformers/features/http/HttpHeadersTransformer.ts +9 -9
  276. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +9 -9
  277. package/src/transformers/features/http/HttpIsQueryTransformer.ts +9 -9
  278. package/src/transformers/features/http/HttpParameterTransformer.ts +9 -9
  279. package/src/transformers/features/http/HttpQueryTransformer.ts +9 -9
  280. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +10 -10
  281. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +9 -9
  282. package/src/transformers/features/json/JsonApplicationTransformer.ts +134 -134
  283. package/src/transformers/features/json/JsonAssertParseTransformer.ts +9 -9
  284. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  285. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +9 -9
  286. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  287. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  288. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +9 -9
  289. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  290. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +11 -11
  291. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  292. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  293. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +9 -9
  294. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  295. package/src/transformers/features/json/JsonValidateParseTransformer.ts +9 -9
  296. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  297. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +9 -9
  298. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +9 -9
  299. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  300. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +9 -9
  301. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +9 -9
  302. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  303. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  304. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  305. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  306. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +11 -11
  307. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +11 -11
  308. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  309. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  310. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  311. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  312. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +9 -9
  313. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +9 -9
  314. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -15
  315. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -15
  316. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -15
  317. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -15
  318. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +15 -15
  319. package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -11
  320. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -15
  321. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +15 -15
  322. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  323. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  324. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +12 -12
  325. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +12 -12
  326. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +9 -9
  327. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +9 -9
  328. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +9 -9
  329. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +9 -9
  330. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +12 -12
  331. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +12 -12
  332. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +9 -9
  333. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +9 -9
  334. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +9 -9
  335. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +9 -9
  336. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  337. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +10 -10
  338. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +10 -10
  339. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +63 -63
  340. package/src/transformers/internal/GenericTransformer.ts +96 -96
  341. package/src/typings/Atomic.ts +13 -13
  342. package/src/typings/ClassProperties.ts +5 -5
  343. package/src/typings/Customizable.ts +5 -5
  344. package/src/typings/OmitNever.ts +3 -3
  345. package/src/typings/ProtobufAtomic.ts +19 -19
  346. package/src/typings/SpecialFields.ts +3 -3
  347. package/src/typings/ValidationPipe.ts +9 -9
  348. package/src/typings/Writable.ts +11 -11
  349. package/src/utils/ArrayUtil.ts +43 -43
  350. package/src/utils/Escaper.ts +46 -46
  351. package/src/utils/MapUtil.ts +12 -12
  352. package/src/utils/NameEncoder.ts +32 -32
  353. package/src/utils/NamingConvention/NamingConvention.ts +77 -77
  354. package/src/utils/NamingConvention/index.ts +1 -1
  355. package/src/utils/PatternUtil.ts +29 -29
  356. package/src/utils/RandomGenerator/RandomGenerator.ts +74 -74
  357. package/src/utils/RandomGenerator/index.ts +1 -1
  358. package/src/utils/Singleton.ts +16 -16
  359. package/src/utils/StringUtil/StringUtil.ts +2 -2
  360. package/src/utils/StringUtil/index.ts +1 -1
package/src/notations.ts CHANGED
@@ -1,977 +1,977 @@
1
- import * as Namespace from "./functional/Namespace";
2
-
3
- import { CamelCase } from "./CamelCase";
4
- import { IValidation } from "./IValidation";
5
- import { PascalCase } from "./PascalCase";
6
- import { SnakeCase } from "./SnakeCase";
7
-
8
- /* ===========================================================
9
- NOTATIONS (NAMING CONVENTIONS)
10
- - CAMEL CASE
11
- - PASCAL CASE
12
- - SNAKE CASE
13
- - FACTORY FUNCTIONS
14
- ==============================================================
15
- CAMEL CASE
16
- ----------------------------------------------------------- */
17
- /**
18
- * Convert to camel case.
19
- *
20
- * Convert every property names of nested objects to follow the camel case convention.
21
- *
22
- * For reference, this `typia.notations.camel()` function does not validate the input value
23
- * type. It just believes that the input value is following the type `T`. Therefore,
24
- * if you can't ensure the input value type, it would be better to call one of them below:
25
- *
26
- * - {@link assertCamel}
27
- * - {@link isCamel}
28
- * - {@link validateCamel}
29
- *
30
- * @template T Type of the input value
31
- * @param input Target object
32
- * @returns Camel case object
33
- *
34
- * @author Jeongho Nam - https://github.com/samchon
35
- */
36
- function camel<T>(input: T): CamelCase<T>;
37
-
38
- /**
39
- * @internal
40
- */
41
- function camel(): never {
42
- return halt("camel");
43
- }
44
- const camelPure = /** @__PURE__ */ Object.assign<typeof camel, {}>(
45
- camel,
46
- /** @__PURE__ */ Namespace.notations.camel("camel"),
47
- );
48
- export { camelPure as camel };
49
-
50
- /**
51
- * Converts to camel case with type assertion.
52
- *
53
- * Convert every property names of nested objects to follow the camel case convention.
54
- * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
55
- *
56
- * @template T Type of the input value
57
- * @param input Target object
58
- * @returns Camel case object
59
- *
60
- * @author Jeongho Nam - https://github.com/samchon
61
- */
62
- function assertCamel<T>(input: T): CamelCase<T>;
63
-
64
- /**
65
- * Converts to camel case with type assertion.
66
- *
67
- * Convert every property names of nested objects to follow the camel case convention.
68
- * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
69
- *
70
- * @template T Type of the input value
71
- * @param input Target object
72
- * @returns Camel case object
73
- *
74
- * @author Jeongho Nam - https://github.com/samchon
75
- */
76
- function assertCamel<T>(input: unknown): CamelCase<T>;
77
-
78
- /**
79
- * @internal
80
- */
81
- function assertCamel(): never {
82
- return halt("assertCamel");
83
- }
84
- const assertCamelPure = /** @__PURE__ */ Object.assign<
85
- typeof assertCamel,
86
- {},
87
- {}
88
- >(
89
- assertCamel,
90
- /** @__PURE__ */ Namespace.notations.camel("assertCamel"),
91
- /** @__PURE__ */ Namespace.assert("notations.assertCamel"),
92
- );
93
- export { assertCamelPure as assertCamel };
94
-
95
- /**
96
- * Converts to camel case with type checking.
97
- *
98
- * Convert every property names of nested objects to follow the camel case convention.
99
- * If the input value does not follow the type `T`, it returns `null` value instead.
100
- *
101
- * @template T Type of the input value
102
- * @param input Target object
103
- * @returns Camel case object when exact type, otherwise null
104
- *
105
- * @author Jeongho Nam - https://github.com/samchon
106
- */
107
- function isCamel<T>(input: T): CamelCase<T> | null;
108
-
109
- /**
110
- * Converts to camel case with type checking.
111
- *
112
- * Convert every property names of nested objects to follow the camel case convention.
113
- * If the input value does not follow the type `T`, it returns `null` value instead.
114
- *
115
- * @template T Type of the input value
116
- * @param input Target object
117
- * @returns Camel case object when exact type, otherwise null
118
- *
119
- * @author Jeongho Nam - https://github.com/samchon
120
- */
121
- function isCamel<T>(input: unknown): CamelCase<T> | null;
122
-
123
- /**
124
- * @internal
125
- */
126
- function isCamel(): never {
127
- return halt("isCamel");
128
- }
129
- const isCamelPure = /** @__PURE__ */ Object.assign<typeof isCamel, {}, {}>(
130
- isCamel,
131
- /** @__PURE__ */ Namespace.notations.camel("isCamel"),
132
- /** @__PURE__ */ Namespace.is(),
133
- );
134
- export { isCamelPure as isCamel };
135
-
136
- /**
137
- * Converts to camel case with type validation.
138
- *
139
- * Convert every property names of nested objects to follow the camel case convention.
140
- * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
141
- * object. Otherwise, there's no problem on the input value, camel cased converted data
142
- * would be stored in the `data` property of the output {@link IValidation.Success} object.
143
- *
144
- * @template T Type of the input value
145
- * @param input Target object
146
- * @returns Validation result with camel case object
147
- *
148
- * @author Jeongho Nam - https://github.com/samchon
149
- */
150
- function validateCamel<T>(input: T): IValidation<CamelCase<T>>;
151
-
152
- /**
153
- * Converts to camel case with type validation.
154
- *
155
- * Convert every property names of nested objects to follow the camel case convention.
156
- * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
157
- * object. Otherwise, there's no problem on the input value, camel cased converted data
158
- * would be stored in the `data` property of the output {@link IValidation.Success} object.
159
- *
160
- * @template T Type of the input value
161
- * @param input Target object
162
- * @returns Validation result with camel case object
163
- *
164
- * @author Jeongho Nam - https://github.com/samchon
165
- */
166
- function validateCamel<T>(input: unknown): IValidation<CamelCase<T>>;
167
-
168
- /**
169
- * @internal
170
- */
171
- function validateCamel(): never {
172
- return halt("validateCamel");
173
- }
174
- const validateCamelPure = /** @__PURE__ */ Object.assign<
175
- typeof validateCamel,
176
- {},
177
- {}
178
- >(
179
- validateCamel,
180
- /** @__PURE__ */ Namespace.notations.camel("validateCamel"),
181
- /** @__PURE__ */ Namespace.validate(),
182
- );
183
- export { validateCamelPure as validateCamel };
184
-
185
- /* -----------------------------------------------------------
186
- PASCAL CASE
187
- ----------------------------------------------------------- */
188
- /**
189
- * Convert to pascal case.
190
- *
191
- * Convert every property names of nested objects to follow the pascal case convention.
192
- *
193
- * For reference, this `typia.notations.pascal()` function does not validate the input value
194
- * type. It just believes that the input value is following the type `T`. Therefore,
195
- * if you can't ensure the input value type, it would be better to call one of them below:
196
- *
197
- * - {@link assertPascal}
198
- * - {@link isPascal}
199
- * - {@link validatePascal}
200
- *
201
- * @template T Type of the input value
202
- * @param input Target object
203
- * @returns Pascal case object
204
- *
205
- * @author Jeongho Nam - https://github.com/samchon
206
- */
207
- function pascal<T>(input: T): PascalCase<T>;
208
-
209
- /**
210
- * @internal
211
- */
212
- function pascal(): never {
213
- return halt("pascal");
214
- }
215
- const pascalPure = /** @__PURE__ */ Object.assign<typeof pascal, {}>(
216
- pascal,
217
- /** @__PURE__ */ Namespace.notations.pascal("pascal"),
218
- );
219
- export { pascalPure as pascal };
220
-
221
- /**
222
- * Converts to pascal case with type assertion.
223
- *
224
- * Convert every property names of nested objects to follow the pascal case convention.
225
- * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
226
- *
227
- * @template T Type of the input value
228
- * @param input Target object
229
- * @returns Pascal case object
230
- *
231
- * @author Jeongho Nam - https://github.com/samchon
232
- */
233
- function assertPascal<T>(input: T): PascalCase<T>;
234
-
235
- /**
236
- * Converts to pascal case with type assertion.
237
- *
238
- * Convert every property names of nested objects to follow the pascal case convention.
239
- * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
240
- *
241
- * @template T Type of the input value
242
- * @param input Target object
243
- * @returns Pascal case object
244
- *
245
- * @author Jeongho Nam - https://github.com/samchon
246
- */
247
- function assertPascal<T>(input: unknown): PascalCase<T>;
248
-
249
- /**
250
- * @internal
251
- */
252
- function assertPascal(): never {
253
- return halt("assertPascal");
254
- }
255
- const assertPascalPure = /** @__PURE__ */ Object.assign<
256
- typeof assertPascal,
257
- {},
258
- {}
259
- >(
260
- assertPascal,
261
- /** @__PURE__ */ Namespace.notations.pascal("assertPascal"),
262
- /** @__PURE__ */ Namespace.assert("notations.assertPascal"),
263
- );
264
- export { assertPascalPure as assertPascal };
265
-
266
- /**
267
- * Converts to pascal case with type checking.
268
- *
269
- * Convert every property names of nested objects to follow the pascal case convention.
270
- * If the input value does not follow the type `T`, it returns `null` value instead.
271
- *
272
- * @template T Type of the input value
273
- * @param input Target object
274
- * @returns Pascal case object when exact type, otherwise null
275
- *
276
- * @author Jeongho Nam - https://github.com/samchon
277
- */
278
- function isPascal<T>(input: T): PascalCase<T> | null;
279
-
280
- /**
281
- * Converts to pascal case with type checking.
282
- *
283
- * Convert every property names of nested objects to follow the pascal case convention.
284
- * If the input value does not follow the type `T`, it returns `null` value instead.
285
- *
286
- * @template T Type of the input value
287
- * @param input Target object
288
- * @returns Pascal case object when exact type, otherwise null
289
- *
290
- * @author Jeongho Nam - https://github.com/samchon
291
- */
292
- function isPascal<T>(input: unknown): PascalCase<T> | null;
293
-
294
- /**
295
- * @internal
296
- */
297
- function isPascal(): never {
298
- return halt("isPascal");
299
- }
300
- const isPascalPure = /** @__PURE__ */ Object.assign<typeof isPascal, {}, {}>(
301
- isPascal,
302
- /** @__PURE__ */ Namespace.notations.pascal("isPascal"),
303
- /** @__PURE__ */ Namespace.is(),
304
- );
305
- export { isPascalPure as isPascal };
306
-
307
- /**
308
- * Converts to pascal case with type validation.
309
- *
310
- * Convert every property names of nested objects to follow the pascal case convention.
311
- * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
312
- * object. Otherwise, there's no problem on the input value, pascal cased converted data
313
- * would be stored in the `data` property of the output {@link IValidation.Success} object.
314
- *
315
- * @template T Type of the input value
316
- * @param input Target object
317
- * @returns Validation result with pascal case object
318
- *
319
- * @author Jeongho Nam - https://github.com/samchon
320
- */
321
- function validatePascal<T>(input: T): IValidation<PascalCase<T>>;
322
-
323
- /**
324
- * Converts to pascal case with type validation.
325
- *
326
- * Convert every property names of nested objects to follow the pascal case convention.
327
- * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
328
- * object. Otherwise, there's no problem on the input value, pascal cased converted data
329
- * would be stored in the `data` property of the output {@link IValidation.Success} object.
330
- *
331
- * @template T Type of the input value
332
- * @param input Target object
333
- * @returns Validation result with pascal case object
334
- *
335
- * @author Jeongho Nam - https://github.com/samchon
336
- */
337
- function validatePascal<T>(input: unknown): IValidation<PascalCase<T>>;
338
-
339
- /**
340
- * @internal
341
- */
342
- function validatePascal(): never {
343
- return halt("validatePascal");
344
- }
345
- const validatePascalPure = /** @__PURE__ */ Object.assign<
346
- typeof validatePascal,
347
- {},
348
- {}
349
- >(
350
- validatePascal,
351
- /** @__PURE__ */ Namespace.notations.pascal("validatePascal"),
352
- /** @__PURE__ */ Namespace.validate(),
353
- );
354
- export { validatePascalPure as validatePascal };
355
-
356
- /* -----------------------------------------------------------
357
- SNAKE CASE
358
- ----------------------------------------------------------- */
359
- /**
360
- * Convert to snake case.
361
- *
362
- * Convert every property names of nested objects to follow the snake case convention.
363
- *
364
- * For reference, this `typia.notations.snake()` function does not validate the input value
365
- * type. It just believes that the input value is following the type `T`. Therefore,
366
- * if you can't ensure the input value type, it would be better to call one of them below:
367
- *
368
- * - {@link assertSnake}
369
- * - {@link isSnake}
370
- * - {@link validateSnake}
371
- *
372
- * @template T Type of the input value
373
- * @param input Target object
374
- * @returns Snake case object
375
- *
376
- * @author Jeongho Nam - https://github.com/samchon
377
- */
378
- function snake<T>(input: T): SnakeCase<T>;
379
-
380
- /**
381
- * @internal
382
- */
383
- function snake(): never {
384
- return halt("snake");
385
- }
386
- const snakePure = /** @__PURE__ */ Object.assign<typeof snake, {}>(
387
- snake,
388
- /** @__PURE__ */ Namespace.notations.snake("snake"),
389
- );
390
- export { snakePure as snake };
391
-
392
- /**
393
- * Converts to snake case with type assertion.
394
- *
395
- * Convert every property names of nested objects to follow the snake case convention.
396
- * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
397
- *
398
- * @template T Type of the input value
399
- * @param input Target object
400
- * @returns Snake case object
401
- *
402
- * @author Jeongho Nam - https://github.com/samchon
403
- */
404
- function assertSnake<T>(input: T): SnakeCase<T>;
405
-
406
- /**
407
- * Converts to snake case with type assertion.
408
- *
409
- * Convert every property names of nested objects to follow the snake case convention.
410
- * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
411
- *
412
- * @template T Type of the input value
413
- * @param input Target object
414
- * @returns Snake case object
415
- *
416
- * @author Jeongho Nam - https://github.com/samchon
417
- */
418
- function assertSnake<T>(input: unknown): SnakeCase<T>;
419
-
420
- /**
421
- * @internal
422
- */
423
- function assertSnake(): never {
424
- return halt("assertSnake");
425
- }
426
- const assertSnakePure = /** @__PURE__ */ Object.assign<
427
- typeof assertSnake,
428
- {},
429
- {}
430
- >(
431
- assertSnake,
432
- /** @__PURE__ */ Namespace.notations.snake("assertSnake"),
433
- /** @__PURE__ */ Namespace.assert("notations.assertSnake"),
434
- );
435
- export { assertSnakePure as assertSnake };
436
-
437
- /**
438
- * Converts to snake case with type checking.
439
- *
440
- * Convert every property names of nested objects to follow the snake case convention.
441
- * If the input value does not follow the type `T`, it returns `null` value instead.
442
- *
443
- * @template T Type of the input value
444
- * @param input Target object
445
- * @returns Snake case object when exact type, otherwise null
446
- *
447
- * @author Jeongho Nam - https://github.com/samchon
448
- */
449
- function isSnake<T>(input: T): SnakeCase<T> | null;
450
-
451
- /**
452
- * Converts to snake case with type checking.
453
- *
454
- * Convert every property names of nested objects to follow the snake case convention.
455
- * If the input value does not follow the type `T`, it returns `null` value instead.
456
- *
457
- * @template T Type of the input value
458
- * @param input Target object
459
- * @returns Snake case object when exact type, otherwise null
460
- *
461
- * @author Jeongho Nam - https://github.com/samchon
462
- */
463
- function isSnake<T>(input: unknown): SnakeCase<T> | null;
464
-
465
- /**
466
- * @internal
467
- */
468
- function isSnake(): never {
469
- return halt("isSnake");
470
- }
471
- const isSnakePure = /** @__PURE__ */ Object.assign<typeof isSnake, {}, {}>(
472
- isSnake,
473
- /** @__PURE__ */ Namespace.notations.snake("isSnake"),
474
- /** @__PURE__ */ Namespace.is(),
475
- );
476
- export { isSnakePure as isSnake };
477
-
478
- /**
479
- * Converts to snake case with type validation.
480
- *
481
- * Convert every property names of nested objects to follow the snake case convention.
482
- * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
483
- * object. Otherwise, there's no problem on the input value, snake cased converted data
484
- * would be stored in the `data` property of the output {@link IValidation.Success} object.
485
- *
486
- * @template T Type of the input value
487
- * @param input Target object
488
- * @returns Validation result with snake case object
489
- *
490
- * @author Jeongho Nam - https://github.com/samchon
491
- */
492
- function validateSnake<T>(input: T): IValidation<SnakeCase<T>>;
493
-
494
- /**
495
- * Converts to snake case with type validation.
496
- *
497
- * Convert every property names of nested objects to follow the snake case convention.
498
- * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
499
- * object. Otherwise, there's no problem on the input value, snake cased converted data
500
- * would be stored in the `data` property of the output {@link IValidation.Success} object.
501
- *
502
- * @template T Type of the input value
503
- * @param input Target object
504
- * @returns Validation result with snake case object
505
- *
506
- * @author Jeongho Nam - https://github.com/samchon
507
- */
508
- function validateSnake<T>(input: unknown): IValidation<SnakeCase<T>>;
509
-
510
- /**
511
- * @internal
512
- */
513
- function validateSnake(): never {
514
- return halt("validateSnake");
515
- }
516
- const validateSnakePure = /** @__PURE__ */ Object.assign<
517
- typeof validateSnake,
518
- {},
519
- {}
520
- >(
521
- validateSnake,
522
- /** @__PURE__ */ Namespace.notations.snake("validateSnake"),
523
- /** @__PURE__ */ Namespace.validate(),
524
- );
525
- export { validateSnakePure as validateSnake };
526
- /* -----------------------------------------------------------
527
- FACTORY FUNCTIONS
528
- ----------------------------------------------------------- */
529
- /**
530
- * Creates a reusable {@link camel} function.
531
- *
532
- * @danger You must configure the generic argument `T`
533
- * @returns Nothing until be configure the generic argument `T`
534
- * @throws compile error
535
- *
536
- * @author Jeongho Nam - https://github.com/samchon
537
- */
538
- function createCamel(): never;
539
-
540
- /**
541
- * Creates a reusable {@link camel} function.
542
- *
543
- * @template T Type of the input value
544
- * @returns A reusable `camel` function
545
- *
546
- * @author Jeongho Nam - https://github.com/samchon
547
- */
548
- function createCamel<T>(): (input: T) => CamelCase<T>;
549
-
550
- /**
551
- * @internal
552
- */
553
- function createCamel(): never {
554
- halt("createCamel");
555
- }
556
- const createCamelPure = /** @__PURE__ */ Object.assign<typeof createCamel, {}>(
557
- createCamel,
558
- /** @__PURE__ */ Namespace.notations.camel("createCamel"),
559
- );
560
- export { createCamelPure as createCamel };
561
-
562
- /**
563
- * Creates a reusable {@link assertCamel} function.
564
- *
565
- * @danger You must configure the generic argument `T`
566
- * @returns Nothing until be configure the generic argument `T`
567
- * @throws compile error
568
- *
569
- * @author Jeongho Nam - https://github.com/samchon
570
- */
571
- function createAssertCamel(): never;
572
-
573
- /**
574
- * Creates a reusable {@link assertCamel} function.
575
- *
576
- * @template T Type of the input value
577
- * @returns A reusable `assertCamel` function
578
- *
579
- * @author Jeongho Nam - https://github.com/samchon
580
- */
581
- function createAssertCamel<T>(): (input: T) => CamelCase<T>;
582
-
583
- /**
584
- * @internal
585
- */
586
- function createAssertCamel(): never {
587
- halt("createAssertCamel");
588
- }
589
- const createAssertCamelPure = /** @__PURE__ */ Object.assign<
590
- typeof createAssertCamel,
591
- {},
592
- {}
593
- >(
594
- createAssertCamel,
595
- /** @__PURE__ */ Namespace.notations.camel("createAssertCamel"),
596
- /** @__PURE__ */ Namespace.assert("notations.createAssertCamel"),
597
- );
598
- export { createAssertCamelPure as createAssertCamel };
599
-
600
- /**
601
- * Creates a reusable {@link isCamel} function.
602
- *
603
- * @danger You must configure the generic argument `T`
604
- * @returns Nothing until be configure the generic argument `T`
605
- * @throws compile error
606
- *
607
- * @author Jeongho Nam - https://github.com/samchon
608
- */
609
- function createIsCamel(): never;
610
-
611
- /**
612
- * Creates a reusable {@link isCamel} function.
613
- *
614
- * @template T Type of the input value
615
- * @returns A reusable `isCamel` function
616
- *
617
- * @author Jeongho Nam - https://github.com/samchon
618
- */
619
- function createIsCamel<T>(): (input: T) => CamelCase<T> | null;
620
-
621
- /**
622
- * @internal
623
- */
624
- function createIsCamel(): never {
625
- halt("createIsCamel");
626
- }
627
- const createIsCamelPure = /** @__PURE__ */ Object.assign<
628
- typeof createIsCamel,
629
- {},
630
- {}
631
- >(
632
- createIsCamel,
633
- /** @__PURE__ */ Namespace.notations.camel("createIsCamel"),
634
- /** @__PURE__ */ Namespace.is(),
635
- );
636
- export { createIsCamelPure as createIsCamel };
637
-
638
- /**
639
- * Creates a reusable {@link validateCamel} function.
640
- *
641
- * @danger You must configure the generic argument `T`
642
- * @returns Nothing until be configure the generic argument `T`
643
- * @throws compile error
644
- *
645
- * @author Jeongho Nam - https://github.com/samchon
646
- */
647
- function createValidateCamel(): never;
648
-
649
- /**
650
- * Creates a reusable {@link validateCamel} function.
651
- *
652
- * @template T Type of the input value
653
- * @returns A reusable `validateCamel` function
654
- *
655
- * @author Jeongho Nam - https://github.com/samchon
656
- */
657
- function createValidateCamel<T>(): (input: T) => IValidation<CamelCase<T>>;
658
-
659
- /**
660
- * @internal
661
- */
662
- function createValidateCamel(): never {
663
- halt("createValidateCamel");
664
- }
665
- const createValidateCamelPure = /** @__PURE__ */ Object.assign<
666
- typeof createValidateCamel,
667
- {},
668
- {}
669
- >(
670
- createValidateCamel,
671
- /** @__PURE__ */ Namespace.notations.camel("createValidateCamel"),
672
- /** @__PURE__ */ Namespace.validate(),
673
- );
674
- export { createValidateCamelPure as createValidateCamel };
675
-
676
- /**
677
- * Creates a reusable {@link pascal} function.
678
- *
679
- * @danger You must configure the generic argument `T`
680
- * @returns Nothing until be configure the generic argument `T`
681
- * @throws compile error
682
- *
683
- * @author Jeongho Nam - https://github.com/samchon
684
- */
685
- function createPascal(): never;
686
-
687
- /**
688
- * Creates a reusable {@link pascal} function.
689
- *
690
- * @template T Type of the input value
691
- * @returns A reusable `pascal` function
692
- *
693
- * @author Jeongho Nam - https://github.com/samchon
694
- */
695
- function createPascal<T>(): (input: T) => PascalCase<T>;
696
-
697
- /**
698
- * @internal
699
- */
700
- function createPascal(): never {
701
- halt("createPascal");
702
- }
703
- const createPascalPure = /** @__PURE__ */ Object.assign<
704
- typeof createPascal,
705
- {}
706
- >(createPascal, /** @__PURE__ */ Namespace.notations.pascal("createPascal"));
707
- export { createPascalPure as createPascal };
708
-
709
- /**
710
- * Creates a reusable {@link assertPascal} function.
711
- *
712
- * @danger You must configure the generic argument `T`
713
- * @returns Nothing until be configure the generic argument `T`
714
- * @throws compile error
715
- *
716
- * @author Jeongho Nam - https://github.com/samchon
717
- */
718
- function createAssertPascal(): never;
719
-
720
- /**
721
- * Creates a reusable {@link assertPascal} function.
722
- *
723
- * @template T Type of the input value
724
- * @returns A reusable `assertPascal` function
725
- *
726
- * @author Jeongho Nam - https://github.com/samchon
727
- */
728
- function createAssertPascal<T>(): (input: T) => PascalCase<T>;
729
-
730
- /**
731
- * @internal
732
- */
733
- function createAssertPascal(): never {
734
- halt("createAssertPascal");
735
- }
736
- const createAssertPascalPure = /** @__PURE__ */ Object.assign<
737
- typeof createAssertPascal,
738
- {},
739
- {}
740
- >(
741
- createAssertPascal,
742
- /** @__PURE__ */ Namespace.notations.pascal("createAssertPascal"),
743
- /** @__PURE__ */ Namespace.assert("notations.createAssertPascal"),
744
- );
745
- export { createAssertPascalPure as createAssertPascal };
746
-
747
- /**
748
- * Creates a reusable {@link isPascal} function.
749
- *
750
- * @danger You must configure the generic argument `T`
751
- * @returns Nothing until be configure the generic argument `T`
752
- * @throws compile error
753
- *
754
- * @author Jeongho Nam - https://github.com/samchon
755
- */
756
- function createIsPascal(): never;
757
-
758
- /**
759
- * Creates a reusable {@link isPascal} function.
760
- *
761
- * @template T Type of the input value
762
- * @returns A reusable `isPascal` function
763
- *
764
- * @author Jeongho Nam - https://github.com/samchon
765
- */
766
- function createIsPascal<T>(): (input: T) => PascalCase<T> | null;
767
-
768
- /**
769
- * @internal
770
- */
771
- function createIsPascal(): never {
772
- halt("createIsPascal");
773
- }
774
- const createIsPascalPure = /** @__PURE__ */ Object.assign<
775
- typeof createIsPascal,
776
- {},
777
- {}
778
- >(
779
- createIsPascal,
780
- /** @__PURE__ */ Namespace.notations.pascal("createIsPascal"),
781
- /** @__PURE__ */ Namespace.is(),
782
- );
783
- export { createIsPascalPure as createIsPascal };
784
-
785
- /**
786
- * Creates a reusable {@link validatePascal} function.
787
- *
788
- * @danger You must configure the generic argument `T`
789
- * @returns Nothing until be configure the generic argument `T`
790
- * @throws compile error
791
- *
792
- * @author Jeongho Nam - https://github.com/samchon
793
- */
794
- function createValidatePascal(): never;
795
-
796
- /**
797
- * Creates a reusable {@link validatePascal} function.
798
- *
799
- * @template T Type of the input value
800
- * @returns A reusable `validatePascal` function
801
- *
802
- * @author Jeongho Nam - https://github.com/samchon
803
- */
804
- function createValidatePascal<T>(): (input: T) => IValidation<PascalCase<T>>;
805
-
806
- /**
807
- * @internal
808
- */
809
- function createValidatePascal(): never {
810
- halt("createValidatePascal");
811
- }
812
- const createValidatePascalPure = /** @__PURE__ */ Object.assign<
813
- typeof createValidatePascal,
814
- {},
815
- {}
816
- >(
817
- createValidatePascal,
818
- /** @__PURE__ */ Namespace.notations.pascal("createValidatePascal"),
819
- /** @__PURE__ */ Namespace.validate(),
820
- );
821
- export { createValidatePascalPure as createValidatePascal };
822
-
823
- /**
824
- * Creates a reusable {@link snake} function.
825
- *
826
- * @danger You must configure the generic argument `T`
827
- * @returns Nothing until be configure the generic argument `T`
828
- * @throws compile error
829
- *
830
- * @author Jeongho Nam - https://github.com/samchon
831
- */
832
- function createSnake(): never;
833
-
834
- /**
835
- * Creates a reusable {@link snake} function.
836
- *
837
- * @template T Type of the input value
838
- * @returns A reusable `snake` function
839
- *
840
- * @author Jeongho Nam - https://github.com/samchon
841
- */
842
- function createSnake<T>(): (input: T) => SnakeCase<T>;
843
-
844
- /**
845
- * @internal
846
- */
847
- function createSnake(): never {
848
- halt("createSnake");
849
- }
850
- const createSnakePure = /** @__PURE__ */ Object.assign<typeof createSnake, {}>(
851
- createSnake,
852
- /** @__PURE__ */ Namespace.notations.snake("createSnake"),
853
- );
854
- export { createSnakePure as createSnake };
855
-
856
- /**
857
- * Creates a reusable {@link assertSnake} function.
858
- *
859
- * @danger You must configure the generic argument `T`
860
- * @returns Nothing until be configure the generic argument `T`
861
- * @throws compile error
862
- *
863
- * @author Jeongho Nam - https://github.com/samchon
864
- */
865
- function createAssertSnake(): never;
866
-
867
- /**
868
- * Creates a reusable {@link assertSnake} function.
869
- *
870
- * @template T Type of the input value
871
- * @returns A reusable `assertSnake` function
872
- *
873
- * @author Jeongho Nam - https://github.com/samchon
874
- */
875
- function createAssertSnake<T>(): (input: T) => SnakeCase<T>;
876
-
877
- /**
878
- * @internal
879
- */
880
- function createAssertSnake(): never {
881
- halt("createAssertSnake");
882
- }
883
- const createAssertSnakePure = /** @__PURE__ */ Object.assign<
884
- typeof createAssertSnake,
885
- {},
886
- {}
887
- >(
888
- createAssertSnake,
889
- /** @__PURE__ */ Namespace.notations.snake("createAssertSnake"),
890
- /** @__PURE__ */ Namespace.assert("notations.createAssertSnake"),
891
- );
892
- export { createAssertSnakePure as createAssertSnake };
893
-
894
- /**
895
- * Creates a reusable {@link isSnake} function.
896
- *
897
- * @danger You must configure the generic argument `T`
898
- * @returns Nothing until be configure the generic argument `T`
899
- * @throws compile error
900
- *
901
- * @author Jeongho Nam - https://github.com/samchon
902
- */
903
- function createIsSnake(): never;
904
-
905
- /**
906
- * Creates a reusable {@link isSnake} function.
907
- *
908
- * @template T Type of the input value
909
- * @returns A reusable `isSnake` function
910
- *
911
- * @author Jeongho Nam - https://github.com/samchon
912
- */
913
- function createIsSnake<T>(): (input: T) => SnakeCase<T> | null;
914
-
915
- /**
916
- * @internal
917
- */
918
- function createIsSnake(): never {
919
- halt("createIsSnake");
920
- }
921
- const createIsSnakePure = /** @__PURE__ */ Object.assign<
922
- typeof createIsSnake,
923
- {},
924
- {}
925
- >(
926
- createIsSnake,
927
- /** @__PURE__ */ Namespace.notations.snake("createIsSnake"),
928
- /** @__PURE__ */ Namespace.is(),
929
- );
930
- export { createIsSnakePure as createIsSnake };
931
-
932
- /**
933
- * Creates a reusable {@link validateSnake} function.
934
- *
935
- * @danger You must configure the generic argument `T`
936
- * @returns Nothing until be configure the generic argument `T`
937
- * @throws compile error
938
- *
939
- * @author Jeongho Nam - https://github.com/samchon
940
- */
941
- function createValidateSnake(): never;
942
-
943
- /**
944
- * Creates a reusable {@link validateSnake} function.
945
- *
946
- * @template T Type of the input value
947
- * @returns A reusable `validateSnake` function
948
- *
949
- * @author Jeongho Nam - https://github.com/samchon
950
- */
951
- function createValidateSnake<T>(): (input: T) => IValidation<SnakeCase<T>>;
952
-
953
- /**
954
- * @internal
955
- */
956
- function createValidateSnake(): never {
957
- halt("createValidateSnake");
958
- }
959
- const createValidateSnakePure = /** @__PURE__ */ Object.assign<
960
- typeof createValidateSnake,
961
- {},
962
- {}
963
- >(
964
- createValidateSnake,
965
- /** @__PURE__ */ Namespace.notations.snake("createValidateSnake"),
966
- /** @__PURE__ */ Namespace.validate(),
967
- );
968
- export { createValidateSnakePure as createValidateSnake };
969
-
970
- /**
971
- * @internal
972
- */
973
- function halt(name: string): never {
974
- throw new Error(
975
- `Error on typia.notations.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
976
- );
977
- }
1
+ import * as Namespace from "./functional/Namespace";
2
+
3
+ import { CamelCase } from "./CamelCase";
4
+ import { IValidation } from "./IValidation";
5
+ import { PascalCase } from "./PascalCase";
6
+ import { SnakeCase } from "./SnakeCase";
7
+
8
+ /* ===========================================================
9
+ NOTATIONS (NAMING CONVENTIONS)
10
+ - CAMEL CASE
11
+ - PASCAL CASE
12
+ - SNAKE CASE
13
+ - FACTORY FUNCTIONS
14
+ ==============================================================
15
+ CAMEL CASE
16
+ ----------------------------------------------------------- */
17
+ /**
18
+ * Convert to camel case.
19
+ *
20
+ * Convert every property names of nested objects to follow the camel case convention.
21
+ *
22
+ * For reference, this `typia.notations.camel()` function does not validate the input value
23
+ * type. It just believes that the input value is following the type `T`. Therefore,
24
+ * if you can't ensure the input value type, it would be better to call one of them below:
25
+ *
26
+ * - {@link assertCamel}
27
+ * - {@link isCamel}
28
+ * - {@link validateCamel}
29
+ *
30
+ * @template T Type of the input value
31
+ * @param input Target object
32
+ * @returns Camel case object
33
+ *
34
+ * @author Jeongho Nam - https://github.com/samchon
35
+ */
36
+ function camel<T>(input: T): CamelCase<T>;
37
+
38
+ /**
39
+ * @internal
40
+ */
41
+ function camel(): never {
42
+ return halt("camel");
43
+ }
44
+ const camelPure = /** @__PURE__ */ Object.assign<typeof camel, {}>(
45
+ camel,
46
+ /** @__PURE__ */ Namespace.notations.camel("camel"),
47
+ );
48
+ export { camelPure as camel };
49
+
50
+ /**
51
+ * Converts to camel case with type assertion.
52
+ *
53
+ * Convert every property names of nested objects to follow the camel case convention.
54
+ * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
55
+ *
56
+ * @template T Type of the input value
57
+ * @param input Target object
58
+ * @returns Camel case object
59
+ *
60
+ * @author Jeongho Nam - https://github.com/samchon
61
+ */
62
+ function assertCamel<T>(input: T): CamelCase<T>;
63
+
64
+ /**
65
+ * Converts to camel case with type assertion.
66
+ *
67
+ * Convert every property names of nested objects to follow the camel case convention.
68
+ * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
69
+ *
70
+ * @template T Type of the input value
71
+ * @param input Target object
72
+ * @returns Camel case object
73
+ *
74
+ * @author Jeongho Nam - https://github.com/samchon
75
+ */
76
+ function assertCamel<T>(input: unknown): CamelCase<T>;
77
+
78
+ /**
79
+ * @internal
80
+ */
81
+ function assertCamel(): never {
82
+ return halt("assertCamel");
83
+ }
84
+ const assertCamelPure = /** @__PURE__ */ Object.assign<
85
+ typeof assertCamel,
86
+ {},
87
+ {}
88
+ >(
89
+ assertCamel,
90
+ /** @__PURE__ */ Namespace.notations.camel("assertCamel"),
91
+ /** @__PURE__ */ Namespace.assert("notations.assertCamel"),
92
+ );
93
+ export { assertCamelPure as assertCamel };
94
+
95
+ /**
96
+ * Converts to camel case with type checking.
97
+ *
98
+ * Convert every property names of nested objects to follow the camel case convention.
99
+ * If the input value does not follow the type `T`, it returns `null` value instead.
100
+ *
101
+ * @template T Type of the input value
102
+ * @param input Target object
103
+ * @returns Camel case object when exact type, otherwise null
104
+ *
105
+ * @author Jeongho Nam - https://github.com/samchon
106
+ */
107
+ function isCamel<T>(input: T): CamelCase<T> | null;
108
+
109
+ /**
110
+ * Converts to camel case with type checking.
111
+ *
112
+ * Convert every property names of nested objects to follow the camel case convention.
113
+ * If the input value does not follow the type `T`, it returns `null` value instead.
114
+ *
115
+ * @template T Type of the input value
116
+ * @param input Target object
117
+ * @returns Camel case object when exact type, otherwise null
118
+ *
119
+ * @author Jeongho Nam - https://github.com/samchon
120
+ */
121
+ function isCamel<T>(input: unknown): CamelCase<T> | null;
122
+
123
+ /**
124
+ * @internal
125
+ */
126
+ function isCamel(): never {
127
+ return halt("isCamel");
128
+ }
129
+ const isCamelPure = /** @__PURE__ */ Object.assign<typeof isCamel, {}, {}>(
130
+ isCamel,
131
+ /** @__PURE__ */ Namespace.notations.camel("isCamel"),
132
+ /** @__PURE__ */ Namespace.is(),
133
+ );
134
+ export { isCamelPure as isCamel };
135
+
136
+ /**
137
+ * Converts to camel case with type validation.
138
+ *
139
+ * Convert every property names of nested objects to follow the camel case convention.
140
+ * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
141
+ * object. Otherwise, there's no problem on the input value, camel cased converted data
142
+ * would be stored in the `data` property of the output {@link IValidation.Success} object.
143
+ *
144
+ * @template T Type of the input value
145
+ * @param input Target object
146
+ * @returns Validation result with camel case object
147
+ *
148
+ * @author Jeongho Nam - https://github.com/samchon
149
+ */
150
+ function validateCamel<T>(input: T): IValidation<CamelCase<T>>;
151
+
152
+ /**
153
+ * Converts to camel case with type validation.
154
+ *
155
+ * Convert every property names of nested objects to follow the camel case convention.
156
+ * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
157
+ * object. Otherwise, there's no problem on the input value, camel cased converted data
158
+ * would be stored in the `data` property of the output {@link IValidation.Success} object.
159
+ *
160
+ * @template T Type of the input value
161
+ * @param input Target object
162
+ * @returns Validation result with camel case object
163
+ *
164
+ * @author Jeongho Nam - https://github.com/samchon
165
+ */
166
+ function validateCamel<T>(input: unknown): IValidation<CamelCase<T>>;
167
+
168
+ /**
169
+ * @internal
170
+ */
171
+ function validateCamel(): never {
172
+ return halt("validateCamel");
173
+ }
174
+ const validateCamelPure = /** @__PURE__ */ Object.assign<
175
+ typeof validateCamel,
176
+ {},
177
+ {}
178
+ >(
179
+ validateCamel,
180
+ /** @__PURE__ */ Namespace.notations.camel("validateCamel"),
181
+ /** @__PURE__ */ Namespace.validate(),
182
+ );
183
+ export { validateCamelPure as validateCamel };
184
+
185
+ /* -----------------------------------------------------------
186
+ PASCAL CASE
187
+ ----------------------------------------------------------- */
188
+ /**
189
+ * Convert to pascal case.
190
+ *
191
+ * Convert every property names of nested objects to follow the pascal case convention.
192
+ *
193
+ * For reference, this `typia.notations.pascal()` function does not validate the input value
194
+ * type. It just believes that the input value is following the type `T`. Therefore,
195
+ * if you can't ensure the input value type, it would be better to call one of them below:
196
+ *
197
+ * - {@link assertPascal}
198
+ * - {@link isPascal}
199
+ * - {@link validatePascal}
200
+ *
201
+ * @template T Type of the input value
202
+ * @param input Target object
203
+ * @returns Pascal case object
204
+ *
205
+ * @author Jeongho Nam - https://github.com/samchon
206
+ */
207
+ function pascal<T>(input: T): PascalCase<T>;
208
+
209
+ /**
210
+ * @internal
211
+ */
212
+ function pascal(): never {
213
+ return halt("pascal");
214
+ }
215
+ const pascalPure = /** @__PURE__ */ Object.assign<typeof pascal, {}>(
216
+ pascal,
217
+ /** @__PURE__ */ Namespace.notations.pascal("pascal"),
218
+ );
219
+ export { pascalPure as pascal };
220
+
221
+ /**
222
+ * Converts to pascal case with type assertion.
223
+ *
224
+ * Convert every property names of nested objects to follow the pascal case convention.
225
+ * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
226
+ *
227
+ * @template T Type of the input value
228
+ * @param input Target object
229
+ * @returns Pascal case object
230
+ *
231
+ * @author Jeongho Nam - https://github.com/samchon
232
+ */
233
+ function assertPascal<T>(input: T): PascalCase<T>;
234
+
235
+ /**
236
+ * Converts to pascal case with type assertion.
237
+ *
238
+ * Convert every property names of nested objects to follow the pascal case convention.
239
+ * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
240
+ *
241
+ * @template T Type of the input value
242
+ * @param input Target object
243
+ * @returns Pascal case object
244
+ *
245
+ * @author Jeongho Nam - https://github.com/samchon
246
+ */
247
+ function assertPascal<T>(input: unknown): PascalCase<T>;
248
+
249
+ /**
250
+ * @internal
251
+ */
252
+ function assertPascal(): never {
253
+ return halt("assertPascal");
254
+ }
255
+ const assertPascalPure = /** @__PURE__ */ Object.assign<
256
+ typeof assertPascal,
257
+ {},
258
+ {}
259
+ >(
260
+ assertPascal,
261
+ /** @__PURE__ */ Namespace.notations.pascal("assertPascal"),
262
+ /** @__PURE__ */ Namespace.assert("notations.assertPascal"),
263
+ );
264
+ export { assertPascalPure as assertPascal };
265
+
266
+ /**
267
+ * Converts to pascal case with type checking.
268
+ *
269
+ * Convert every property names of nested objects to follow the pascal case convention.
270
+ * If the input value does not follow the type `T`, it returns `null` value instead.
271
+ *
272
+ * @template T Type of the input value
273
+ * @param input Target object
274
+ * @returns Pascal case object when exact type, otherwise null
275
+ *
276
+ * @author Jeongho Nam - https://github.com/samchon
277
+ */
278
+ function isPascal<T>(input: T): PascalCase<T> | null;
279
+
280
+ /**
281
+ * Converts to pascal case with type checking.
282
+ *
283
+ * Convert every property names of nested objects to follow the pascal case convention.
284
+ * If the input value does not follow the type `T`, it returns `null` value instead.
285
+ *
286
+ * @template T Type of the input value
287
+ * @param input Target object
288
+ * @returns Pascal case object when exact type, otherwise null
289
+ *
290
+ * @author Jeongho Nam - https://github.com/samchon
291
+ */
292
+ function isPascal<T>(input: unknown): PascalCase<T> | null;
293
+
294
+ /**
295
+ * @internal
296
+ */
297
+ function isPascal(): never {
298
+ return halt("isPascal");
299
+ }
300
+ const isPascalPure = /** @__PURE__ */ Object.assign<typeof isPascal, {}, {}>(
301
+ isPascal,
302
+ /** @__PURE__ */ Namespace.notations.pascal("isPascal"),
303
+ /** @__PURE__ */ Namespace.is(),
304
+ );
305
+ export { isPascalPure as isPascal };
306
+
307
+ /**
308
+ * Converts to pascal case with type validation.
309
+ *
310
+ * Convert every property names of nested objects to follow the pascal case convention.
311
+ * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
312
+ * object. Otherwise, there's no problem on the input value, pascal cased converted data
313
+ * would be stored in the `data` property of the output {@link IValidation.Success} object.
314
+ *
315
+ * @template T Type of the input value
316
+ * @param input Target object
317
+ * @returns Validation result with pascal case object
318
+ *
319
+ * @author Jeongho Nam - https://github.com/samchon
320
+ */
321
+ function validatePascal<T>(input: T): IValidation<PascalCase<T>>;
322
+
323
+ /**
324
+ * Converts to pascal case with type validation.
325
+ *
326
+ * Convert every property names of nested objects to follow the pascal case convention.
327
+ * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
328
+ * object. Otherwise, there's no problem on the input value, pascal cased converted data
329
+ * would be stored in the `data` property of the output {@link IValidation.Success} object.
330
+ *
331
+ * @template T Type of the input value
332
+ * @param input Target object
333
+ * @returns Validation result with pascal case object
334
+ *
335
+ * @author Jeongho Nam - https://github.com/samchon
336
+ */
337
+ function validatePascal<T>(input: unknown): IValidation<PascalCase<T>>;
338
+
339
+ /**
340
+ * @internal
341
+ */
342
+ function validatePascal(): never {
343
+ return halt("validatePascal");
344
+ }
345
+ const validatePascalPure = /** @__PURE__ */ Object.assign<
346
+ typeof validatePascal,
347
+ {},
348
+ {}
349
+ >(
350
+ validatePascal,
351
+ /** @__PURE__ */ Namespace.notations.pascal("validatePascal"),
352
+ /** @__PURE__ */ Namespace.validate(),
353
+ );
354
+ export { validatePascalPure as validatePascal };
355
+
356
+ /* -----------------------------------------------------------
357
+ SNAKE CASE
358
+ ----------------------------------------------------------- */
359
+ /**
360
+ * Convert to snake case.
361
+ *
362
+ * Convert every property names of nested objects to follow the snake case convention.
363
+ *
364
+ * For reference, this `typia.notations.snake()` function does not validate the input value
365
+ * type. It just believes that the input value is following the type `T`. Therefore,
366
+ * if you can't ensure the input value type, it would be better to call one of them below:
367
+ *
368
+ * - {@link assertSnake}
369
+ * - {@link isSnake}
370
+ * - {@link validateSnake}
371
+ *
372
+ * @template T Type of the input value
373
+ * @param input Target object
374
+ * @returns Snake case object
375
+ *
376
+ * @author Jeongho Nam - https://github.com/samchon
377
+ */
378
+ function snake<T>(input: T): SnakeCase<T>;
379
+
380
+ /**
381
+ * @internal
382
+ */
383
+ function snake(): never {
384
+ return halt("snake");
385
+ }
386
+ const snakePure = /** @__PURE__ */ Object.assign<typeof snake, {}>(
387
+ snake,
388
+ /** @__PURE__ */ Namespace.notations.snake("snake"),
389
+ );
390
+ export { snakePure as snake };
391
+
392
+ /**
393
+ * Converts to snake case with type assertion.
394
+ *
395
+ * Convert every property names of nested objects to follow the snake case convention.
396
+ * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
397
+ *
398
+ * @template T Type of the input value
399
+ * @param input Target object
400
+ * @returns Snake case object
401
+ *
402
+ * @author Jeongho Nam - https://github.com/samchon
403
+ */
404
+ function assertSnake<T>(input: T): SnakeCase<T>;
405
+
406
+ /**
407
+ * Converts to snake case with type assertion.
408
+ *
409
+ * Convert every property names of nested objects to follow the snake case convention.
410
+ * If the input value does not follow the type `T`, it throws {@link TypeGuardError}.
411
+ *
412
+ * @template T Type of the input value
413
+ * @param input Target object
414
+ * @returns Snake case object
415
+ *
416
+ * @author Jeongho Nam - https://github.com/samchon
417
+ */
418
+ function assertSnake<T>(input: unknown): SnakeCase<T>;
419
+
420
+ /**
421
+ * @internal
422
+ */
423
+ function assertSnake(): never {
424
+ return halt("assertSnake");
425
+ }
426
+ const assertSnakePure = /** @__PURE__ */ Object.assign<
427
+ typeof assertSnake,
428
+ {},
429
+ {}
430
+ >(
431
+ assertSnake,
432
+ /** @__PURE__ */ Namespace.notations.snake("assertSnake"),
433
+ /** @__PURE__ */ Namespace.assert("notations.assertSnake"),
434
+ );
435
+ export { assertSnakePure as assertSnake };
436
+
437
+ /**
438
+ * Converts to snake case with type checking.
439
+ *
440
+ * Convert every property names of nested objects to follow the snake case convention.
441
+ * If the input value does not follow the type `T`, it returns `null` value instead.
442
+ *
443
+ * @template T Type of the input value
444
+ * @param input Target object
445
+ * @returns Snake case object when exact type, otherwise null
446
+ *
447
+ * @author Jeongho Nam - https://github.com/samchon
448
+ */
449
+ function isSnake<T>(input: T): SnakeCase<T> | null;
450
+
451
+ /**
452
+ * Converts to snake case with type checking.
453
+ *
454
+ * Convert every property names of nested objects to follow the snake case convention.
455
+ * If the input value does not follow the type `T`, it returns `null` value instead.
456
+ *
457
+ * @template T Type of the input value
458
+ * @param input Target object
459
+ * @returns Snake case object when exact type, otherwise null
460
+ *
461
+ * @author Jeongho Nam - https://github.com/samchon
462
+ */
463
+ function isSnake<T>(input: unknown): SnakeCase<T> | null;
464
+
465
+ /**
466
+ * @internal
467
+ */
468
+ function isSnake(): never {
469
+ return halt("isSnake");
470
+ }
471
+ const isSnakePure = /** @__PURE__ */ Object.assign<typeof isSnake, {}, {}>(
472
+ isSnake,
473
+ /** @__PURE__ */ Namespace.notations.snake("isSnake"),
474
+ /** @__PURE__ */ Namespace.is(),
475
+ );
476
+ export { isSnakePure as isSnake };
477
+
478
+ /**
479
+ * Converts to snake case with type validation.
480
+ *
481
+ * Convert every property names of nested objects to follow the snake case convention.
482
+ * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
483
+ * object. Otherwise, there's no problem on the input value, snake cased converted data
484
+ * would be stored in the `data` property of the output {@link IValidation.Success} object.
485
+ *
486
+ * @template T Type of the input value
487
+ * @param input Target object
488
+ * @returns Validation result with snake case object
489
+ *
490
+ * @author Jeongho Nam - https://github.com/samchon
491
+ */
492
+ function validateSnake<T>(input: T): IValidation<SnakeCase<T>>;
493
+
494
+ /**
495
+ * Converts to snake case with type validation.
496
+ *
497
+ * Convert every property names of nested objects to follow the snake case convention.
498
+ * If the input value does not follow the type `T`, it returns {@link IValidation.Failure}
499
+ * object. Otherwise, there's no problem on the input value, snake cased converted data
500
+ * would be stored in the `data` property of the output {@link IValidation.Success} object.
501
+ *
502
+ * @template T Type of the input value
503
+ * @param input Target object
504
+ * @returns Validation result with snake case object
505
+ *
506
+ * @author Jeongho Nam - https://github.com/samchon
507
+ */
508
+ function validateSnake<T>(input: unknown): IValidation<SnakeCase<T>>;
509
+
510
+ /**
511
+ * @internal
512
+ */
513
+ function validateSnake(): never {
514
+ return halt("validateSnake");
515
+ }
516
+ const validateSnakePure = /** @__PURE__ */ Object.assign<
517
+ typeof validateSnake,
518
+ {},
519
+ {}
520
+ >(
521
+ validateSnake,
522
+ /** @__PURE__ */ Namespace.notations.snake("validateSnake"),
523
+ /** @__PURE__ */ Namespace.validate(),
524
+ );
525
+ export { validateSnakePure as validateSnake };
526
+ /* -----------------------------------------------------------
527
+ FACTORY FUNCTIONS
528
+ ----------------------------------------------------------- */
529
+ /**
530
+ * Creates a reusable {@link camel} function.
531
+ *
532
+ * @danger You must configure the generic argument `T`
533
+ * @returns Nothing until be configure the generic argument `T`
534
+ * @throws compile error
535
+ *
536
+ * @author Jeongho Nam - https://github.com/samchon
537
+ */
538
+ function createCamel(): never;
539
+
540
+ /**
541
+ * Creates a reusable {@link camel} function.
542
+ *
543
+ * @template T Type of the input value
544
+ * @returns A reusable `camel` function
545
+ *
546
+ * @author Jeongho Nam - https://github.com/samchon
547
+ */
548
+ function createCamel<T>(): (input: T) => CamelCase<T>;
549
+
550
+ /**
551
+ * @internal
552
+ */
553
+ function createCamel(): never {
554
+ halt("createCamel");
555
+ }
556
+ const createCamelPure = /** @__PURE__ */ Object.assign<typeof createCamel, {}>(
557
+ createCamel,
558
+ /** @__PURE__ */ Namespace.notations.camel("createCamel"),
559
+ );
560
+ export { createCamelPure as createCamel };
561
+
562
+ /**
563
+ * Creates a reusable {@link assertCamel} function.
564
+ *
565
+ * @danger You must configure the generic argument `T`
566
+ * @returns Nothing until be configure the generic argument `T`
567
+ * @throws compile error
568
+ *
569
+ * @author Jeongho Nam - https://github.com/samchon
570
+ */
571
+ function createAssertCamel(): never;
572
+
573
+ /**
574
+ * Creates a reusable {@link assertCamel} function.
575
+ *
576
+ * @template T Type of the input value
577
+ * @returns A reusable `assertCamel` function
578
+ *
579
+ * @author Jeongho Nam - https://github.com/samchon
580
+ */
581
+ function createAssertCamel<T>(): (input: T) => CamelCase<T>;
582
+
583
+ /**
584
+ * @internal
585
+ */
586
+ function createAssertCamel(): never {
587
+ halt("createAssertCamel");
588
+ }
589
+ const createAssertCamelPure = /** @__PURE__ */ Object.assign<
590
+ typeof createAssertCamel,
591
+ {},
592
+ {}
593
+ >(
594
+ createAssertCamel,
595
+ /** @__PURE__ */ Namespace.notations.camel("createAssertCamel"),
596
+ /** @__PURE__ */ Namespace.assert("notations.createAssertCamel"),
597
+ );
598
+ export { createAssertCamelPure as createAssertCamel };
599
+
600
+ /**
601
+ * Creates a reusable {@link isCamel} function.
602
+ *
603
+ * @danger You must configure the generic argument `T`
604
+ * @returns Nothing until be configure the generic argument `T`
605
+ * @throws compile error
606
+ *
607
+ * @author Jeongho Nam - https://github.com/samchon
608
+ */
609
+ function createIsCamel(): never;
610
+
611
+ /**
612
+ * Creates a reusable {@link isCamel} function.
613
+ *
614
+ * @template T Type of the input value
615
+ * @returns A reusable `isCamel` function
616
+ *
617
+ * @author Jeongho Nam - https://github.com/samchon
618
+ */
619
+ function createIsCamel<T>(): (input: T) => CamelCase<T> | null;
620
+
621
+ /**
622
+ * @internal
623
+ */
624
+ function createIsCamel(): never {
625
+ halt("createIsCamel");
626
+ }
627
+ const createIsCamelPure = /** @__PURE__ */ Object.assign<
628
+ typeof createIsCamel,
629
+ {},
630
+ {}
631
+ >(
632
+ createIsCamel,
633
+ /** @__PURE__ */ Namespace.notations.camel("createIsCamel"),
634
+ /** @__PURE__ */ Namespace.is(),
635
+ );
636
+ export { createIsCamelPure as createIsCamel };
637
+
638
+ /**
639
+ * Creates a reusable {@link validateCamel} function.
640
+ *
641
+ * @danger You must configure the generic argument `T`
642
+ * @returns Nothing until be configure the generic argument `T`
643
+ * @throws compile error
644
+ *
645
+ * @author Jeongho Nam - https://github.com/samchon
646
+ */
647
+ function createValidateCamel(): never;
648
+
649
+ /**
650
+ * Creates a reusable {@link validateCamel} function.
651
+ *
652
+ * @template T Type of the input value
653
+ * @returns A reusable `validateCamel` function
654
+ *
655
+ * @author Jeongho Nam - https://github.com/samchon
656
+ */
657
+ function createValidateCamel<T>(): (input: T) => IValidation<CamelCase<T>>;
658
+
659
+ /**
660
+ * @internal
661
+ */
662
+ function createValidateCamel(): never {
663
+ halt("createValidateCamel");
664
+ }
665
+ const createValidateCamelPure = /** @__PURE__ */ Object.assign<
666
+ typeof createValidateCamel,
667
+ {},
668
+ {}
669
+ >(
670
+ createValidateCamel,
671
+ /** @__PURE__ */ Namespace.notations.camel("createValidateCamel"),
672
+ /** @__PURE__ */ Namespace.validate(),
673
+ );
674
+ export { createValidateCamelPure as createValidateCamel };
675
+
676
+ /**
677
+ * Creates a reusable {@link pascal} function.
678
+ *
679
+ * @danger You must configure the generic argument `T`
680
+ * @returns Nothing until be configure the generic argument `T`
681
+ * @throws compile error
682
+ *
683
+ * @author Jeongho Nam - https://github.com/samchon
684
+ */
685
+ function createPascal(): never;
686
+
687
+ /**
688
+ * Creates a reusable {@link pascal} function.
689
+ *
690
+ * @template T Type of the input value
691
+ * @returns A reusable `pascal` function
692
+ *
693
+ * @author Jeongho Nam - https://github.com/samchon
694
+ */
695
+ function createPascal<T>(): (input: T) => PascalCase<T>;
696
+
697
+ /**
698
+ * @internal
699
+ */
700
+ function createPascal(): never {
701
+ halt("createPascal");
702
+ }
703
+ const createPascalPure = /** @__PURE__ */ Object.assign<
704
+ typeof createPascal,
705
+ {}
706
+ >(createPascal, /** @__PURE__ */ Namespace.notations.pascal("createPascal"));
707
+ export { createPascalPure as createPascal };
708
+
709
+ /**
710
+ * Creates a reusable {@link assertPascal} function.
711
+ *
712
+ * @danger You must configure the generic argument `T`
713
+ * @returns Nothing until be configure the generic argument `T`
714
+ * @throws compile error
715
+ *
716
+ * @author Jeongho Nam - https://github.com/samchon
717
+ */
718
+ function createAssertPascal(): never;
719
+
720
+ /**
721
+ * Creates a reusable {@link assertPascal} function.
722
+ *
723
+ * @template T Type of the input value
724
+ * @returns A reusable `assertPascal` function
725
+ *
726
+ * @author Jeongho Nam - https://github.com/samchon
727
+ */
728
+ function createAssertPascal<T>(): (input: T) => PascalCase<T>;
729
+
730
+ /**
731
+ * @internal
732
+ */
733
+ function createAssertPascal(): never {
734
+ halt("createAssertPascal");
735
+ }
736
+ const createAssertPascalPure = /** @__PURE__ */ Object.assign<
737
+ typeof createAssertPascal,
738
+ {},
739
+ {}
740
+ >(
741
+ createAssertPascal,
742
+ /** @__PURE__ */ Namespace.notations.pascal("createAssertPascal"),
743
+ /** @__PURE__ */ Namespace.assert("notations.createAssertPascal"),
744
+ );
745
+ export { createAssertPascalPure as createAssertPascal };
746
+
747
+ /**
748
+ * Creates a reusable {@link isPascal} function.
749
+ *
750
+ * @danger You must configure the generic argument `T`
751
+ * @returns Nothing until be configure the generic argument `T`
752
+ * @throws compile error
753
+ *
754
+ * @author Jeongho Nam - https://github.com/samchon
755
+ */
756
+ function createIsPascal(): never;
757
+
758
+ /**
759
+ * Creates a reusable {@link isPascal} function.
760
+ *
761
+ * @template T Type of the input value
762
+ * @returns A reusable `isPascal` function
763
+ *
764
+ * @author Jeongho Nam - https://github.com/samchon
765
+ */
766
+ function createIsPascal<T>(): (input: T) => PascalCase<T> | null;
767
+
768
+ /**
769
+ * @internal
770
+ */
771
+ function createIsPascal(): never {
772
+ halt("createIsPascal");
773
+ }
774
+ const createIsPascalPure = /** @__PURE__ */ Object.assign<
775
+ typeof createIsPascal,
776
+ {},
777
+ {}
778
+ >(
779
+ createIsPascal,
780
+ /** @__PURE__ */ Namespace.notations.pascal("createIsPascal"),
781
+ /** @__PURE__ */ Namespace.is(),
782
+ );
783
+ export { createIsPascalPure as createIsPascal };
784
+
785
+ /**
786
+ * Creates a reusable {@link validatePascal} function.
787
+ *
788
+ * @danger You must configure the generic argument `T`
789
+ * @returns Nothing until be configure the generic argument `T`
790
+ * @throws compile error
791
+ *
792
+ * @author Jeongho Nam - https://github.com/samchon
793
+ */
794
+ function createValidatePascal(): never;
795
+
796
+ /**
797
+ * Creates a reusable {@link validatePascal} function.
798
+ *
799
+ * @template T Type of the input value
800
+ * @returns A reusable `validatePascal` function
801
+ *
802
+ * @author Jeongho Nam - https://github.com/samchon
803
+ */
804
+ function createValidatePascal<T>(): (input: T) => IValidation<PascalCase<T>>;
805
+
806
+ /**
807
+ * @internal
808
+ */
809
+ function createValidatePascal(): never {
810
+ halt("createValidatePascal");
811
+ }
812
+ const createValidatePascalPure = /** @__PURE__ */ Object.assign<
813
+ typeof createValidatePascal,
814
+ {},
815
+ {}
816
+ >(
817
+ createValidatePascal,
818
+ /** @__PURE__ */ Namespace.notations.pascal("createValidatePascal"),
819
+ /** @__PURE__ */ Namespace.validate(),
820
+ );
821
+ export { createValidatePascalPure as createValidatePascal };
822
+
823
+ /**
824
+ * Creates a reusable {@link snake} function.
825
+ *
826
+ * @danger You must configure the generic argument `T`
827
+ * @returns Nothing until be configure the generic argument `T`
828
+ * @throws compile error
829
+ *
830
+ * @author Jeongho Nam - https://github.com/samchon
831
+ */
832
+ function createSnake(): never;
833
+
834
+ /**
835
+ * Creates a reusable {@link snake} function.
836
+ *
837
+ * @template T Type of the input value
838
+ * @returns A reusable `snake` function
839
+ *
840
+ * @author Jeongho Nam - https://github.com/samchon
841
+ */
842
+ function createSnake<T>(): (input: T) => SnakeCase<T>;
843
+
844
+ /**
845
+ * @internal
846
+ */
847
+ function createSnake(): never {
848
+ halt("createSnake");
849
+ }
850
+ const createSnakePure = /** @__PURE__ */ Object.assign<typeof createSnake, {}>(
851
+ createSnake,
852
+ /** @__PURE__ */ Namespace.notations.snake("createSnake"),
853
+ );
854
+ export { createSnakePure as createSnake };
855
+
856
+ /**
857
+ * Creates a reusable {@link assertSnake} function.
858
+ *
859
+ * @danger You must configure the generic argument `T`
860
+ * @returns Nothing until be configure the generic argument `T`
861
+ * @throws compile error
862
+ *
863
+ * @author Jeongho Nam - https://github.com/samchon
864
+ */
865
+ function createAssertSnake(): never;
866
+
867
+ /**
868
+ * Creates a reusable {@link assertSnake} function.
869
+ *
870
+ * @template T Type of the input value
871
+ * @returns A reusable `assertSnake` function
872
+ *
873
+ * @author Jeongho Nam - https://github.com/samchon
874
+ */
875
+ function createAssertSnake<T>(): (input: T) => SnakeCase<T>;
876
+
877
+ /**
878
+ * @internal
879
+ */
880
+ function createAssertSnake(): never {
881
+ halt("createAssertSnake");
882
+ }
883
+ const createAssertSnakePure = /** @__PURE__ */ Object.assign<
884
+ typeof createAssertSnake,
885
+ {},
886
+ {}
887
+ >(
888
+ createAssertSnake,
889
+ /** @__PURE__ */ Namespace.notations.snake("createAssertSnake"),
890
+ /** @__PURE__ */ Namespace.assert("notations.createAssertSnake"),
891
+ );
892
+ export { createAssertSnakePure as createAssertSnake };
893
+
894
+ /**
895
+ * Creates a reusable {@link isSnake} function.
896
+ *
897
+ * @danger You must configure the generic argument `T`
898
+ * @returns Nothing until be configure the generic argument `T`
899
+ * @throws compile error
900
+ *
901
+ * @author Jeongho Nam - https://github.com/samchon
902
+ */
903
+ function createIsSnake(): never;
904
+
905
+ /**
906
+ * Creates a reusable {@link isSnake} function.
907
+ *
908
+ * @template T Type of the input value
909
+ * @returns A reusable `isSnake` function
910
+ *
911
+ * @author Jeongho Nam - https://github.com/samchon
912
+ */
913
+ function createIsSnake<T>(): (input: T) => SnakeCase<T> | null;
914
+
915
+ /**
916
+ * @internal
917
+ */
918
+ function createIsSnake(): never {
919
+ halt("createIsSnake");
920
+ }
921
+ const createIsSnakePure = /** @__PURE__ */ Object.assign<
922
+ typeof createIsSnake,
923
+ {},
924
+ {}
925
+ >(
926
+ createIsSnake,
927
+ /** @__PURE__ */ Namespace.notations.snake("createIsSnake"),
928
+ /** @__PURE__ */ Namespace.is(),
929
+ );
930
+ export { createIsSnakePure as createIsSnake };
931
+
932
+ /**
933
+ * Creates a reusable {@link validateSnake} function.
934
+ *
935
+ * @danger You must configure the generic argument `T`
936
+ * @returns Nothing until be configure the generic argument `T`
937
+ * @throws compile error
938
+ *
939
+ * @author Jeongho Nam - https://github.com/samchon
940
+ */
941
+ function createValidateSnake(): never;
942
+
943
+ /**
944
+ * Creates a reusable {@link validateSnake} function.
945
+ *
946
+ * @template T Type of the input value
947
+ * @returns A reusable `validateSnake` function
948
+ *
949
+ * @author Jeongho Nam - https://github.com/samchon
950
+ */
951
+ function createValidateSnake<T>(): (input: T) => IValidation<SnakeCase<T>>;
952
+
953
+ /**
954
+ * @internal
955
+ */
956
+ function createValidateSnake(): never {
957
+ halt("createValidateSnake");
958
+ }
959
+ const createValidateSnakePure = /** @__PURE__ */ Object.assign<
960
+ typeof createValidateSnake,
961
+ {},
962
+ {}
963
+ >(
964
+ createValidateSnake,
965
+ /** @__PURE__ */ Namespace.notations.snake("createValidateSnake"),
966
+ /** @__PURE__ */ Namespace.validate(),
967
+ );
968
+ export { createValidateSnakePure as createValidateSnake };
969
+
970
+ /**
971
+ * @internal
972
+ */
973
+ function halt(name: string): never {
974
+ throw new Error(
975
+ `Error on typia.notations.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
976
+ );
977
+ }