typia 5.3.5-dev.20231206 → 5.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/README.md +1 -1
  2. package/lib/TypeGuardError.js.map +1 -1
  3. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  4. package/lib/factories/CommentFactory.d.ts +1 -0
  5. package/lib/factories/CommentFactory.js.map +1 -1
  6. package/lib/factories/ExpressionFactory.d.ts +1 -0
  7. package/lib/factories/IdentifierFactory.d.ts +1 -0
  8. package/lib/factories/JsonMetadataFactory.d.ts +1 -0
  9. package/lib/factories/LiteralFactory.d.ts +1 -0
  10. package/lib/factories/MetadataCollection.d.ts +1 -0
  11. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  12. package/lib/factories/MetadataFactory.d.ts +1 -0
  13. package/lib/factories/MetadataFactory.js.map +1 -1
  14. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  15. package/lib/factories/NumericRangeFactory.d.ts +1 -0
  16. package/lib/factories/ProtobufFactory.d.ts +1 -0
  17. package/lib/factories/ProtobufFactory.js.map +1 -1
  18. package/lib/factories/StatementFactory.d.ts +1 -0
  19. package/lib/factories/TemplateFactory.d.ts +1 -0
  20. package/lib/factories/TemplateFactory.js.map +1 -1
  21. package/lib/factories/TypeFactory.d.ts +1 -0
  22. package/lib/factories/TypeFactory.js.map +1 -1
  23. package/lib/factories/ValueFactory.d.ts +1 -0
  24. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  25. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +1 -0
  26. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +1 -0
  27. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -0
  28. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  29. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +1 -0
  30. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -0
  31. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -0
  33. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +1 -0
  35. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -0
  36. package/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts +1 -0
  37. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts +1 -0
  39. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  40. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  41. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
  42. package/lib/factories/internal/metadata/iterate_metadata_constant.d.ts +1 -0
  43. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  44. package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +1 -0
  45. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  46. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -0
  47. package/lib/factories/internal/metadata/iterate_metadata_native.d.ts +1 -0
  48. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -0
  50. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  51. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -0
  52. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -0
  54. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -0
  56. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -0
  57. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -0
  58. package/lib/functional/$HeadersReader.js.map +1 -1
  59. package/lib/functional/$ParameterReader.js.map +1 -1
  60. package/lib/functional/$ProtobufReader.js.map +1 -1
  61. package/lib/functional/$ProtobufSizer.js.map +1 -1
  62. package/lib/functional/$ProtobufWriter.js.map +1 -1
  63. package/lib/functional/$QueryReader.js.map +1 -1
  64. package/lib/functional/$stoll.js.map +1 -1
  65. package/lib/functional/$string.js.map +1 -1
  66. package/lib/functional/$varint.js.map +1 -1
  67. package/lib/functional/$zigzag.js.map +1 -1
  68. package/lib/functional/Namespace.js.map +1 -1
  69. package/lib/http.js.map +1 -1
  70. package/lib/misc.js.map +1 -1
  71. package/lib/programmers/AssertProgrammer.d.ts +1 -0
  72. package/lib/programmers/CheckerProgrammer.d.ts +1 -0
  73. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  74. package/lib/programmers/FeatureProgrammer.d.ts +1 -0
  75. package/lib/programmers/IsProgrammer.d.ts +1 -0
  76. package/lib/programmers/IsProgrammer.js.map +1 -1
  77. package/lib/programmers/RandomProgrammer.d.ts +1 -0
  78. package/lib/programmers/ValidateProgrammer.d.ts +1 -0
  79. package/lib/programmers/helpers/CloneJoiner.d.ts +1 -0
  80. package/lib/programmers/helpers/FunctionImporeter.d.ts +1 -0
  81. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -0
  82. package/lib/programmers/helpers/IExpressionEntry.d.ts +1 -0
  83. package/lib/programmers/helpers/NotationJoiner.d.ts +1 -0
  84. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  85. package/lib/programmers/helpers/PruneJoiner.d.ts +1 -0
  86. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -0
  87. package/lib/programmers/helpers/RandomRanger.d.ts +1 -0
  88. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  89. package/lib/programmers/helpers/StringifyJoinder.d.ts +1 -0
  90. package/lib/programmers/helpers/UnionExplorer.d.ts +1 -0
  91. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  92. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  93. package/lib/programmers/http/HttpAssertHeadersProgrammer.d.ts +1 -0
  94. package/lib/programmers/http/HttpAssertQueryProgrammer.d.ts +1 -0
  95. package/lib/programmers/http/HttpHeadersProgrammer.d.ts +1 -0
  96. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  97. package/lib/programmers/http/HttpIsHeadersProgrammer.d.ts +1 -0
  98. package/lib/programmers/http/HttpIsQueryProgrammer.d.ts +1 -0
  99. package/lib/programmers/http/HttpParameterProgrammer.d.ts +1 -0
  100. package/lib/programmers/http/HttpQueryProgrammer.d.ts +1 -0
  101. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  102. package/lib/programmers/http/HttpValidateHeadersProgrammer.d.ts +1 -0
  103. package/lib/programmers/http/HttpValidateQueryProgrammer.d.ts +1 -0
  104. package/lib/programmers/internal/application_alias.js.map +1 -1
  105. package/lib/programmers/internal/application_escaped.js.map +1 -1
  106. package/lib/programmers/internal/application_native.js.map +1 -1
  107. package/lib/programmers/internal/application_number.js.map +1 -1
  108. package/lib/programmers/internal/application_object.js.map +1 -1
  109. package/lib/programmers/internal/application_schema.js.map +1 -1
  110. package/lib/programmers/internal/check_dynamic_key.d.ts +1 -0
  111. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  112. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  113. package/lib/programmers/json/JsonAssertParseProgrammer.d.ts +1 -0
  114. package/lib/programmers/json/JsonAssertStringifyProgrammer.d.ts +1 -0
  115. package/lib/programmers/json/JsonIsParseProgrammer.d.ts +1 -0
  116. package/lib/programmers/json/JsonIsStringifyProgrammer.d.ts +1 -0
  117. package/lib/programmers/json/JsonStringifyProgrammer.d.ts +1 -0
  118. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  119. package/lib/programmers/json/JsonValidateParseProgrammer.d.ts +1 -0
  120. package/lib/programmers/json/JsonValidateStringifyProgrammer.d.ts +1 -0
  121. package/lib/programmers/misc/MiscAssertCloneProgrammer.d.ts +1 -0
  122. package/lib/programmers/misc/MiscAssertPruneProgrammer.d.ts +1 -0
  123. package/lib/programmers/misc/MiscCloneProgrammer.d.ts +1 -0
  124. package/lib/programmers/misc/MiscIsCloneProgrammer.d.ts +1 -0
  125. package/lib/programmers/misc/MiscIsPruneProgrammer.d.ts +1 -0
  126. package/lib/programmers/misc/MiscLiteralsProgrammer.d.ts +1 -0
  127. package/lib/programmers/misc/MiscPruneProgrammer.d.ts +1 -0
  128. package/lib/programmers/misc/MiscValidateCloneProgrammer.d.ts +1 -0
  129. package/lib/programmers/misc/MiscValidatePruneProgrammer.d.ts +1 -0
  130. package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +1 -0
  131. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +1 -0
  132. package/lib/programmers/notations/NotationIsGeneralProgrammer.d.ts +1 -0
  133. package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +1 -0
  134. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.d.ts +1 -0
  135. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.d.ts +1 -0
  136. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.d.ts +1 -0
  137. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  138. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.d.ts +1 -0
  139. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +2 -2
  140. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  141. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.d.ts +1 -0
  142. package/lib/programmers/protobuf/ProtobufIsEncodeProgrammer.d.ts +1 -0
  143. package/lib/programmers/protobuf/ProtobufMessageProgrammer.d.ts +1 -0
  144. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.d.ts +1 -0
  146. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.d.ts +1 -0
  147. package/lib/schemas/metadata/Metadata.js.map +1 -1
  148. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  149. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
  150. package/lib/transform.d.ts +1 -0
  151. package/lib/transformers/CallExpressionTransformer.d.ts +1 -0
  152. package/lib/transformers/FileTransformer.d.ts +1 -0
  153. package/lib/transformers/FileTransformer.js.map +1 -1
  154. package/lib/transformers/IProject.d.ts +1 -0
  155. package/lib/transformers/ImportTransformer.d.ts +1 -0
  156. package/lib/transformers/NodeTransformer.d.ts +1 -0
  157. package/lib/transformers/TransformerError.js.map +1 -1
  158. package/lib/transformers/features/CreateRandomTransformer.d.ts +1 -0
  159. package/lib/transformers/features/RandomTransformer.d.ts +1 -0
  160. package/lib/transformers/features/json/JsonApplicationTransformer.d.ts +1 -0
  161. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  162. package/lib/transformers/features/misc/MiscLiteralsTransformer.d.ts +1 -0
  163. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.d.ts +1 -0
  164. package/lib/transformers/features/reflect/ReflectMetadataTransformer.d.ts +1 -0
  165. package/lib/transformers/internal/GenericTransformer.d.ts +1 -0
  166. package/lib/utils/NamingConvention.js.map +1 -1
  167. package/package.json +7 -2
  168. package/src/AssertionGuard.ts +1 -1
  169. package/src/CamelCase.ts +114 -114
  170. package/src/IRandomGenerator.ts +35 -35
  171. package/src/IValidation.ts +21 -21
  172. package/src/PascalCase.ts +114 -114
  173. package/src/Primitive.ts +135 -135
  174. package/src/Resolved.ts +116 -116
  175. package/src/SnakeCase.ts +156 -156
  176. package/src/TypeGuardError.ts +36 -36
  177. package/src/executable/TypiaGenerateWizard.ts +83 -83
  178. package/src/executable/TypiaPatchWizard.ts +42 -42
  179. package/src/executable/TypiaSetupWizard.ts +151 -151
  180. package/src/executable/setup/ArgumentParser.ts +43 -43
  181. package/src/executable/setup/CommandExecutor.ts +8 -8
  182. package/src/executable/setup/FileRetriever.ts +22 -22
  183. package/src/executable/setup/PackageManager.ts +71 -71
  184. package/src/executable/setup/PluginConfigurator.ts +69 -69
  185. package/src/executable/typia.ts +55 -55
  186. package/src/factories/CommentFactory.ts +79 -79
  187. package/src/factories/ExpressionFactory.ts +150 -150
  188. package/src/factories/IdentifierFactory.ts +70 -70
  189. package/src/factories/JsonMetadataFactory.ts +53 -53
  190. package/src/factories/LiteralFactory.ts +47 -47
  191. package/src/factories/MetadataCollection.ts +269 -269
  192. package/src/factories/MetadataCommentTagFactory.ts +601 -601
  193. package/src/factories/MetadataFactory.ts +267 -267
  194. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  195. package/src/factories/NumericRangeFactory.ts +72 -72
  196. package/src/factories/ProtobufFactory.ts +259 -259
  197. package/src/factories/StatementFactory.ts +72 -72
  198. package/src/factories/TemplateFactory.ts +56 -56
  199. package/src/factories/TypeFactory.ts +118 -118
  200. package/src/factories/ValueFactory.ts +12 -12
  201. package/src/factories/internal/metadata/MetadataHelper.ts +15 -15
  202. package/src/factories/internal/metadata/emend_metadata_atomics.ts +37 -37
  203. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  204. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +38 -38
  205. package/src/factories/internal/metadata/emplace_metadata_object.ts +175 -175
  206. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  207. package/src/factories/internal/metadata/explore_metadata.ts +28 -28
  208. package/src/factories/internal/metadata/iterate_metadata.ts +94 -94
  209. package/src/factories/internal/metadata/iterate_metadata_alias.ts +34 -34
  210. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  211. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  212. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  213. package/src/factories/internal/metadata/iterate_metadata_collection.ts +131 -131
  214. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  215. package/src/factories/internal/metadata/iterate_metadata_constant.ts +48 -48
  216. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +230 -230
  217. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  218. package/src/factories/internal/metadata/iterate_metadata_native.ts +208 -208
  219. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  220. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  221. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  222. package/src/factories/internal/metadata/iterate_metadata_sort.ts +61 -61
  223. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  224. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  225. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  226. package/src/functional/$HeadersReader.ts +28 -28
  227. package/src/functional/$ParameterReader.ts +31 -31
  228. package/src/functional/$ProtobufReader.ts +195 -195
  229. package/src/functional/$ProtobufSizer.ts +147 -147
  230. package/src/functional/$ProtobufWriter.ts +150 -150
  231. package/src/functional/$QueryReader.ts +56 -56
  232. package/src/functional/$any.ts +4 -4
  233. package/src/functional/$clone.ts +4 -4
  234. package/src/functional/$convention.ts +37 -37
  235. package/src/functional/$dictionary.ts +22 -22
  236. package/src/functional/$every.ts +11 -11
  237. package/src/functional/$from.ts +5 -5
  238. package/src/functional/$guard.ts +35 -35
  239. package/src/functional/$is_between.ts +2 -2
  240. package/src/functional/$join.ts +46 -46
  241. package/src/functional/$number.ts +12 -12
  242. package/src/functional/$report.ts +13 -13
  243. package/src/functional/$rest.ts +3 -3
  244. package/src/functional/$stoll.ts +8 -8
  245. package/src/functional/$string.ts +50 -50
  246. package/src/functional/$strlen.ts +7 -7
  247. package/src/functional/$tail.ts +5 -5
  248. package/src/functional/$varint.ts +130 -130
  249. package/src/functional/$zigzag.ts +39 -39
  250. package/src/functional/IProtobufWriter.ts +18 -18
  251. package/src/functional/Namespace.ts +174 -174
  252. package/src/http.ts +1149 -1149
  253. package/src/json.ts +648 -648
  254. package/src/misc.ts +651 -651
  255. package/src/module.ts +897 -897
  256. package/src/notations.ts +855 -855
  257. package/src/programmers/AssertProgrammer.ts +293 -293
  258. package/src/programmers/CheckerProgrammer.ts +1025 -1025
  259. package/src/programmers/FeatureProgrammer.ts +460 -460
  260. package/src/programmers/IsProgrammer.ts +232 -232
  261. package/src/programmers/RandomProgrammer.ts +825 -825
  262. package/src/programmers/TypiaProgrammer.ts +167 -167
  263. package/src/programmers/ValidateProgrammer.ts +307 -307
  264. package/src/programmers/helpers/AtomicPredicator.ts +25 -25
  265. package/src/programmers/helpers/CloneJoiner.ts +130 -130
  266. package/src/programmers/helpers/FunctionImporeter.ts +87 -87
  267. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  268. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  269. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  270. package/src/programmers/helpers/NotationJoiner.ts +132 -132
  271. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  272. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  273. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  274. package/src/programmers/helpers/PruneJoiner.ts +141 -141
  275. package/src/programmers/helpers/RandomJoiner.ts +140 -140
  276. package/src/programmers/helpers/RandomRanger.ts +171 -171
  277. package/src/programmers/helpers/StringifyJoinder.ts +105 -105
  278. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  279. package/src/programmers/helpers/UnionExplorer.ts +269 -269
  280. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  281. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  282. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +77 -77
  283. package/src/programmers/http/HttpAssertQueryProgrammer.ts +75 -75
  284. package/src/programmers/http/HttpHeadersProgrammer.ts +314 -314
  285. package/src/programmers/http/HttpIsHeadersProgrammer.ts +84 -84
  286. package/src/programmers/http/HttpIsQueryProgrammer.ts +82 -82
  287. package/src/programmers/http/HttpParameterProgrammer.ts +97 -97
  288. package/src/programmers/http/HttpQueryProgrammer.ts +252 -252
  289. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +77 -77
  290. package/src/programmers/http/HttpValidateQueryProgrammer.ts +75 -75
  291. package/src/programmers/internal/application_alias.ts +65 -65
  292. package/src/programmers/internal/application_array.ts +59 -59
  293. package/src/programmers/internal/application_boolean.ts +30 -30
  294. package/src/programmers/internal/application_constant.ts +26 -26
  295. package/src/programmers/internal/application_default.ts +17 -17
  296. package/src/programmers/internal/application_default_string.ts +33 -33
  297. package/src/programmers/internal/application_escaped.ts +53 -53
  298. package/src/programmers/internal/application_native.ts +38 -38
  299. package/src/programmers/internal/application_number.ts +94 -94
  300. package/src/programmers/internal/application_object.ts +153 -153
  301. package/src/programmers/internal/application_schema.ts +180 -180
  302. package/src/programmers/internal/application_string.ts +58 -58
  303. package/src/programmers/internal/application_templates.ts +25 -25
  304. package/src/programmers/internal/application_tuple.ts +55 -55
  305. package/src/programmers/internal/check_array_length.ts +45 -45
  306. package/src/programmers/internal/check_bigint.ts +49 -49
  307. package/src/programmers/internal/check_dynamic_key.ts +175 -175
  308. package/src/programmers/internal/check_dynamic_properties.ts +198 -198
  309. package/src/programmers/internal/check_everything.ts +23 -23
  310. package/src/programmers/internal/check_native.ts +21 -21
  311. package/src/programmers/internal/check_number.ts +106 -106
  312. package/src/programmers/internal/check_object.ts +60 -60
  313. package/src/programmers/internal/check_string.ts +48 -48
  314. package/src/programmers/internal/check_template.ts +61 -61
  315. package/src/programmers/internal/check_union_array_like.ts +307 -307
  316. package/src/programmers/internal/decode_union_object.ts +78 -78
  317. package/src/programmers/internal/feature_object_entries.ts +58 -58
  318. package/src/programmers/internal/metadata_to_pattern.ts +33 -33
  319. package/src/programmers/internal/prune_object_properties.ts +60 -60
  320. package/src/programmers/internal/random_custom.ts +37 -37
  321. package/src/programmers/internal/stringify_dynamic_properties.ts +157 -157
  322. package/src/programmers/internal/stringify_native.ts +7 -7
  323. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  324. package/src/programmers/internal/template_to_pattern.ts +15 -15
  325. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  326. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  327. package/src/programmers/json/JsonAssertParseProgrammer.ts +67 -67
  328. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +61 -61
  329. package/src/programmers/json/JsonIsParseProgrammer.ts +73 -73
  330. package/src/programmers/json/JsonIsStringifyProgrammer.ts +75 -75
  331. package/src/programmers/json/JsonStringifyProgrammer.ts +893 -893
  332. package/src/programmers/json/JsonValidateParseProgrammer.ts +64 -64
  333. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +83 -83
  334. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +63 -63
  335. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +60 -60
  336. package/src/programmers/misc/MiscCloneProgrammer.ts +713 -713
  337. package/src/programmers/misc/MiscIsCloneProgrammer.ts +70 -70
  338. package/src/programmers/misc/MiscIsPruneProgrammer.ts +66 -66
  339. package/src/programmers/misc/MiscLiteralsProgrammer.ts +72 -72
  340. package/src/programmers/misc/MiscPruneProgrammer.ts +523 -523
  341. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +80 -80
  342. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +73 -73
  343. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +64 -64
  344. package/src/programmers/notations/NotationGeneralProgrammer.ts +647 -647
  345. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +71 -71
  346. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +81 -81
  347. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  348. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +61 -61
  349. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +607 -607
  350. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +819 -819
  351. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +82 -82
  352. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +75 -75
  353. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +160 -160
  354. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  355. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +83 -83
  356. package/src/protobuf.ts +887 -887
  357. package/src/reflect.ts +24 -24
  358. package/src/schemas/json/IJsonApplication.ts +8 -8
  359. package/src/schemas/json/IJsonComponents.ts +36 -36
  360. package/src/schemas/json/IJsonSchema.ts +113 -113
  361. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  362. package/src/schemas/metadata/IMetadata.ts +34 -34
  363. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  364. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  365. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  366. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  367. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  368. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  369. package/src/schemas/metadata/IMetadataConstant.ts +23 -23
  370. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  371. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  372. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  373. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  374. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  375. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  376. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  377. package/src/schemas/metadata/IMetadataTypeTag.ts +15 -15
  378. package/src/schemas/metadata/Metadata.ts +612 -612
  379. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  380. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  381. package/src/schemas/metadata/MetadataArray.ts +49 -49
  382. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  383. package/src/schemas/metadata/MetadataAtomic.ts +84 -84
  384. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  385. package/src/schemas/metadata/MetadataConstant.ts +46 -46
  386. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  387. package/src/schemas/metadata/MetadataObject.ts +135 -135
  388. package/src/schemas/metadata/MetadataProperty.ts +56 -56
  389. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  390. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  391. package/src/tags/Default.ts +15 -15
  392. package/src/tags/ExclusiveMaximum.ts +13 -13
  393. package/src/tags/ExclusiveMinimum.ts +13 -13
  394. package/src/tags/Format.ts +30 -30
  395. package/src/tags/MaxItems.ts +9 -9
  396. package/src/tags/MaxLength.ts +9 -9
  397. package/src/tags/Maximum.ts +13 -13
  398. package/src/tags/MinItems.ts +9 -9
  399. package/src/tags/MinLength.ts +9 -9
  400. package/src/tags/Minimum.ts +13 -13
  401. package/src/tags/MultipleOf.ts +15 -15
  402. package/src/tags/Pattern.ts +9 -9
  403. package/src/tags/TagBase.ts +68 -68
  404. package/src/tags/Type.ts +27 -27
  405. package/src/transform.ts +35 -35
  406. package/src/transformers/CallExpressionTransformer.ts +351 -351
  407. package/src/transformers/FileTransformer.ts +91 -91
  408. package/src/transformers/IProject.ts +15 -15
  409. package/src/transformers/ITransformOptions.ts +62 -62
  410. package/src/transformers/ImportTransformer.ts +66 -66
  411. package/src/transformers/NodeTransformer.ts +13 -13
  412. package/src/transformers/TransformerError.ts +55 -55
  413. package/src/transformers/features/AssertTransformer.ts +16 -16
  414. package/src/transformers/features/CreateAssertTransformer.ts +16 -16
  415. package/src/transformers/features/CreateIsTransformer.ts +10 -10
  416. package/src/transformers/features/CreateRandomTransformer.ts +40 -40
  417. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  418. package/src/transformers/features/IsTransformer.ts +10 -10
  419. package/src/transformers/features/RandomTransformer.ts +44 -44
  420. package/src/transformers/features/ValidateTransformer.ts +11 -11
  421. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +11 -11
  422. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +9 -9
  423. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +9 -9
  424. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +9 -9
  425. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +9 -9
  426. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +9 -9
  427. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +9 -9
  428. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +12 -12
  429. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +11 -11
  430. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +9 -9
  431. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +9 -9
  432. package/src/transformers/features/http/HttpHeadersTransformer.ts +9 -9
  433. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +9 -9
  434. package/src/transformers/features/http/HttpIsQueryTransformer.ts +9 -9
  435. package/src/transformers/features/http/HttpParameterTransformer.ts +9 -9
  436. package/src/transformers/features/http/HttpQueryTransformer.ts +9 -9
  437. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +10 -10
  438. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +9 -9
  439. package/src/transformers/features/json/JsonApplicationTransformer.ts +121 -121
  440. package/src/transformers/features/json/JsonAssertParseTransformer.ts +9 -9
  441. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  442. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +9 -9
  443. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  444. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  445. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +9 -9
  446. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  447. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +11 -11
  448. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  449. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  450. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +9 -9
  451. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  452. package/src/transformers/features/json/JsonValidateParseTransformer.ts +9 -9
  453. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  454. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +9 -9
  455. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +9 -9
  456. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  457. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +9 -9
  458. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +9 -9
  459. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  460. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  461. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  462. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  463. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +11 -11
  464. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +11 -11
  465. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  466. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  467. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  468. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  469. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +9 -9
  470. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +9 -9
  471. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -15
  472. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -15
  473. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -15
  474. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -15
  475. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +15 -15
  476. package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -11
  477. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -15
  478. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +15 -15
  479. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  480. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  481. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +12 -12
  482. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +12 -12
  483. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +9 -9
  484. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +9 -9
  485. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +9 -9
  486. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +9 -9
  487. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +12 -12
  488. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +12 -12
  489. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +9 -9
  490. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +9 -9
  491. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +9 -9
  492. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +9 -9
  493. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  494. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +10 -10
  495. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +10 -10
  496. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +73 -73
  497. package/src/transformers/internal/GenericTransformer.ts +96 -96
  498. package/src/typings/Atomic.ts +13 -13
  499. package/src/typings/ClassProperties.ts +5 -5
  500. package/src/typings/Customizable.ts +5 -5
  501. package/src/typings/ProtobufAtomic.ts +19 -19
  502. package/src/typings/SpecialFields.ts +3 -3
  503. package/src/typings/ValidationPipe.ts +9 -9
  504. package/src/typings/Writable.ts +11 -11
  505. package/src/utils/ArrayUtil.ts +43 -43
  506. package/src/utils/Escaper.ts +46 -46
  507. package/src/utils/MapUtil.ts +12 -12
  508. package/src/utils/NameEncoder.ts +32 -32
  509. package/src/utils/NamingConvention.ts +87 -87
  510. package/src/utils/PatternUtil.ts +29 -29
  511. package/src/utils/RandomGenerator.ts +83 -83
  512. package/src/utils/Singleton.ts +16 -16
  513. package/src/utils/StringUtil.ts +4 -4
package/src/misc.ts CHANGED
@@ -1,651 +1,651 @@
1
- /* ===========================================================
2
- MISCELLAENOUS
3
- - LITERALS
4
- - CLONE
5
- - PRUNE
6
- - FACTORY FUNCTIONS
7
- ==============================================================
8
- LITERALS
9
- ----------------------------------------------------------- */
10
- import { Namespace } from "./functional/Namespace";
11
-
12
- import { Atomic } from "./typings/Atomic";
13
-
14
- import { IValidation } from "./IValidation";
15
- import { Resolved } from "./Resolved";
16
-
17
- /**
18
- * > You must configure the generic argument `T`.
19
- *
20
- * Union literal type to array.
21
- *
22
- * Converts a union literal type to an array of its members.
23
- *
24
- * ```typescript
25
- * literals<"A" | "B" | 1>; // ["A", "B", 1]
26
- * ```
27
- *
28
- * @template T Union literal type
29
- * @return Array of union literal type's members
30
- *
31
- * @author Jeongho Nam - https://github.com/samchon
32
- */
33
- export function literals(): never;
34
-
35
- /**
36
- * Union literal type to array.
37
- *
38
- * Converts a union literal type to an array of its members.
39
- *
40
- * ```typescript
41
- * literals<"A" | "B" | 1>; // ["A", "B", 1]
42
- * ```
43
- *
44
- * @template T Union literal type
45
- * @return Array of union literal type's members
46
- *
47
- * @author Jeongho Nam - https://github.com/samchon
48
- */
49
- export function literals<T extends Atomic.Type | null>(): T[];
50
-
51
- /**
52
- * @internal
53
- */
54
- export function literals(): never {
55
- halt("literals");
56
- }
57
-
58
- /* -----------------------------------------------------------
59
- CLONE
60
- ----------------------------------------------------------- */
61
- /**
62
- * Clone a data.
63
- *
64
- * Clones an instance following type `T`. If the target *input* value or its member
65
- * variable contains a class instance having methods, those methods would not be
66
- * cloned.
67
- *
68
- * For reference, this `typia.misc.clone()` function does not validate the input value
69
- * type. It just believes that the input value is following the type `T`. Therefore,
70
- * if you can't ensure the input value type, it would be better to call
71
- * {@link assertClone} function instead.
72
- *
73
- * @template T Type of the input value
74
- * @param input A value to be cloned
75
- * @return Cloned data
76
- *
77
- * @author Jeongho Nam - https://github.com/samchon
78
- */
79
- export function clone<T>(input: T): Resolved<T>;
80
-
81
- /**
82
- * @internal
83
- */
84
- export function clone(): never {
85
- halt("clone");
86
- }
87
- Object.assign(clone, Namespace.misc.clone("clone"));
88
-
89
- /**
90
- * Clone a data with type assertion.
91
- *
92
- * Clones an instance following type `T`, with type assertion. If the target `input`
93
- * value or its member variable contains a class instance having methods, those
94
- * methods would not be cloned.
95
- *
96
- * In such reason, when `input` value is not matched with the type `T`, it throws an
97
- * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, cloned
98
- * data would be returned.
99
- *
100
- * @template T Type of the input value
101
- * @param input A value to be cloned
102
- * @return Cloned data
103
- *
104
- * @author Jeongho Nam - https://github.com/samchon
105
- */
106
- export function assertClone<T>(input: T): Resolved<T>;
107
-
108
- /**
109
- * Clone a data with type assertion.
110
- *
111
- * Clones an instance following type `T`, with type assertion. If the target `input`
112
- * value or its member variable contains a class instance having methods, those
113
- * methods would not be cloned.
114
- *
115
- * In such reason, when `input` value is not matched with the type `T`, it throws an
116
- * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, cloned
117
- * data would be returned.
118
- *
119
- * @template T Type of the input value
120
- * @param input A value to be cloned
121
- * @return Cloned data
122
- *
123
- * @author Jeongho Nam - https://github.com/samchon
124
- */
125
- export function assertClone<T>(input: unknown): Resolved<T>;
126
-
127
- /**
128
- * @internal
129
- */
130
- export function assertClone(): never {
131
- halt("assertClone");
132
- }
133
- Object.assign(assertClone, Namespace.assert("misc.assertClone"));
134
- Object.assign(assertClone, Namespace.misc.clone("assertClone"));
135
-
136
- /**
137
- * Clone a data with type checking.
138
- *
139
- * Clones an instance following type `T`, with type checking. If the target `input`
140
- * value or its member variable contains a class instance having methods, those
141
- * methods would not be cloned.
142
- *
143
- * In such reason, when `input` value is not matched with the type `T`, it returns
144
- * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
145
- * data would be returned.
146
- *
147
- * @template T Type of the input value
148
- * @param input A value to be cloned
149
- * @return Cloned data when exact type, otherwise null
150
- *
151
- * @author Jeongho Nam - https://github.com/samchon
152
- */
153
- export function isClone<T>(input: T): Resolved<T> | null;
154
-
155
- /**
156
- * Clone a data with type checking.
157
- *
158
- * Clones an instance following type `T`, with type checking. If the target `input`
159
- * value or its member variable contains a class instance having methods, those
160
- * methods would not be cloned.
161
- *
162
- * In such reason, when `input` value is not matched with the type `T`, it returns
163
- * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
164
- * data would be returned.
165
- *
166
- * @template T Type of the input value
167
- * @param input A value to be cloned
168
- * @return Cloned data when exact type, otherwise null
169
- *
170
- * @author Jeongho Nam - https://github.com/samchon
171
- */
172
- export function isClone<T>(input: unknown): Resolved<T> | null;
173
-
174
- /**
175
- * @internal
176
- */
177
- export function isClone(): never {
178
- halt("isClone");
179
- }
180
- Object.assign(isClone, Namespace.is());
181
- Object.assign(isClone, Namespace.misc.clone("isClone"));
182
-
183
- /**
184
- * Clone a data with detailed type validation.
185
- *
186
- * Clones an instance following type `T`, with detailed type validation. If the target
187
- * `input` value or its member variable contains a class instance having methods,
188
- * those methods would not be cloned.
189
- *
190
- * In such reason, when `input` value is not matched with the type `T`, it returns
191
- * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
192
- * value, cloned data would be stored in `data` property of the output
193
- * {@link IValidation.Success} instance.
194
- *
195
- * @template T Type of the input value
196
- * @param input A value to be cloned
197
- * @returns Validation result with cloned value
198
- */
199
- export function validateClone<T>(input: T): IValidation<Resolved<T>>;
200
-
201
- /**
202
- * Clone a data with detailed type validation.
203
- *
204
- * Clones an instance following type `T`, with detailed type validation. If the target
205
- * `input` value or its member variable contains a class instance having methods,
206
- * those methods would not be cloned.
207
- *
208
- * In such reason, when `input` value is not matched with the type `T`, it returns
209
- * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
210
- * value, cloned data would be stored in `data` property of the output
211
- * {@link IValidation.Success} instance.
212
- *
213
- * @template T Type of the input value
214
- * @param input A value to be cloned
215
- * @returns Validation result with cloned value
216
- */
217
- export function validateClone<T>(input: unknown): IValidation<Resolved<T>>;
218
-
219
- /**
220
- * @internal
221
- */
222
- export function validateClone(): never {
223
- halt("validateClone");
224
- }
225
- Object.assign(validateClone, Namespace.validate());
226
- Object.assign(validateClone, Namespace.misc.clone("validateClone"));
227
-
228
- /* -----------------------------------------------------------
229
- PRUNE
230
- ----------------------------------------------------------- */
231
- /**
232
- * Prune, erase superfluous properties.
233
- *
234
- * Remove every superfluous properties from the `input` object, even including nested
235
- * objects. Note that, as every superfluous properties would be deleted, you never can
236
- * read those superfluous properties after calling this `prune()` function.
237
- *
238
- * For reference, this `typia.misc.prune()` function does not validate the input value
239
- * type. It just believes that the input value is following the type `T`. Therefore,
240
- * if you can't ensure the input value type, it would better to call one of below
241
- * functions instead.
242
- *
243
- * - {@link assertPrune}
244
- * - {@link isPrune}
245
- * - {@link validatePrune}
246
- *
247
- * @template T Type of the input value
248
- * @param input Target instance to prune
249
- *
250
- * @author Jeongho Nam - https://github.com/samchon
251
- */
252
- export function prune<T extends object>(input: T): void;
253
-
254
- /**
255
- * @internal
256
- */
257
- export function prune(): never {
258
- halt("prune");
259
- }
260
- Object.assign(prune, Namespace.misc.prune("prune"));
261
-
262
- /**
263
- * Prune, erase superfluous properties, with type assertion.
264
- *
265
- * `typia.misc.assertPrune()` is a combination function of {@link assert} and
266
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
267
- * object including nested objects, with type assertion.
268
- *
269
- * In such reason, when `input` value is not matched with the type `T`, it throws an
270
- * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, its
271
- * every superfluous properties would be removed, including nested objects.
272
- *
273
- * @template T Type of the input value
274
- * @param input Target instance to assert and prune
275
- *
276
- * @author Jeongho Nam - https://github.com/samchon
277
- */
278
- export function assertPrune<T>(input: T): T;
279
-
280
- /**
281
- * Prune, erase superfluous properties, with type assertion.
282
- *
283
- * `typia.misc.assertPrune()` is a combination function of {@link assert} and
284
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
285
- * object including nested objects, with type assertion.
286
- *
287
- * In such reason, when `input` value is not matched with the type `T`, it throws an
288
- * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, its
289
- * every superfluous properties would be removed, including nested objects.
290
- *
291
- * @template T Type of the input value
292
- * @param input Target instance to assert and prune
293
- *
294
- * @author Jeongho Nam - https://github.com/samchon
295
- */
296
- export function assertPrune<T>(input: unknown): T;
297
-
298
- /**
299
- * @internal
300
- */
301
- export function assertPrune(): unknown {
302
- halt("assertPrune");
303
- }
304
- Object.assign(assertPrune, Namespace.assert("misc.assertPrune"));
305
- Object.assign(assertPrune, Namespace.misc.prune("assertPrune"));
306
-
307
- /**
308
- * Prune, erase superfluous properties, with type checking.
309
- *
310
- * `typia.misc.assertPrune()` is a combination function of {@link is} and
311
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
312
- * object including nested objects, with type checking.
313
- *
314
- * In such reason, when `input` value is not matched with the type `T`, it returns
315
- * `false` value. Otherwise, there's no problem on the `input` value, it returns
316
- * `true` after removing every superfluous properties, including nested objects.
317
- *
318
- * @template T Type of the input value
319
- * @param input Target instance to check and prune
320
- * @returns Whether the parametric value is following the type `T` or not
321
- *
322
- * @author Jeongho Nam - https://github.com/samchon
323
- */
324
- export function isPrune<T>(input: T): input is T;
325
-
326
- /**
327
- * Prune, erase superfluous properties, with type checking.
328
- *
329
- * `typia.misc.assertPrune()` is a combination function of {@link is} and
330
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
331
- * object including nested objects, with type checking.
332
- *
333
- * In such reason, when `input` value is not matched with the type `T`, it returns
334
- * `false` value. Otherwise, there's no problem on the `input` value, it returns
335
- * `true` after removing every superfluous properties, including nested objects.
336
- *
337
- * @template T Type of the input value
338
- * @param input Target instance to check and prune
339
- * @returns Whether the parametric value is following the type `T` or not
340
- *
341
- * @author Jeongho Nam - https://github.com/samchon
342
- */
343
- export function isPrune<T>(input: unknown): input is T;
344
-
345
- /**
346
- * @internal
347
- */
348
- export function isPrune(): never {
349
- halt("isPrune");
350
- }
351
- Object.assign(isPrune, Namespace.is());
352
- Object.assign(isPrune, Namespace.misc.prune("isPrune"));
353
-
354
- /**
355
- * Prune, erase superfluous properties, with type validation.
356
- *
357
- * `typia.misc.validatePrune()` is a combination function of {@link validate} and
358
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
359
- * object including nested objects, with type validation.
360
- *
361
- * In such reason, when `input` value is not matched with the type `T`, it returns
362
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
363
- * no problem on the `input` value, it returns {@link IValidation.ISucess} value after
364
- * removing every superfluous properties, including nested objects.
365
- *
366
- * @template T Type of the input value
367
- * @param input Target instance to validate and prune
368
- * @returns Validation result
369
- *
370
- * @author Jeongho Nam - https://github.com/samchon
371
- */
372
- export function validatePrune<T>(input: T): IValidation<T>;
373
-
374
- /**
375
- * Prune, erase superfluous properties, with type validation.
376
- *
377
- * `typia.misc.validatePrune()` is a combination function of {@link validate} and
378
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
379
- * object including nested objects, with type validation.
380
- *
381
- * In such reason, when `input` value is not matched with the type `T`, it returns
382
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
383
- * no problem on the `input` value, it returns {@link IValidation.ISucess} value after
384
- * removing every superfluous properties, including nested objects.
385
- *
386
- * @template T Type of the input value
387
- * @param input Target instance to validate and prune
388
- * @returns Validation result
389
- *
390
- * @author Jeongho Nam - https://github.com/samchon
391
- */
392
- export function validatePrune<T>(input: unknown): IValidation<T>;
393
-
394
- /**
395
- * @internal
396
- */
397
- export function validatePrune<T>(): IValidation<T> {
398
- halt("validatePrune");
399
- }
400
- Object.assign(validatePrune, Namespace.misc.prune("validatePrune"));
401
- Object.assign(validatePrune, Namespace.validate());
402
-
403
- /* -----------------------------------------------------------
404
- FACTORY FUNCTIONS
405
- ----------------------------------------------------------- */
406
- /**
407
- * Creates a reusable {@link clone} function.
408
- *
409
- * @danger You must configure the generic argument `T`
410
- * @returns Nothing until you configure the generic argument `T`
411
- * @throws compile error
412
- *
413
- * @author Jeongho Nam - https://github.com/samchon
414
- */
415
- export function createClone(): never;
416
-
417
- /**
418
- * Creates a resuable {@link clone} function.
419
- *
420
- * @template T Type of the input value
421
- * @returns A reusable `clone` function
422
- *
423
- * @author Jeongho Nam - https://github.com/samchon
424
- */
425
- export function createClone<T>(): (input: T) => Resolved<T>;
426
-
427
- /**
428
- * @internal
429
- */
430
- export function createClone(): never {
431
- halt("createClone");
432
- }
433
- Object.assign(createClone, clone);
434
-
435
- /**
436
- * Creates a reusable {@link assertClone} function.
437
- *
438
- * @danger You must configure the generic argument `T`
439
- * @returns Nothing until you configure the generic argument `T`
440
- * @throws compile error
441
- *
442
- * @author Jeongho Nam - https://github.com/samchon
443
- */
444
- export function createAssertClone(): never;
445
-
446
- /**
447
- * Creates a resuable {@link assertClone} function.
448
- *
449
- * @template T Type of the input value
450
- * @returns A reusable `clone` function
451
- *
452
- * @author Jeongho Nam - https://github.com/samchon
453
- */
454
- export function createAssertClone<T>(): (input: unknown) => Resolved<T>;
455
-
456
- /**
457
- * @internal
458
- */
459
- export function createAssertClone(): never {
460
- halt("createAssertClone");
461
- }
462
- Object.assign(createAssertClone, assertClone);
463
-
464
- /**
465
- * Creates a reusable {@link isClone} function.
466
- *
467
- * @danger You must configure the generic argument `T`
468
- * @returns Nothing until you configure the generic argument `T`
469
- * @throws compile error
470
- *
471
- * @author Jeongho Nam - https://github.com/samchon
472
- */
473
- export function createIsClone(): never;
474
-
475
- /**
476
- * Creates a resuable {@link isClone} function.
477
- *
478
- * @template T Type of the input value
479
- * @returns A reusable `clone` function
480
- *
481
- * @author Jeongho Nam - https://github.com/samchon
482
- */
483
- export function createIsClone<T>(): (input: unknown) => Resolved<T> | null;
484
-
485
- /**
486
- * @internal
487
- */
488
- export function createIsClone(): never {
489
- halt("createIsClone");
490
- }
491
- Object.assign(createIsClone, isClone);
492
-
493
- /**
494
- * Creates a reusable {@link validateClone} function.
495
- *
496
- * @danger You must configure the generic argument `T`
497
- * @returns Nothing until you configure the generic argument `T`
498
- * @throws compile error
499
- *
500
- * @author Jeongho Nam - https://github.com/samchon
501
- */
502
- export function createValidateClone(): never;
503
-
504
- /**
505
- * Creates a resuable {@link validateClone} function.
506
- *
507
- * @template T Type of the input value
508
- * @returns A reusable `clone` function
509
- *
510
- * @author Jeongho Nam - https://github.com/samchon
511
- */
512
- export function createValidateClone<T>(): (
513
- input: unknown,
514
- ) => IValidation<Resolved<T>>;
515
-
516
- /**
517
- * @internal
518
- */
519
- export function createValidateClone(): never {
520
- halt("createValidateClone");
521
- }
522
- Object.assign(createValidateClone, validateClone);
523
-
524
- /**
525
- * Creates a reusable {@link prune} function.
526
- *
527
- * @danger You must configure the generic argument `T`
528
- * @returns Nothing until you configure the generic argument `T`
529
- * @throws compile error
530
- *
531
- * @author Jeongho Nam - https://github.com/samchon
532
- */
533
- export function createPrune(): never;
534
-
535
- /**
536
- * Creates a resuable {@link prune} function.
537
- *
538
- * @template T Type of the input value
539
- * @returns A reusable `prune` function
540
- *
541
- * @author Jeongho Nam - https://github.com/samchon
542
- */
543
- export function createPrune<T extends object>(): (input: T) => void;
544
-
545
- /**
546
- * @internal
547
- */
548
- export function createPrune<T extends object>(): (input: T) => void {
549
- halt("createPrune");
550
- }
551
- Object.assign(createPrune, prune);
552
-
553
- /**
554
- * Creates a reusable {@link assertPrune} function.
555
- *
556
- * @danger You must configure the generic argument `T`
557
- * @returns Nothing until you configure the generic argument `T`
558
- * @throws compile error
559
- *
560
- * @author Jeongho Nam - https://github.com/samchon
561
- */
562
- export function createAssertPrune(): never;
563
-
564
- /**
565
- * Creates a resuable {@link assertPrune} function.
566
- *
567
- * @template T Type of the input value
568
- * @returns A reusable `isPrune` function
569
- *
570
- * @author Jeongho Nam - https://github.com/samchon
571
- */
572
- export function createAssertPrune<T extends object>(): (input: T) => T;
573
-
574
- /**
575
- * @internal
576
- */
577
- export function createAssertPrune<T extends object>(): (input: T) => T {
578
- halt("createAssertPrune");
579
- }
580
- Object.assign(createAssertPrune, assertPrune);
581
-
582
- /**
583
- * Creates a reusable {@link isPrune} function.
584
- *
585
- * @danger You must configure the generic argument `T`
586
- * @returns Nothing until you configure the generic argument `T`
587
- * @throws compile error
588
- *
589
- * @author Jeongho Nam - https://github.com/samchon
590
- */
591
- export function createIsPrune(): never;
592
-
593
- /**
594
- * Creates a resuable {@link isPrune} function.
595
- *
596
- * @template T Type of the input value
597
- * @returns A reusable `isPrune` function
598
- *
599
- * @author Jeongho Nam - https://github.com/samchon
600
- */
601
- export function createIsPrune<T extends object>(): (input: T) => input is T;
602
-
603
- /**
604
- * @internal
605
- */
606
- export function createIsPrune<T extends object>(): (input: T) => input is T {
607
- halt("createIsPrune");
608
- }
609
- Object.assign(createIsPrune, isPrune);
610
-
611
- /**
612
- * Creates a reusable {@link validatePrune} function.
613
- *
614
- * @danger You must configure the generic argument `T`
615
- * @returns Nothing until you configure the generic argument `T`
616
- * @throws compile error
617
- *
618
- * @author Jeongho Nam - https://github.com/samchon
619
- */
620
- export function createValidatePrune(): never;
621
-
622
- /**
623
- * Creates a resuable {@link validatePrune} function.
624
- *
625
- * @template T Type of the input value
626
- * @returns A reusable `validatePrune` function
627
- *
628
- * @author Jeongho Nam - https://github.com/samchon
629
- */
630
- export function createValidatePrune<T extends object>(): (
631
- input: T,
632
- ) => IValidation<T>;
633
-
634
- /**
635
- * @internal
636
- */
637
- export function createValidatePrune<T extends object>(): (
638
- input: T,
639
- ) => IValidation<T> {
640
- halt("createValidatePrune");
641
- }
642
- Object.assign(createValidatePrune, validatePrune);
643
-
644
- /**
645
- * @internal
646
- */
647
- function halt(name: string): never {
648
- throw new Error(
649
- `Error on typia.misc.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
650
- );
651
- }
1
+ /* ===========================================================
2
+ MISCELLAENOUS
3
+ - LITERALS
4
+ - CLONE
5
+ - PRUNE
6
+ - FACTORY FUNCTIONS
7
+ ==============================================================
8
+ LITERALS
9
+ ----------------------------------------------------------- */
10
+ import { Namespace } from "./functional/Namespace";
11
+
12
+ import { Atomic } from "./typings/Atomic";
13
+
14
+ import { IValidation } from "./IValidation";
15
+ import { Resolved } from "./Resolved";
16
+
17
+ /**
18
+ * > You must configure the generic argument `T`.
19
+ *
20
+ * Union literal type to array.
21
+ *
22
+ * Converts a union literal type to an array of its members.
23
+ *
24
+ * ```typescript
25
+ * literals<"A" | "B" | 1>; // ["A", "B", 1]
26
+ * ```
27
+ *
28
+ * @template T Union literal type
29
+ * @return Array of union literal type's members
30
+ *
31
+ * @author Jeongho Nam - https://github.com/samchon
32
+ */
33
+ export function literals(): never;
34
+
35
+ /**
36
+ * Union literal type to array.
37
+ *
38
+ * Converts a union literal type to an array of its members.
39
+ *
40
+ * ```typescript
41
+ * literals<"A" | "B" | 1>; // ["A", "B", 1]
42
+ * ```
43
+ *
44
+ * @template T Union literal type
45
+ * @return Array of union literal type's members
46
+ *
47
+ * @author Jeongho Nam - https://github.com/samchon
48
+ */
49
+ export function literals<T extends Atomic.Type | null>(): T[];
50
+
51
+ /**
52
+ * @internal
53
+ */
54
+ export function literals(): never {
55
+ halt("literals");
56
+ }
57
+
58
+ /* -----------------------------------------------------------
59
+ CLONE
60
+ ----------------------------------------------------------- */
61
+ /**
62
+ * Clone a data.
63
+ *
64
+ * Clones an instance following type `T`. If the target *input* value or its member
65
+ * variable contains a class instance having methods, those methods would not be
66
+ * cloned.
67
+ *
68
+ * For reference, this `typia.misc.clone()` function does not validate the input value
69
+ * type. It just believes that the input value is following the type `T`. Therefore,
70
+ * if you can't ensure the input value type, it would be better to call
71
+ * {@link assertClone} function instead.
72
+ *
73
+ * @template T Type of the input value
74
+ * @param input A value to be cloned
75
+ * @return Cloned data
76
+ *
77
+ * @author Jeongho Nam - https://github.com/samchon
78
+ */
79
+ export function clone<T>(input: T): Resolved<T>;
80
+
81
+ /**
82
+ * @internal
83
+ */
84
+ export function clone(): never {
85
+ halt("clone");
86
+ }
87
+ Object.assign(clone, Namespace.misc.clone("clone"));
88
+
89
+ /**
90
+ * Clone a data with type assertion.
91
+ *
92
+ * Clones an instance following type `T`, with type assertion. If the target `input`
93
+ * value or its member variable contains a class instance having methods, those
94
+ * methods would not be cloned.
95
+ *
96
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
97
+ * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, cloned
98
+ * data would be returned.
99
+ *
100
+ * @template T Type of the input value
101
+ * @param input A value to be cloned
102
+ * @return Cloned data
103
+ *
104
+ * @author Jeongho Nam - https://github.com/samchon
105
+ */
106
+ export function assertClone<T>(input: T): Resolved<T>;
107
+
108
+ /**
109
+ * Clone a data with type assertion.
110
+ *
111
+ * Clones an instance following type `T`, with type assertion. If the target `input`
112
+ * value or its member variable contains a class instance having methods, those
113
+ * methods would not be cloned.
114
+ *
115
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
116
+ * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, cloned
117
+ * data would be returned.
118
+ *
119
+ * @template T Type of the input value
120
+ * @param input A value to be cloned
121
+ * @return Cloned data
122
+ *
123
+ * @author Jeongho Nam - https://github.com/samchon
124
+ */
125
+ export function assertClone<T>(input: unknown): Resolved<T>;
126
+
127
+ /**
128
+ * @internal
129
+ */
130
+ export function assertClone(): never {
131
+ halt("assertClone");
132
+ }
133
+ Object.assign(assertClone, Namespace.assert("misc.assertClone"));
134
+ Object.assign(assertClone, Namespace.misc.clone("assertClone"));
135
+
136
+ /**
137
+ * Clone a data with type checking.
138
+ *
139
+ * Clones an instance following type `T`, with type checking. If the target `input`
140
+ * value or its member variable contains a class instance having methods, those
141
+ * methods would not be cloned.
142
+ *
143
+ * In such reason, when `input` value is not matched with the type `T`, it returns
144
+ * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
145
+ * data would be returned.
146
+ *
147
+ * @template T Type of the input value
148
+ * @param input A value to be cloned
149
+ * @return Cloned data when exact type, otherwise null
150
+ *
151
+ * @author Jeongho Nam - https://github.com/samchon
152
+ */
153
+ export function isClone<T>(input: T): Resolved<T> | null;
154
+
155
+ /**
156
+ * Clone a data with type checking.
157
+ *
158
+ * Clones an instance following type `T`, with type checking. If the target `input`
159
+ * value or its member variable contains a class instance having methods, those
160
+ * methods would not be cloned.
161
+ *
162
+ * In such reason, when `input` value is not matched with the type `T`, it returns
163
+ * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
164
+ * data would be returned.
165
+ *
166
+ * @template T Type of the input value
167
+ * @param input A value to be cloned
168
+ * @return Cloned data when exact type, otherwise null
169
+ *
170
+ * @author Jeongho Nam - https://github.com/samchon
171
+ */
172
+ export function isClone<T>(input: unknown): Resolved<T> | null;
173
+
174
+ /**
175
+ * @internal
176
+ */
177
+ export function isClone(): never {
178
+ halt("isClone");
179
+ }
180
+ Object.assign(isClone, Namespace.is());
181
+ Object.assign(isClone, Namespace.misc.clone("isClone"));
182
+
183
+ /**
184
+ * Clone a data with detailed type validation.
185
+ *
186
+ * Clones an instance following type `T`, with detailed type validation. If the target
187
+ * `input` value or its member variable contains a class instance having methods,
188
+ * those methods would not be cloned.
189
+ *
190
+ * In such reason, when `input` value is not matched with the type `T`, it returns
191
+ * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
192
+ * value, cloned data would be stored in `data` property of the output
193
+ * {@link IValidation.Success} instance.
194
+ *
195
+ * @template T Type of the input value
196
+ * @param input A value to be cloned
197
+ * @returns Validation result with cloned value
198
+ */
199
+ export function validateClone<T>(input: T): IValidation<Resolved<T>>;
200
+
201
+ /**
202
+ * Clone a data with detailed type validation.
203
+ *
204
+ * Clones an instance following type `T`, with detailed type validation. If the target
205
+ * `input` value or its member variable contains a class instance having methods,
206
+ * those methods would not be cloned.
207
+ *
208
+ * In such reason, when `input` value is not matched with the type `T`, it returns
209
+ * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
210
+ * value, cloned data would be stored in `data` property of the output
211
+ * {@link IValidation.Success} instance.
212
+ *
213
+ * @template T Type of the input value
214
+ * @param input A value to be cloned
215
+ * @returns Validation result with cloned value
216
+ */
217
+ export function validateClone<T>(input: unknown): IValidation<Resolved<T>>;
218
+
219
+ /**
220
+ * @internal
221
+ */
222
+ export function validateClone(): never {
223
+ halt("validateClone");
224
+ }
225
+ Object.assign(validateClone, Namespace.validate());
226
+ Object.assign(validateClone, Namespace.misc.clone("validateClone"));
227
+
228
+ /* -----------------------------------------------------------
229
+ PRUNE
230
+ ----------------------------------------------------------- */
231
+ /**
232
+ * Prune, erase superfluous properties.
233
+ *
234
+ * Remove every superfluous properties from the `input` object, even including nested
235
+ * objects. Note that, as every superfluous properties would be deleted, you never can
236
+ * read those superfluous properties after calling this `prune()` function.
237
+ *
238
+ * For reference, this `typia.misc.prune()` function does not validate the input value
239
+ * type. It just believes that the input value is following the type `T`. Therefore,
240
+ * if you can't ensure the input value type, it would better to call one of below
241
+ * functions instead.
242
+ *
243
+ * - {@link assertPrune}
244
+ * - {@link isPrune}
245
+ * - {@link validatePrune}
246
+ *
247
+ * @template T Type of the input value
248
+ * @param input Target instance to prune
249
+ *
250
+ * @author Jeongho Nam - https://github.com/samchon
251
+ */
252
+ export function prune<T extends object>(input: T): void;
253
+
254
+ /**
255
+ * @internal
256
+ */
257
+ export function prune(): never {
258
+ halt("prune");
259
+ }
260
+ Object.assign(prune, Namespace.misc.prune("prune"));
261
+
262
+ /**
263
+ * Prune, erase superfluous properties, with type assertion.
264
+ *
265
+ * `typia.misc.assertPrune()` is a combination function of {@link assert} and
266
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
267
+ * object including nested objects, with type assertion.
268
+ *
269
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
270
+ * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, its
271
+ * every superfluous properties would be removed, including nested objects.
272
+ *
273
+ * @template T Type of the input value
274
+ * @param input Target instance to assert and prune
275
+ *
276
+ * @author Jeongho Nam - https://github.com/samchon
277
+ */
278
+ export function assertPrune<T>(input: T): T;
279
+
280
+ /**
281
+ * Prune, erase superfluous properties, with type assertion.
282
+ *
283
+ * `typia.misc.assertPrune()` is a combination function of {@link assert} and
284
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
285
+ * object including nested objects, with type assertion.
286
+ *
287
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
288
+ * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, its
289
+ * every superfluous properties would be removed, including nested objects.
290
+ *
291
+ * @template T Type of the input value
292
+ * @param input Target instance to assert and prune
293
+ *
294
+ * @author Jeongho Nam - https://github.com/samchon
295
+ */
296
+ export function assertPrune<T>(input: unknown): T;
297
+
298
+ /**
299
+ * @internal
300
+ */
301
+ export function assertPrune(): unknown {
302
+ halt("assertPrune");
303
+ }
304
+ Object.assign(assertPrune, Namespace.assert("misc.assertPrune"));
305
+ Object.assign(assertPrune, Namespace.misc.prune("assertPrune"));
306
+
307
+ /**
308
+ * Prune, erase superfluous properties, with type checking.
309
+ *
310
+ * `typia.misc.assertPrune()` is a combination function of {@link is} and
311
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
312
+ * object including nested objects, with type checking.
313
+ *
314
+ * In such reason, when `input` value is not matched with the type `T`, it returns
315
+ * `false` value. Otherwise, there's no problem on the `input` value, it returns
316
+ * `true` after removing every superfluous properties, including nested objects.
317
+ *
318
+ * @template T Type of the input value
319
+ * @param input Target instance to check and prune
320
+ * @returns Whether the parametric value is following the type `T` or not
321
+ *
322
+ * @author Jeongho Nam - https://github.com/samchon
323
+ */
324
+ export function isPrune<T>(input: T): input is T;
325
+
326
+ /**
327
+ * Prune, erase superfluous properties, with type checking.
328
+ *
329
+ * `typia.misc.assertPrune()` is a combination function of {@link is} and
330
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
331
+ * object including nested objects, with type checking.
332
+ *
333
+ * In such reason, when `input` value is not matched with the type `T`, it returns
334
+ * `false` value. Otherwise, there's no problem on the `input` value, it returns
335
+ * `true` after removing every superfluous properties, including nested objects.
336
+ *
337
+ * @template T Type of the input value
338
+ * @param input Target instance to check and prune
339
+ * @returns Whether the parametric value is following the type `T` or not
340
+ *
341
+ * @author Jeongho Nam - https://github.com/samchon
342
+ */
343
+ export function isPrune<T>(input: unknown): input is T;
344
+
345
+ /**
346
+ * @internal
347
+ */
348
+ export function isPrune(): never {
349
+ halt("isPrune");
350
+ }
351
+ Object.assign(isPrune, Namespace.is());
352
+ Object.assign(isPrune, Namespace.misc.prune("isPrune"));
353
+
354
+ /**
355
+ * Prune, erase superfluous properties, with type validation.
356
+ *
357
+ * `typia.misc.validatePrune()` is a combination function of {@link validate} and
358
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
359
+ * object including nested objects, with type validation.
360
+ *
361
+ * In such reason, when `input` value is not matched with the type `T`, it returns
362
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
363
+ * no problem on the `input` value, it returns {@link IValidation.ISucess} value after
364
+ * removing every superfluous properties, including nested objects.
365
+ *
366
+ * @template T Type of the input value
367
+ * @param input Target instance to validate and prune
368
+ * @returns Validation result
369
+ *
370
+ * @author Jeongho Nam - https://github.com/samchon
371
+ */
372
+ export function validatePrune<T>(input: T): IValidation<T>;
373
+
374
+ /**
375
+ * Prune, erase superfluous properties, with type validation.
376
+ *
377
+ * `typia.misc.validatePrune()` is a combination function of {@link validate} and
378
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
379
+ * object including nested objects, with type validation.
380
+ *
381
+ * In such reason, when `input` value is not matched with the type `T`, it returns
382
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
383
+ * no problem on the `input` value, it returns {@link IValidation.ISucess} value after
384
+ * removing every superfluous properties, including nested objects.
385
+ *
386
+ * @template T Type of the input value
387
+ * @param input Target instance to validate and prune
388
+ * @returns Validation result
389
+ *
390
+ * @author Jeongho Nam - https://github.com/samchon
391
+ */
392
+ export function validatePrune<T>(input: unknown): IValidation<T>;
393
+
394
+ /**
395
+ * @internal
396
+ */
397
+ export function validatePrune<T>(): IValidation<T> {
398
+ halt("validatePrune");
399
+ }
400
+ Object.assign(validatePrune, Namespace.misc.prune("validatePrune"));
401
+ Object.assign(validatePrune, Namespace.validate());
402
+
403
+ /* -----------------------------------------------------------
404
+ FACTORY FUNCTIONS
405
+ ----------------------------------------------------------- */
406
+ /**
407
+ * Creates a reusable {@link clone} function.
408
+ *
409
+ * @danger You must configure the generic argument `T`
410
+ * @returns Nothing until you configure the generic argument `T`
411
+ * @throws compile error
412
+ *
413
+ * @author Jeongho Nam - https://github.com/samchon
414
+ */
415
+ export function createClone(): never;
416
+
417
+ /**
418
+ * Creates a resuable {@link clone} function.
419
+ *
420
+ * @template T Type of the input value
421
+ * @returns A reusable `clone` function
422
+ *
423
+ * @author Jeongho Nam - https://github.com/samchon
424
+ */
425
+ export function createClone<T>(): (input: T) => Resolved<T>;
426
+
427
+ /**
428
+ * @internal
429
+ */
430
+ export function createClone(): never {
431
+ halt("createClone");
432
+ }
433
+ Object.assign(createClone, clone);
434
+
435
+ /**
436
+ * Creates a reusable {@link assertClone} function.
437
+ *
438
+ * @danger You must configure the generic argument `T`
439
+ * @returns Nothing until you configure the generic argument `T`
440
+ * @throws compile error
441
+ *
442
+ * @author Jeongho Nam - https://github.com/samchon
443
+ */
444
+ export function createAssertClone(): never;
445
+
446
+ /**
447
+ * Creates a resuable {@link assertClone} function.
448
+ *
449
+ * @template T Type of the input value
450
+ * @returns A reusable `clone` function
451
+ *
452
+ * @author Jeongho Nam - https://github.com/samchon
453
+ */
454
+ export function createAssertClone<T>(): (input: unknown) => Resolved<T>;
455
+
456
+ /**
457
+ * @internal
458
+ */
459
+ export function createAssertClone(): never {
460
+ halt("createAssertClone");
461
+ }
462
+ Object.assign(createAssertClone, assertClone);
463
+
464
+ /**
465
+ * Creates a reusable {@link isClone} function.
466
+ *
467
+ * @danger You must configure the generic argument `T`
468
+ * @returns Nothing until you configure the generic argument `T`
469
+ * @throws compile error
470
+ *
471
+ * @author Jeongho Nam - https://github.com/samchon
472
+ */
473
+ export function createIsClone(): never;
474
+
475
+ /**
476
+ * Creates a resuable {@link isClone} function.
477
+ *
478
+ * @template T Type of the input value
479
+ * @returns A reusable `clone` function
480
+ *
481
+ * @author Jeongho Nam - https://github.com/samchon
482
+ */
483
+ export function createIsClone<T>(): (input: unknown) => Resolved<T> | null;
484
+
485
+ /**
486
+ * @internal
487
+ */
488
+ export function createIsClone(): never {
489
+ halt("createIsClone");
490
+ }
491
+ Object.assign(createIsClone, isClone);
492
+
493
+ /**
494
+ * Creates a reusable {@link validateClone} function.
495
+ *
496
+ * @danger You must configure the generic argument `T`
497
+ * @returns Nothing until you configure the generic argument `T`
498
+ * @throws compile error
499
+ *
500
+ * @author Jeongho Nam - https://github.com/samchon
501
+ */
502
+ export function createValidateClone(): never;
503
+
504
+ /**
505
+ * Creates a resuable {@link validateClone} function.
506
+ *
507
+ * @template T Type of the input value
508
+ * @returns A reusable `clone` function
509
+ *
510
+ * @author Jeongho Nam - https://github.com/samchon
511
+ */
512
+ export function createValidateClone<T>(): (
513
+ input: unknown,
514
+ ) => IValidation<Resolved<T>>;
515
+
516
+ /**
517
+ * @internal
518
+ */
519
+ export function createValidateClone(): never {
520
+ halt("createValidateClone");
521
+ }
522
+ Object.assign(createValidateClone, validateClone);
523
+
524
+ /**
525
+ * Creates a reusable {@link prune} function.
526
+ *
527
+ * @danger You must configure the generic argument `T`
528
+ * @returns Nothing until you configure the generic argument `T`
529
+ * @throws compile error
530
+ *
531
+ * @author Jeongho Nam - https://github.com/samchon
532
+ */
533
+ export function createPrune(): never;
534
+
535
+ /**
536
+ * Creates a resuable {@link prune} function.
537
+ *
538
+ * @template T Type of the input value
539
+ * @returns A reusable `prune` function
540
+ *
541
+ * @author Jeongho Nam - https://github.com/samchon
542
+ */
543
+ export function createPrune<T extends object>(): (input: T) => void;
544
+
545
+ /**
546
+ * @internal
547
+ */
548
+ export function createPrune<T extends object>(): (input: T) => void {
549
+ halt("createPrune");
550
+ }
551
+ Object.assign(createPrune, prune);
552
+
553
+ /**
554
+ * Creates a reusable {@link assertPrune} function.
555
+ *
556
+ * @danger You must configure the generic argument `T`
557
+ * @returns Nothing until you configure the generic argument `T`
558
+ * @throws compile error
559
+ *
560
+ * @author Jeongho Nam - https://github.com/samchon
561
+ */
562
+ export function createAssertPrune(): never;
563
+
564
+ /**
565
+ * Creates a resuable {@link assertPrune} function.
566
+ *
567
+ * @template T Type of the input value
568
+ * @returns A reusable `isPrune` function
569
+ *
570
+ * @author Jeongho Nam - https://github.com/samchon
571
+ */
572
+ export function createAssertPrune<T extends object>(): (input: T) => T;
573
+
574
+ /**
575
+ * @internal
576
+ */
577
+ export function createAssertPrune<T extends object>(): (input: T) => T {
578
+ halt("createAssertPrune");
579
+ }
580
+ Object.assign(createAssertPrune, assertPrune);
581
+
582
+ /**
583
+ * Creates a reusable {@link isPrune} function.
584
+ *
585
+ * @danger You must configure the generic argument `T`
586
+ * @returns Nothing until you configure the generic argument `T`
587
+ * @throws compile error
588
+ *
589
+ * @author Jeongho Nam - https://github.com/samchon
590
+ */
591
+ export function createIsPrune(): never;
592
+
593
+ /**
594
+ * Creates a resuable {@link isPrune} function.
595
+ *
596
+ * @template T Type of the input value
597
+ * @returns A reusable `isPrune` function
598
+ *
599
+ * @author Jeongho Nam - https://github.com/samchon
600
+ */
601
+ export function createIsPrune<T extends object>(): (input: T) => input is T;
602
+
603
+ /**
604
+ * @internal
605
+ */
606
+ export function createIsPrune<T extends object>(): (input: T) => input is T {
607
+ halt("createIsPrune");
608
+ }
609
+ Object.assign(createIsPrune, isPrune);
610
+
611
+ /**
612
+ * Creates a reusable {@link validatePrune} function.
613
+ *
614
+ * @danger You must configure the generic argument `T`
615
+ * @returns Nothing until you configure the generic argument `T`
616
+ * @throws compile error
617
+ *
618
+ * @author Jeongho Nam - https://github.com/samchon
619
+ */
620
+ export function createValidatePrune(): never;
621
+
622
+ /**
623
+ * Creates a resuable {@link validatePrune} function.
624
+ *
625
+ * @template T Type of the input value
626
+ * @returns A reusable `validatePrune` function
627
+ *
628
+ * @author Jeongho Nam - https://github.com/samchon
629
+ */
630
+ export function createValidatePrune<T extends object>(): (
631
+ input: T,
632
+ ) => IValidation<T>;
633
+
634
+ /**
635
+ * @internal
636
+ */
637
+ export function createValidatePrune<T extends object>(): (
638
+ input: T,
639
+ ) => IValidation<T> {
640
+ halt("createValidatePrune");
641
+ }
642
+ Object.assign(createValidatePrune, validatePrune);
643
+
644
+ /**
645
+ * @internal
646
+ */
647
+ function halt(name: string): never {
648
+ throw new Error(
649
+ `Error on typia.misc.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
650
+ );
651
+ }