typia 9.0.1 → 9.1.0-dev.20250408

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 (574) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +149 -149
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/functional.js +19 -27
  8. package/lib/functional.js.map +1 -1
  9. package/lib/functional.mjs +20 -27
  10. package/lib/http.js +27 -32
  11. package/lib/http.js.map +1 -1
  12. package/lib/http.mjs +28 -32
  13. package/lib/json.d.mts +66 -4
  14. package/lib/json.d.ts +66 -4
  15. package/lib/json.js +23 -21
  16. package/lib/json.js.map +1 -1
  17. package/lib/json.mjs +24 -22
  18. package/lib/llm.js +4 -9
  19. package/lib/llm.js.map +1 -1
  20. package/lib/llm.mjs +5 -9
  21. package/lib/misc.js +27 -23
  22. package/lib/misc.js.map +1 -1
  23. package/lib/misc.mjs +28 -23
  24. package/lib/module.d.mts +1 -0
  25. package/lib/module.d.ts +1 -0
  26. package/lib/module.js +20 -24
  27. package/lib/module.js.map +1 -1
  28. package/lib/module.mjs +19 -24
  29. package/lib/notations.js +25 -30
  30. package/lib/notations.js.map +1 -1
  31. package/lib/notations.mjs +26 -30
  32. package/lib/programmers/json/JsonSchemaProgrammer.d.mts +9 -0
  33. package/lib/programmers/json/JsonSchemaProgrammer.d.ts +9 -0
  34. package/lib/programmers/json/JsonSchemaProgrammer.js +20 -0
  35. package/lib/programmers/json/JsonSchemaProgrammer.js.map +1 -0
  36. package/lib/programmers/json/JsonSchemaProgrammer.mjs +20 -0
  37. package/lib/programmers/json/JsonSchemaProgrammer.mjs.map +1 -0
  38. package/lib/programmers/json/JsonSchemasProgrammer.js +1 -1
  39. package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
  40. package/lib/programmers/json/JsonSchemasProgrammer.mjs +1 -1
  41. package/lib/protobuf.js +18 -23
  42. package/lib/protobuf.js.map +1 -1
  43. package/lib/protobuf.mjs +19 -23
  44. package/lib/reflect.js +3 -8
  45. package/lib/reflect.js.map +1 -1
  46. package/lib/reflect.mjs +4 -8
  47. package/lib/schemas/json/IJsonSchemaUnit.d.mts +26 -0
  48. package/lib/schemas/json/IJsonSchemaUnit.d.ts +26 -0
  49. package/lib/schemas/json/IJsonSchemaUnit.js +3 -0
  50. package/lib/schemas/json/IJsonSchemaUnit.js.map +1 -0
  51. package/lib/schemas/json/IJsonSchemaUnit.mjs +2 -0
  52. package/lib/schemas/json/IJsonSchemaUnit.mjs.map +1 -0
  53. package/lib/transformers/CallExpressionTransformer.js +2 -2
  54. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  55. package/lib/transformers/CallExpressionTransformer.mjs +2 -2
  56. package/lib/transformers/NoTransformConfigurationError.d.mts +1 -0
  57. package/lib/transformers/NoTransformConfigurationError.d.ts +1 -0
  58. package/lib/transformers/NoTransformConfigurationError.js +20 -0
  59. package/lib/transformers/NoTransformConfigurationError.js.map +1 -0
  60. package/lib/transformers/NoTransformConfigurationError.mjs +19 -0
  61. package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -0
  62. package/lib/transformers/features/json/JsonSchemaTransformer.d.mts +5 -0
  63. package/lib/transformers/features/json/JsonSchemaTransformer.d.ts +5 -0
  64. package/lib/transformers/features/json/JsonSchemaTransformer.js +108 -0
  65. package/lib/transformers/features/json/JsonSchemaTransformer.js.map +1 -0
  66. package/lib/transformers/features/json/JsonSchemaTransformer.mjs +104 -0
  67. package/lib/transformers/features/json/JsonSchemaTransformer.mjs.map +1 -0
  68. package/lib/transformers/features/json/JsonSchemasTransformer.js +9 -9
  69. package/lib/transformers/features/json/JsonSchemasTransformer.js.map +1 -1
  70. package/lib/transformers/features/json/JsonSchemasTransformer.mjs +9 -9
  71. package/package.json +1 -1
  72. package/src/AssertionGuard.ts +1 -1
  73. package/src/CamelCase.ts +75 -75
  74. package/src/IRandomGenerator.ts +49 -49
  75. package/src/IReadableURLSearchParams.ts +9 -9
  76. package/src/IValidation.ts +1 -1
  77. package/src/PascalCase.ts +71 -71
  78. package/src/Primitive.ts +92 -92
  79. package/src/Resolved.ts +74 -74
  80. package/src/SnakeCase.ts +126 -126
  81. package/src/TypeGuardError.ts +37 -37
  82. package/src/executable/TypiaGenerateWizard.ts +83 -83
  83. package/src/executable/TypiaPatchWizard.ts +45 -45
  84. package/src/executable/TypiaSetupWizard.ts +171 -171
  85. package/src/executable/setup/ArgumentParser.ts +42 -42
  86. package/src/executable/setup/CommandExecutor.ts +8 -8
  87. package/src/executable/setup/FileRetriever.ts +19 -19
  88. package/src/executable/setup/PackageManager.ts +87 -87
  89. package/src/executable/setup/PluginConfigurator.ts +69 -69
  90. package/src/executable/typia.ts +55 -55
  91. package/src/factories/CommentFactory.ts +79 -79
  92. package/src/factories/ExpressionFactory.ts +216 -216
  93. package/src/factories/IdentifierFactory.ts +89 -89
  94. package/src/factories/JsonMetadataFactory.ts +83 -83
  95. package/src/factories/LiteralFactory.ts +52 -52
  96. package/src/factories/MetadataCollection.ts +278 -278
  97. package/src/factories/MetadataCommentTagFactory.ts +648 -648
  98. package/src/factories/MetadataFactory.ts +404 -404
  99. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  100. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  101. package/src/factories/NumericRangeFactory.ts +72 -72
  102. package/src/factories/ProtobufFactory.ts +875 -875
  103. package/src/factories/StatementFactory.ts +90 -90
  104. package/src/factories/TemplateFactory.ts +64 -64
  105. package/src/factories/TypeFactory.ts +140 -140
  106. package/src/factories/ValueFactory.ts +12 -12
  107. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  108. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  109. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  110. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  111. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  112. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  113. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  114. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  115. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  116. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  117. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  118. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  119. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  120. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  121. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  122. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  123. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  124. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  125. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  126. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  127. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  128. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  129. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  130. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  131. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  132. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  133. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  134. package/src/functional.ts +740 -750
  135. package/src/http.ts +1040 -1047
  136. package/src/index.ts +4 -4
  137. package/src/internal/_IProtobufWriter.ts +18 -18
  138. package/src/internal/_ProtobufReader.ts +194 -194
  139. package/src/internal/_ProtobufSizer.ts +145 -145
  140. package/src/internal/_ProtobufWriter.ts +145 -145
  141. package/src/internal/_accessExpressionAsString.ts +46 -46
  142. package/src/internal/_assertGuard.ts +13 -13
  143. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  144. package/src/internal/_httpFormDataReadArray.ts +4 -4
  145. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  146. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  147. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  148. package/src/internal/_httpFormDataReadFile.ts +10 -10
  149. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  150. package/src/internal/_httpFormDataReadString.ts +10 -10
  151. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  152. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  153. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  154. package/src/internal/_httpParameterReadBigint.ts +10 -10
  155. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  156. package/src/internal/_httpParameterReadNumber.ts +7 -7
  157. package/src/internal/_httpParameterReadString.ts +2 -2
  158. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  159. package/src/internal/_httpQueryReadArray.ts +4 -4
  160. package/src/internal/_httpQueryReadBigint.ts +12 -12
  161. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  162. package/src/internal/_httpQueryReadNumber.ts +9 -9
  163. package/src/internal/_httpQueryReadString.ts +4 -4
  164. package/src/internal/_isBetween.ts +2 -2
  165. package/src/internal/_isBigintString.ts +8 -8
  166. package/src/internal/_isFormatByte.ts +7 -7
  167. package/src/internal/_isFormatDate.ts +3 -3
  168. package/src/internal/_isFormatDateTime.ts +4 -4
  169. package/src/internal/_isFormatDuration.ts +4 -4
  170. package/src/internal/_isFormatEmail.ts +4 -4
  171. package/src/internal/_isFormatHostname.ts +4 -4
  172. package/src/internal/_isFormatIdnEmail.ts +4 -4
  173. package/src/internal/_isFormatIdnHostname.ts +4 -4
  174. package/src/internal/_isFormatIpv4.ts +4 -4
  175. package/src/internal/_isFormatIpv6.ts +4 -4
  176. package/src/internal/_isFormatIri.ts +3 -3
  177. package/src/internal/_isFormatIriReference.ts +4 -4
  178. package/src/internal/_isFormatJsonPointer.ts +3 -3
  179. package/src/internal/_isFormatPassword.ts +1 -1
  180. package/src/internal/_isFormatRegex.ts +8 -8
  181. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  182. package/src/internal/_isFormatTime.ts +4 -4
  183. package/src/internal/_isFormatUri.ts +6 -6
  184. package/src/internal/_isFormatUriReference.ts +5 -5
  185. package/src/internal/_isFormatUriTemplate.ts +4 -4
  186. package/src/internal/_isFormatUrl.ts +4 -4
  187. package/src/internal/_isFormatUuid.ts +3 -3
  188. package/src/internal/_isTypeFloat.ts +5 -5
  189. package/src/internal/_isTypeInt32.ts +5 -5
  190. package/src/internal/_isTypeInt64.ts +5 -5
  191. package/src/internal/_isTypeUint32.ts +5 -5
  192. package/src/internal/_isTypeUint64.ts +5 -5
  193. package/src/internal/_isUniqueItems.ts +159 -159
  194. package/src/internal/_jsonStringifyNumber.ts +12 -12
  195. package/src/internal/_jsonStringifyRest.ts +3 -3
  196. package/src/internal/_jsonStringifyString.ts +42 -42
  197. package/src/internal/_jsonStringifyTail.ts +2 -2
  198. package/src/internal/_llmApplicationFinalize.ts +20 -20
  199. package/src/internal/_miscCloneAny.ts +46 -46
  200. package/src/internal/_notationAny.ts +37 -37
  201. package/src/internal/_notationCamel.ts +13 -13
  202. package/src/internal/_notationPascal.ts +8 -8
  203. package/src/internal/_notationSnake.ts +43 -43
  204. package/src/internal/_randomArray.ts +21 -21
  205. package/src/internal/_randomBigint.ts +6 -6
  206. package/src/internal/_randomBoolean.ts +1 -1
  207. package/src/internal/_randomFormatByte.ts +3 -3
  208. package/src/internal/_randomFormatDate.ts +18 -18
  209. package/src/internal/_randomFormatDatetime.ts +16 -16
  210. package/src/internal/_randomFormatDuration.ts +27 -27
  211. package/src/internal/_randomFormatEmail.ts +11 -11
  212. package/src/internal/_randomFormatHostname.ts +6 -6
  213. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  214. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  215. package/src/internal/_randomFormatIpv4.ts +11 -11
  216. package/src/internal/_randomFormatIpv6.ts +11 -11
  217. package/src/internal/_randomFormatIri.ts +3 -3
  218. package/src/internal/_randomFormatIriReference.ts +3 -3
  219. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  220. package/src/internal/_randomFormatPassword.ts +8 -8
  221. package/src/internal/_randomFormatRegex.ts +4 -4
  222. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  223. package/src/internal/_randomFormatTime.ts +14 -14
  224. package/src/internal/_randomFormatUri.ts +3 -3
  225. package/src/internal/_randomFormatUriReference.ts +3 -3
  226. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  227. package/src/internal/_randomFormatUrl.ts +11 -11
  228. package/src/internal/_randomFormatUuid.ts +6 -6
  229. package/src/internal/_randomInteger.ts +53 -53
  230. package/src/internal/_randomNumber.ts +80 -80
  231. package/src/internal/_randomPattern.ts +10 -10
  232. package/src/internal/_randomPick.ts +9 -9
  233. package/src/internal/_randomString.ts +24 -24
  234. package/src/internal/_throwTypeGuardError.ts +5 -5
  235. package/src/internal/_validateReport.ts +13 -13
  236. package/src/internal/private/__notationCapitalize.ts +2 -2
  237. package/src/internal/private/__notationUnsnake.ts +24 -24
  238. package/src/json.ts +696 -696
  239. package/src/llm.ts +335 -342
  240. package/src/misc.ts +651 -658
  241. package/src/module.ts +929 -935
  242. package/src/notations.ts +820 -827
  243. package/src/programmers/AssertProgrammer.ts +454 -454
  244. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  245. package/src/programmers/FeatureProgrammer.ts +622 -622
  246. package/src/programmers/ImportProgrammer.ts +185 -185
  247. package/src/programmers/IsProgrammer.ts +273 -273
  248. package/src/programmers/RandomProgrammer.ts +1190 -1190
  249. package/src/programmers/TypiaProgrammer.ts +175 -175
  250. package/src/programmers/ValidateProgrammer.ts +439 -439
  251. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  252. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  253. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  254. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  255. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  256. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  257. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  258. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  259. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  260. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  261. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  262. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  263. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  264. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  265. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  266. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  267. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  268. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  269. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  270. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  271. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  272. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  273. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  274. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  275. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  276. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  277. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  278. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  279. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  280. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  281. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  282. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  283. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  284. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  285. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  286. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  287. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  288. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  289. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  290. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  291. package/src/programmers/internal/check_array_length.ts +47 -47
  292. package/src/programmers/internal/check_bigint.ts +50 -50
  293. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  294. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  295. package/src/programmers/internal/check_everything.ts +23 -23
  296. package/src/programmers/internal/check_native.ts +27 -27
  297. package/src/programmers/internal/check_number.ts +112 -112
  298. package/src/programmers/internal/check_object.ts +75 -75
  299. package/src/programmers/internal/check_string.ts +50 -50
  300. package/src/programmers/internal/check_template.ts +48 -48
  301. package/src/programmers/internal/check_union_array_like.ts +335 -335
  302. package/src/programmers/internal/decode_union_object.ts +116 -116
  303. package/src/programmers/internal/feature_object_entries.ts +61 -61
  304. package/src/programmers/internal/json_schema_alias.ts +47 -47
  305. package/src/programmers/internal/json_schema_array.ts +45 -45
  306. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  307. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  308. package/src/programmers/internal/json_schema_constant.ts +26 -26
  309. package/src/programmers/internal/json_schema_description.ts +12 -12
  310. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  311. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  312. package/src/programmers/internal/json_schema_native.ts +33 -33
  313. package/src/programmers/internal/json_schema_number.ts +15 -15
  314. package/src/programmers/internal/json_schema_object.ts +158 -158
  315. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  316. package/src/programmers/internal/json_schema_station.ts +185 -185
  317. package/src/programmers/internal/json_schema_string.ts +15 -15
  318. package/src/programmers/internal/json_schema_template.ts +55 -55
  319. package/src/programmers/internal/json_schema_title.ts +20 -20
  320. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  321. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  322. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  323. package/src/programmers/internal/prune_object_properties.ts +71 -71
  324. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  325. package/src/programmers/internal/stringify_native.ts +7 -7
  326. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  327. package/src/programmers/internal/template_to_pattern.ts +23 -23
  328. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  329. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  330. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  331. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  332. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  333. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  334. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -0
  335. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  336. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  337. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  338. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  339. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  340. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  341. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  342. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  343. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  344. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  345. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  346. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  347. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  348. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  349. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  350. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  351. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  352. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  353. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  354. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  355. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  356. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  357. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  358. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  359. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  360. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  361. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  362. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  363. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  364. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  365. package/src/protobuf.ts +861 -868
  366. package/src/reflect.ts +50 -57
  367. package/src/schemas/json/IJsonApplication.ts +73 -73
  368. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  369. package/src/schemas/json/IJsonSchemaUnit.ts +32 -0
  370. package/src/schemas/json/__IJsonApplication.ts +63 -63
  371. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  372. package/src/schemas/metadata/IMetadata.ts +35 -35
  373. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  374. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  375. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  376. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  377. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  378. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  379. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  380. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  381. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  382. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  383. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  384. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  385. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  386. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  387. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  388. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  389. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  390. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  391. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  392. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  393. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  394. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  395. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  396. package/src/schemas/metadata/Metadata.ts +687 -687
  397. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  398. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  399. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  400. package/src/schemas/metadata/MetadataArray.ts +49 -49
  401. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  402. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  403. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  404. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  405. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  406. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  407. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  408. package/src/schemas/metadata/MetadataMap.ts +48 -48
  409. package/src/schemas/metadata/MetadataNative.ts +44 -44
  410. package/src/schemas/metadata/MetadataObject.ts +48 -48
  411. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  412. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  413. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  414. package/src/schemas/metadata/MetadataSet.ts +45 -45
  415. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  416. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  417. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  418. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  419. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  420. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  421. package/src/tags/Constant.ts +15 -15
  422. package/src/tags/ContentMediaType.ts +10 -10
  423. package/src/tags/Default.ts +22 -22
  424. package/src/tags/Example.ts +24 -24
  425. package/src/tags/Examples.ts +16 -16
  426. package/src/tags/ExclusiveMaximum.ts +23 -23
  427. package/src/tags/ExclusiveMinimum.ts +23 -23
  428. package/src/tags/Format.ts +50 -50
  429. package/src/tags/JsonSchemaPlugin.ts +8 -8
  430. package/src/tags/MaxItems.ts +12 -12
  431. package/src/tags/MaxLength.ts +12 -12
  432. package/src/tags/Maximum.ts +19 -19
  433. package/src/tags/MinItems.ts +12 -12
  434. package/src/tags/MinLength.ts +12 -12
  435. package/src/tags/Minimum.ts +19 -19
  436. package/src/tags/MultipleOf.ts +21 -21
  437. package/src/tags/Pattern.ts +31 -31
  438. package/src/tags/Sequence.ts +10 -10
  439. package/src/tags/TagBase.ts +82 -82
  440. package/src/tags/Type.ts +37 -37
  441. package/src/tags/UniqueItems.ts +14 -14
  442. package/src/tags/index.ts +21 -21
  443. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  444. package/src/transform.ts +35 -35
  445. package/src/transformers/CallExpressionTransformer.ts +546 -546
  446. package/src/transformers/FileTransformer.ts +136 -136
  447. package/src/transformers/IProgrammerProps.ts +11 -11
  448. package/src/transformers/ITransformOptions.ts +62 -62
  449. package/src/transformers/ITransformProps.ts +9 -9
  450. package/src/transformers/ITypiaContext.ts +18 -18
  451. package/src/transformers/ImportTransformer.ts +81 -81
  452. package/src/transformers/NoTransformConfigurationError.ts +18 -0
  453. package/src/transformers/NodeTransformer.ts +17 -17
  454. package/src/transformers/TransformerError.ts +60 -60
  455. package/src/transformers/features/AssertTransformer.ts +24 -24
  456. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  457. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  458. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  459. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  460. package/src/transformers/features/IsTransformer.ts +18 -18
  461. package/src/transformers/features/RandomTransformer.ts +41 -41
  462. package/src/transformers/features/ValidateTransformer.ts +18 -18
  463. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  464. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  465. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  466. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  467. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  468. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  469. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  470. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  471. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  472. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  473. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  474. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  475. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  476. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  477. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  478. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  479. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  480. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  481. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  482. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  483. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  484. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  485. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  486. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  487. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  488. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  489. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  490. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  491. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  492. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  493. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  494. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  495. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  496. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  497. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  498. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  499. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  500. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  501. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  502. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -0
  503. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  504. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  505. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  506. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  507. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  508. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  509. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  510. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  511. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  512. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  513. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  514. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  515. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  516. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  517. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  518. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  519. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  520. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  521. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  522. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  523. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  524. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  525. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  526. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  527. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  528. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  529. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  530. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  531. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  532. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  533. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  534. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  535. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  536. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  537. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  538. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  539. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  540. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  541. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  542. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  543. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  544. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  545. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  546. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  547. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  548. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  549. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  550. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  551. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  552. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  553. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  554. package/src/transformers/internal/GenericTransformer.ts +101 -101
  555. package/src/typings/Atomic.ts +13 -13
  556. package/src/typings/ClassProperties.ts +5 -5
  557. package/src/typings/Customizable.ts +5 -5
  558. package/src/typings/Equal.ts +18 -18
  559. package/src/typings/IsTuple.ts +9 -9
  560. package/src/typings/NativeClass.ts +23 -23
  561. package/src/typings/OmitNever.ts +3 -3
  562. package/src/typings/ProtobufAtomic.ts +19 -19
  563. package/src/typings/SpecialFields.ts +3 -3
  564. package/src/typings/ValidationPipe.ts +9 -9
  565. package/src/typings/ValueOf.ts +20 -20
  566. package/src/typings/Writable.ts +11 -11
  567. package/src/utils/ArrayUtil.ts +41 -41
  568. package/src/utils/Escaper.ts +50 -50
  569. package/src/utils/MapUtil.ts +14 -14
  570. package/src/utils/NamingConvention.ts +94 -94
  571. package/src/utils/PatternUtil.ts +29 -29
  572. package/src/utils/ProtobufNameEncoder.ts +32 -32
  573. package/src/utils/Singleton.ts +16 -16
  574. package/src/utils/StringUtil.ts +16 -16
package/src/misc.ts CHANGED
@@ -1,658 +1,651 @@
1
- /* ===========================================================
2
- MISCELLANEOUS
3
- - LITERALS
4
- - CLONE
5
- - PRUNE
6
- - FACTORY FUNCTIONS
7
- ==============================================================
8
- LITERALS
9
- ----------------------------------------------------------- */
10
- import { Atomic } from "./typings/Atomic";
11
-
12
- import { IValidation } from "./IValidation";
13
- import { Resolved } from "./Resolved";
14
- import { TypeGuardError } from "./TypeGuardError";
15
-
16
- /**
17
- * > You must configure the generic argument `T`.
18
- *
19
- * Union literal type to array.
20
- *
21
- * Converts a union literal type to an array of its members.
22
- *
23
- * ```typescript
24
- * literals<"A" | "B" | 1>; // ["A", "B", 1]
25
- * ```
26
- *
27
- * @template T Union literal type
28
- * @return Array of union literal type's members
29
- *
30
- * @author Jeongho Nam - https://github.com/samchon
31
- */
32
- export function literals(): never;
33
-
34
- /**
35
- * Union literal type to array.
36
- *
37
- * Converts a union literal type to an array of its members.
38
- *
39
- * ```typescript
40
- * literals<"A" | "B" | 1>; // ["A", "B", 1]
41
- * ```
42
- *
43
- * @template T Union literal type
44
- * @return Array of union literal type's members
45
- *
46
- * @author Jeongho Nam - https://github.com/samchon
47
- */
48
- export function literals<T extends Atomic.Type | null>(): T[];
49
-
50
- /**
51
- * @internal
52
- */
53
- export function literals(): never {
54
- halt("literals");
55
- }
56
-
57
- /* -----------------------------------------------------------
58
- CLONE
59
- ----------------------------------------------------------- */
60
- /**
61
- * Clone a data.
62
- *
63
- * Clones an instance following type `T`. If the target *input* value or its member
64
- * variable contains a class instance having methods, those methods would not be
65
- * cloned.
66
- *
67
- * For reference, this `typia.misc.clone()` function does not validate the input value
68
- * type. It just believes that the input value is following the type `T`. Therefore,
69
- * if you can't ensure the input value type, it would be better to call
70
- * {@link assertClone} function instead.
71
- *
72
- * @template T Type of the input value
73
- * @param input A value to be cloned
74
- * @return Cloned data
75
- *
76
- * @author Jeongho Nam - https://github.com/samchon
77
- */
78
- export function clone<T>(input: T): Resolved<T>;
79
-
80
- /**
81
- * @internal
82
- */
83
- export function clone(): never {
84
- halt("clone");
85
- }
86
-
87
- /**
88
- * Clone a data with type assertion.
89
- *
90
- * Clones an instance following type `T`, with type assertion. If the target `input`
91
- * value or its member variable contains a class instance having methods, those
92
- * methods would not be cloned.
93
- *
94
- * In such reason, when `input` value is not matched with the type `T`, it throws an
95
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
96
- * there's no problem on the `input` value, cloned data would be returned.
97
- *
98
- * @template T Type of the input value
99
- * @param input A value to be cloned
100
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
101
- * @return Cloned data
102
- *
103
- * @author Jeongho Nam - https://github.com/samchon
104
- */
105
- export function assertClone<T>(
106
- input: T,
107
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
108
- ): Resolved<T>;
109
-
110
- /**
111
- * Clone a data with type assertion.
112
- *
113
- * Clones an instance following type `T`, with type assertion. If the target `input`
114
- * value or its member variable contains a class instance having methods, those
115
- * methods would not be cloned.
116
- *
117
- * In such reason, when `input` value is not matched with the type `T`, it throws an
118
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
119
- * there's no problem on the `input` value, cloned data would be returned.
120
- *
121
- * @template T Type of the input value
122
- * @param input A value to be cloned
123
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
124
- * @return Cloned data
125
- *
126
- * @author Jeongho Nam - https://github.com/samchon
127
- */
128
- export function assertClone<T>(
129
- input: unknown,
130
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
131
- ): Resolved<T>;
132
-
133
- /**
134
- * @internal
135
- */
136
- export function assertClone(): never {
137
- halt("assertClone");
138
- }
139
-
140
- /**
141
- * Clone a data with type checking.
142
- *
143
- * Clones an instance following type `T`, with type checking. If the target `input`
144
- * value or its member variable contains a class instance having methods, those
145
- * methods would not be cloned.
146
- *
147
- * In such reason, when `input` value is not matched with the type `T`, it returns
148
- * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
149
- * data would be returned.
150
- *
151
- * @template T Type of the input value
152
- * @param input A value to be cloned
153
- * @return Cloned data when exact type, otherwise null
154
- *
155
- * @author Jeongho Nam - https://github.com/samchon
156
- */
157
- export function isClone<T>(input: T): Resolved<T> | null;
158
-
159
- /**
160
- * Clone a data with type checking.
161
- *
162
- * Clones an instance following type `T`, with type checking. If the target `input`
163
- * value or its member variable contains a class instance having methods, those
164
- * methods would not be cloned.
165
- *
166
- * In such reason, when `input` value is not matched with the type `T`, it returns
167
- * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
168
- * data would be returned.
169
- *
170
- * @template T Type of the input value
171
- * @param input A value to be cloned
172
- * @return Cloned data when exact type, otherwise null
173
- *
174
- * @author Jeongho Nam - https://github.com/samchon
175
- */
176
- export function isClone<T>(input: unknown): Resolved<T> | null;
177
-
178
- /**
179
- * @internal
180
- */
181
- export function isClone(): never {
182
- halt("isClone");
183
- }
184
-
185
- /**
186
- * Clone a data with detailed type validation.
187
- *
188
- * Clones an instance following type `T`, with detailed type validation. If the target
189
- * `input` value or its member variable contains a class instance having methods,
190
- * those methods would not be cloned.
191
- *
192
- * In such reason, when `input` value is not matched with the type `T`, it returns
193
- * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
194
- * value, cloned data would be stored in `data` property of the output
195
- * {@link IValidation.Success} instance.
196
- *
197
- * @template T Type of the input value
198
- * @param input A value to be cloned
199
- * @returns Validation result with cloned value
200
- */
201
- export function validateClone<T>(input: T): IValidation<Resolved<T>>;
202
-
203
- /**
204
- * Clone a data with detailed type validation.
205
- *
206
- * Clones an instance following type `T`, with detailed type validation. If the target
207
- * `input` value or its member variable contains a class instance having methods,
208
- * those methods would not be cloned.
209
- *
210
- * In such reason, when `input` value is not matched with the type `T`, it returns
211
- * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
212
- * value, cloned data would be stored in `data` property of the output
213
- * {@link IValidation.Success} instance.
214
- *
215
- * @template T Type of the input value
216
- * @param input A value to be cloned
217
- * @returns Validation result with cloned value
218
- */
219
- export function validateClone<T>(input: unknown): IValidation<Resolved<T>>;
220
-
221
- /**
222
- * @internal
223
- */
224
- export function validateClone(): never {
225
- halt("validateClone");
226
- }
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
-
261
- /**
262
- * Prune, erase superfluous properties, with type assertion.
263
- *
264
- * `typia.misc.assertPrune()` is a combination function of {@link assert} and
265
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
266
- * object including nested objects, with type assertion.
267
- *
268
- * In such reason, when `input` value is not matched with the type `T`, it throws an
269
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
270
- * there's no problem on the `input` value, its every superfluous properties would be
271
- * removed, including nested objects.
272
- *
273
- * @template T Type of the input value
274
- * @param input Target instance to assert and prune
275
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
276
- *
277
- * @author Jeongho Nam - https://github.com/samchon
278
- */
279
- export function assertPrune<T>(
280
- input: T,
281
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
282
- ): T;
283
-
284
- /**
285
- * Prune, erase superfluous properties, with type assertion.
286
- *
287
- * `typia.misc.assertPrune()` is a combination function of {@link assert} and
288
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
289
- * object including nested objects, with type assertion.
290
- *
291
- * In such reason, when `input` value is not matched with the type `T`, it throws an
292
- * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise, there's
293
- * no problem on the `input` value, its every superfluous properties would be removed,
294
- * including nested objects.
295
- *
296
- * @template T Type of the input value
297
- * @param input Target instance to assert and prune
298
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
299
- *
300
- * @author Jeongho Nam - https://github.com/samchon
301
- */
302
- export function assertPrune<T>(
303
- input: unknown,
304
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
305
- ): T;
306
-
307
- /**
308
- * @internal
309
- */
310
- export function assertPrune(): unknown {
311
- halt("assertPrune");
312
- }
313
-
314
- /**
315
- * Prune, erase superfluous properties, with type checking.
316
- *
317
- * `typia.misc.assertPrune()` is a combination function of {@link is} and
318
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
319
- * object including nested objects, with type checking.
320
- *
321
- * In such reason, when `input` value is not matched with the type `T`, it returns
322
- * `false` value. Otherwise, there's no problem on the `input` value, it returns
323
- * `true` after removing every superfluous properties, including nested objects.
324
- *
325
- * @template T Type of the input value
326
- * @param input Target instance to check and prune
327
- * @returns Whether the parametric value is following the type `T` or not
328
- *
329
- * @author Jeongho Nam - https://github.com/samchon
330
- */
331
- export function isPrune<T>(input: T): input is T;
332
-
333
- /**
334
- * Prune, erase superfluous properties, with type checking.
335
- *
336
- * `typia.misc.assertPrune()` is a combination function of {@link is} and
337
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
338
- * object including nested objects, with type checking.
339
- *
340
- * In such reason, when `input` value is not matched with the type `T`, it returns
341
- * `false` value. Otherwise, there's no problem on the `input` value, it returns
342
- * `true` after removing every superfluous properties, including nested objects.
343
- *
344
- * @template T Type of the input value
345
- * @param input Target instance to check and prune
346
- * @returns Whether the parametric value is following the type `T` or not
347
- *
348
- * @author Jeongho Nam - https://github.com/samchon
349
- */
350
- export function isPrune<T>(input: unknown): input is T;
351
-
352
- /**
353
- * @internal
354
- */
355
- export function isPrune(): never {
356
- halt("isPrune");
357
- }
358
-
359
- /**
360
- * Prune, erase superfluous properties, with type validation.
361
- *
362
- * `typia.misc.validatePrune()` is a combination function of {@link validate} and
363
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
364
- * object including nested objects, with type validation.
365
- *
366
- * In such reason, when `input` value is not matched with the type `T`, it returns
367
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
368
- * no problem on the `input` value, it returns {@link IValidation.ISuccess} value after
369
- * removing every superfluous properties, including nested objects.
370
- *
371
- * @template T Type of the input value
372
- * @param input Target instance to validate and prune
373
- * @returns Validation result
374
- *
375
- * @author Jeongho Nam - https://github.com/samchon
376
- */
377
- export function validatePrune<T>(input: T): IValidation<T>;
378
-
379
- /**
380
- * Prune, erase superfluous properties, with type validation.
381
- *
382
- * `typia.misc.validatePrune()` is a combination function of {@link validate} and
383
- * {@link prune}. Therefore, it removes every superfluous properties from the `input`
384
- * object including nested objects, with type validation.
385
- *
386
- * In such reason, when `input` value is not matched with the type `T`, it returns
387
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
388
- * no problem on the `input` value, it returns {@link IValidation.ISuccess} value after
389
- * removing every superfluous properties, including nested objects.
390
- *
391
- * @template T Type of the input value
392
- * @param input Target instance to validate and prune
393
- * @returns Validation result
394
- *
395
- * @author Jeongho Nam - https://github.com/samchon
396
- */
397
- export function validatePrune<T>(input: unknown): IValidation<T>;
398
-
399
- /**
400
- * @internal
401
- */
402
- export function validatePrune<T>(): IValidation<T> {
403
- halt("validatePrune");
404
- }
405
-
406
- /* -----------------------------------------------------------
407
- FACTORY FUNCTIONS
408
- ----------------------------------------------------------- */
409
- /**
410
- * Creates a reusable {@link clone} function.
411
- *
412
- * @danger You must configure the generic argument `T`
413
- * @returns Nothing until you configure the generic argument `T`
414
- * @throws compile error
415
- *
416
- * @author Jeongho Nam - https://github.com/samchon
417
- */
418
- export function createClone(): never;
419
-
420
- /**
421
- * Creates a reusable {@link clone} function.
422
- *
423
- * @template T Type of the input value
424
- * @returns A reusable `clone` function
425
- *
426
- * @author Jeongho Nam - https://github.com/samchon
427
- */
428
- export function createClone<T>(): (input: T) => Resolved<T>;
429
-
430
- /**
431
- * @internal
432
- */
433
- export function createClone(): never {
434
- halt("createClone");
435
- }
436
-
437
- /**
438
- * Creates a reusable {@link assertClone} function.
439
- *
440
- * @danger You must configure the generic argument `T`
441
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
442
- * @returns Nothing until you configure the generic argument `T`
443
- * @throws compile error
444
- *
445
- * @author Jeongho Nam - https://github.com/samchon
446
- */
447
- export function createAssertClone(
448
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
449
- ): never;
450
-
451
- /**
452
- * Creates a reusable {@link assertClone} function.
453
- *
454
- * @template T Type of the input value
455
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
456
- * @returns A reusable `clone` function
457
- *
458
- * @author Jeongho Nam - https://github.com/samchon
459
- */
460
- export function createAssertClone<T>(
461
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
462
- ): (input: unknown) => Resolved<T>;
463
-
464
- /**
465
- * @internal
466
- */
467
- export function createAssertClone(): never {
468
- halt("createAssertClone");
469
- }
470
-
471
- /**
472
- * Creates a reusable {@link isClone} function.
473
- *
474
- * @danger You must configure the generic argument `T`
475
- * @returns Nothing until you configure the generic argument `T`
476
- * @throws compile error
477
- *
478
- * @author Jeongho Nam - https://github.com/samchon
479
- */
480
- export function createIsClone(): never;
481
-
482
- /**
483
- * Creates a reusable {@link isClone} function.
484
- *
485
- * @template T Type of the input value
486
- * @returns A reusable `clone` function
487
- *
488
- * @author Jeongho Nam - https://github.com/samchon
489
- */
490
- export function createIsClone<T>(): (input: unknown) => Resolved<T> | null;
491
-
492
- /**
493
- * @internal
494
- */
495
- export function createIsClone(): never {
496
- halt("createIsClone");
497
- }
498
-
499
- /**
500
- * Creates a reusable {@link validateClone} function.
501
- *
502
- * @danger You must configure the generic argument `T`
503
- * @returns Nothing until you configure the generic argument `T`
504
- * @throws compile error
505
- *
506
- * @author Jeongho Nam - https://github.com/samchon
507
- */
508
- export function createValidateClone(): never;
509
-
510
- /**
511
- * Creates a reusable {@link validateClone} function.
512
- *
513
- * @template T Type of the input value
514
- * @returns A reusable `clone` function
515
- *
516
- * @author Jeongho Nam - https://github.com/samchon
517
- */
518
- export function createValidateClone<T>(): (
519
- input: unknown,
520
- ) => IValidation<Resolved<T>>;
521
-
522
- /**
523
- * @internal
524
- */
525
- export function createValidateClone(): never {
526
- halt("createValidateClone");
527
- }
528
-
529
- /**
530
- * Creates a reusable {@link prune} function.
531
- *
532
- * @danger You must configure the generic argument `T`
533
- * @returns Nothing until you configure the generic argument `T`
534
- * @throws compile error
535
- *
536
- * @author Jeongho Nam - https://github.com/samchon
537
- */
538
- export function createPrune(): never;
539
-
540
- /**
541
- * Creates a reusable {@link prune} function.
542
- *
543
- * @template T Type of the input value
544
- * @returns A reusable `prune` function
545
- *
546
- * @author Jeongho Nam - https://github.com/samchon
547
- */
548
- export function createPrune<T extends object>(): (input: T) => void;
549
-
550
- /**
551
- * @internal
552
- */
553
- export function createPrune<T extends object>(): (input: T) => void {
554
- halt("createPrune");
555
- }
556
-
557
- /**
558
- * Creates a reusable {@link assertPrune} function.
559
- *
560
- * @danger You must configure the generic argument `T`
561
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
562
- * @returns Nothing until you configure the generic argument `T`
563
- * @throws compile error
564
- *
565
- * @author Jeongho Nam - https://github.com/samchon
566
- */
567
- export function createAssertPrune(
568
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
569
- ): never;
570
-
571
- /**
572
- * Creates a reusable {@link assertPrune} function.
573
- *
574
- * @template T Type of the input value
575
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
576
- * @returns A reusable `isPrune` function
577
- *
578
- * @author Jeongho Nam - https://github.com/samchon
579
- */
580
- export function createAssertPrune<T extends object>(
581
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
582
- ): (input: T) => T;
583
-
584
- /**
585
- * @internal
586
- */
587
- export function createAssertPrune<T extends object>(): (input: T) => T {
588
- halt("createAssertPrune");
589
- }
590
-
591
- /**
592
- * Creates a reusable {@link isPrune} function.
593
- *
594
- * @danger You must configure the generic argument `T`
595
- * @returns Nothing until you configure the generic argument `T`
596
- * @throws compile error
597
- *
598
- * @author Jeongho Nam - https://github.com/samchon
599
- */
600
- export function createIsPrune(): never;
601
-
602
- /**
603
- * Creates a reusable {@link isPrune} function.
604
- *
605
- * @template T Type of the input value
606
- * @returns A reusable `isPrune` function
607
- *
608
- * @author Jeongho Nam - https://github.com/samchon
609
- */
610
- export function createIsPrune<T extends object>(): (input: T) => input is T;
611
-
612
- /**
613
- * @internal
614
- */
615
- export function createIsPrune<T extends object>(): (input: T) => input is T {
616
- halt("createIsPrune");
617
- }
618
-
619
- /**
620
- * Creates a reusable {@link validatePrune} function.
621
- *
622
- * @danger You must configure the generic argument `T`
623
- * @returns Nothing until you configure the generic argument `T`
624
- * @throws compile error
625
- *
626
- * @author Jeongho Nam - https://github.com/samchon
627
- */
628
- export function createValidatePrune(): never;
629
-
630
- /**
631
- * Creates a reusable {@link validatePrune} function.
632
- *
633
- * @template T Type of the input value
634
- * @returns A reusable `validatePrune` function
635
- *
636
- * @author Jeongho Nam - https://github.com/samchon
637
- */
638
- export function createValidatePrune<T extends object>(): (
639
- input: T,
640
- ) => IValidation<T>;
641
-
642
- /**
643
- * @internal
644
- */
645
- export function createValidatePrune<T extends object>(): (
646
- input: T,
647
- ) => IValidation<T> {
648
- halt("createValidatePrune");
649
- }
650
-
651
- /**
652
- * @internal
653
- */
654
- function halt(name: string): never {
655
- throw new Error(
656
- `Error on typia.misc.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
657
- );
658
- }
1
+ /* ===========================================================
2
+ MISCELLANEOUS
3
+ - LITERALS
4
+ - CLONE
5
+ - PRUNE
6
+ - FACTORY FUNCTIONS
7
+ ==============================================================
8
+ LITERALS
9
+ ----------------------------------------------------------- */
10
+ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
11
+
12
+ import { Atomic } from "./typings/Atomic";
13
+
14
+ import { IValidation } from "./IValidation";
15
+ import { Resolved } from "./Resolved";
16
+ import { TypeGuardError } from "./TypeGuardError";
17
+
18
+ /**
19
+ * > You must configure the generic argument `T`.
20
+ *
21
+ * Union literal type to array.
22
+ *
23
+ * Converts a union literal type to an array of its members.
24
+ *
25
+ * ```typescript
26
+ * literals<"A" | "B" | 1>; // ["A", "B", 1]
27
+ * ```
28
+ *
29
+ * @template T Union literal type
30
+ * @return Array of union literal type's members
31
+ *
32
+ * @author Jeongho Nam - https://github.com/samchon
33
+ */
34
+ export function literals(): never;
35
+
36
+ /**
37
+ * Union literal type to array.
38
+ *
39
+ * Converts a union literal type to an array of its members.
40
+ *
41
+ * ```typescript
42
+ * literals<"A" | "B" | 1>; // ["A", "B", 1]
43
+ * ```
44
+ *
45
+ * @template T Union literal type
46
+ * @return Array of union literal type's members
47
+ *
48
+ * @author Jeongho Nam - https://github.com/samchon
49
+ */
50
+ export function literals<T extends Atomic.Type | null>(): T[];
51
+
52
+ /**
53
+ * @internal
54
+ */
55
+ export function literals(): never {
56
+ NoTransformConfigurationError("misc.literals");
57
+ }
58
+
59
+ /* -----------------------------------------------------------
60
+ CLONE
61
+ ----------------------------------------------------------- */
62
+ /**
63
+ * Clone a data.
64
+ *
65
+ * Clones an instance following type `T`. If the target *input* value or its member
66
+ * variable contains a class instance having methods, those methods would not be
67
+ * cloned.
68
+ *
69
+ * For reference, this `typia.misc.clone()` function does not validate the input value
70
+ * type. It just believes that the input value is following the type `T`. Therefore,
71
+ * if you can't ensure the input value type, it would be better to call
72
+ * {@link assertClone} function instead.
73
+ *
74
+ * @template T Type of the input value
75
+ * @param input A value to be cloned
76
+ * @return Cloned data
77
+ *
78
+ * @author Jeongho Nam - https://github.com/samchon
79
+ */
80
+ export function clone<T>(input: T): Resolved<T>;
81
+
82
+ /**
83
+ * @internal
84
+ */
85
+ export function clone(): never {
86
+ NoTransformConfigurationError("misc.clone");
87
+ }
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} or custom error generated by *errorFactory*. Otherwise,
98
+ * there's no problem on the `input` value, cloned data would be returned.
99
+ *
100
+ * @template T Type of the input value
101
+ * @param input A value to be cloned
102
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
103
+ * @return Cloned data
104
+ *
105
+ * @author Jeongho Nam - https://github.com/samchon
106
+ */
107
+ export function assertClone<T>(
108
+ input: T,
109
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
110
+ ): Resolved<T>;
111
+
112
+ /**
113
+ * Clone a data with type assertion.
114
+ *
115
+ * Clones an instance following type `T`, with type assertion. If the target `input`
116
+ * value or its member variable contains a class instance having methods, those
117
+ * methods would not be cloned.
118
+ *
119
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
120
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
121
+ * there's no problem on the `input` value, cloned data would be returned.
122
+ *
123
+ * @template T Type of the input value
124
+ * @param input A value to be cloned
125
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
126
+ * @return Cloned data
127
+ *
128
+ * @author Jeongho Nam - https://github.com/samchon
129
+ */
130
+ export function assertClone<T>(
131
+ input: unknown,
132
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
133
+ ): Resolved<T>;
134
+
135
+ /**
136
+ * @internal
137
+ */
138
+ export function assertClone(): never {
139
+ NoTransformConfigurationError("misc.assertClone");
140
+ }
141
+
142
+ /**
143
+ * Clone a data with type checking.
144
+ *
145
+ * Clones an instance following type `T`, with type checking. If the target `input`
146
+ * value or its member variable contains a class instance having methods, those
147
+ * methods would not be cloned.
148
+ *
149
+ * In such reason, when `input` value is not matched with the type `T`, it returns
150
+ * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
151
+ * data would be returned.
152
+ *
153
+ * @template T Type of the input value
154
+ * @param input A value to be cloned
155
+ * @return Cloned data when exact type, otherwise null
156
+ *
157
+ * @author Jeongho Nam - https://github.com/samchon
158
+ */
159
+ export function isClone<T>(input: T): Resolved<T> | null;
160
+
161
+ /**
162
+ * Clone a data with type checking.
163
+ *
164
+ * Clones an instance following type `T`, with type checking. If the target `input`
165
+ * value or its member variable contains a class instance having methods, those
166
+ * methods would not be cloned.
167
+ *
168
+ * In such reason, when `input` value is not matched with the type `T`, it returns
169
+ * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
170
+ * data would be returned.
171
+ *
172
+ * @template T Type of the input value
173
+ * @param input A value to be cloned
174
+ * @return Cloned data when exact type, otherwise null
175
+ *
176
+ * @author Jeongho Nam - https://github.com/samchon
177
+ */
178
+ export function isClone<T>(input: unknown): Resolved<T> | null;
179
+
180
+ /**
181
+ * @internal
182
+ */
183
+ export function isClone(): never {
184
+ NoTransformConfigurationError("misc.isClone");
185
+ }
186
+
187
+ /**
188
+ * Clone a data with detailed type validation.
189
+ *
190
+ * Clones an instance following type `T`, with detailed type validation. If the target
191
+ * `input` value or its member variable contains a class instance having methods,
192
+ * those methods would not be cloned.
193
+ *
194
+ * In such reason, when `input` value is not matched with the type `T`, it returns
195
+ * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
196
+ * value, cloned data would be stored in `data` property of the output
197
+ * {@link IValidation.Success} instance.
198
+ *
199
+ * @template T Type of the input value
200
+ * @param input A value to be cloned
201
+ * @returns Validation result with cloned value
202
+ */
203
+ export function validateClone<T>(input: T): IValidation<Resolved<T>>;
204
+
205
+ /**
206
+ * Clone a data with detailed type validation.
207
+ *
208
+ * Clones an instance following type `T`, with detailed type validation. If the target
209
+ * `input` value or its member variable contains a class instance having methods,
210
+ * those methods would not be cloned.
211
+ *
212
+ * In such reason, when `input` value is not matched with the type `T`, it returns
213
+ * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
214
+ * value, cloned data would be stored in `data` property of the output
215
+ * {@link IValidation.Success} instance.
216
+ *
217
+ * @template T Type of the input value
218
+ * @param input A value to be cloned
219
+ * @returns Validation result with cloned value
220
+ */
221
+ export function validateClone<T>(input: unknown): IValidation<Resolved<T>>;
222
+
223
+ /**
224
+ * @internal
225
+ */
226
+ export function validateClone(): never {
227
+ NoTransformConfigurationError("misc.validateClone");
228
+ }
229
+
230
+ /* -----------------------------------------------------------
231
+ PRUNE
232
+ ----------------------------------------------------------- */
233
+ /**
234
+ * Prune, erase superfluous properties.
235
+ *
236
+ * Remove every superfluous properties from the `input` object, even including nested
237
+ * objects. Note that, as every superfluous properties would be deleted, you never can
238
+ * read those superfluous properties after calling this `prune()` function.
239
+ *
240
+ * For reference, this `typia.misc.prune()` function does not validate the input value
241
+ * type. It just believes that the input value is following the type `T`. Therefore,
242
+ * if you can't ensure the input value type, it would better to call one of below
243
+ * functions instead.
244
+ *
245
+ * - {@link assertPrune}
246
+ * - {@link isPrune}
247
+ * - {@link validatePrune}
248
+ *
249
+ * @template T Type of the input value
250
+ * @param input Target instance to prune
251
+ *
252
+ * @author Jeongho Nam - https://github.com/samchon
253
+ */
254
+ export function prune<T extends object>(input: T): void;
255
+
256
+ /**
257
+ * @internal
258
+ */
259
+ export function prune(): never {
260
+ NoTransformConfigurationError("misc.prune");
261
+ }
262
+
263
+ /**
264
+ * Prune, erase superfluous properties, with type assertion.
265
+ *
266
+ * `typia.misc.assertPrune()` is a combination function of {@link assert} and
267
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
268
+ * object including nested objects, with type assertion.
269
+ *
270
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
271
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise,
272
+ * there's no problem on the `input` value, its every superfluous properties would be
273
+ * removed, including nested objects.
274
+ *
275
+ * @template T Type of the input value
276
+ * @param input Target instance to assert and prune
277
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
278
+ *
279
+ * @author Jeongho Nam - https://github.com/samchon
280
+ */
281
+ export function assertPrune<T>(
282
+ input: T,
283
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
284
+ ): T;
285
+
286
+ /**
287
+ * Prune, erase superfluous properties, with type assertion.
288
+ *
289
+ * `typia.misc.assertPrune()` is a combination function of {@link assert} and
290
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
291
+ * object including nested objects, with type assertion.
292
+ *
293
+ * In such reason, when `input` value is not matched with the type `T`, it throws an
294
+ * {@link TypeGuardError} or custom error generated by *errorFactory*. Otherwise, there's
295
+ * no problem on the `input` value, its every superfluous properties would be removed,
296
+ * including nested objects.
297
+ *
298
+ * @template T Type of the input value
299
+ * @param input Target instance to assert and prune
300
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
301
+ *
302
+ * @author Jeongho Nam - https://github.com/samchon
303
+ */
304
+ export function assertPrune<T>(
305
+ input: unknown,
306
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
307
+ ): T;
308
+
309
+ /**
310
+ * @internal
311
+ */
312
+ export function assertPrune(): unknown {
313
+ NoTransformConfigurationError("misc.assertPrune");
314
+ }
315
+
316
+ /**
317
+ * Prune, erase superfluous properties, with type checking.
318
+ *
319
+ * `typia.misc.assertPrune()` is a combination function of {@link is} and
320
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
321
+ * object including nested objects, with type checking.
322
+ *
323
+ * In such reason, when `input` value is not matched with the type `T`, it returns
324
+ * `false` value. Otherwise, there's no problem on the `input` value, it returns
325
+ * `true` after removing every superfluous properties, including nested objects.
326
+ *
327
+ * @template T Type of the input value
328
+ * @param input Target instance to check and prune
329
+ * @returns Whether the parametric value is following the type `T` or not
330
+ *
331
+ * @author Jeongho Nam - https://github.com/samchon
332
+ */
333
+ export function isPrune<T>(input: T): input is T;
334
+
335
+ /**
336
+ * Prune, erase superfluous properties, with type checking.
337
+ *
338
+ * `typia.misc.assertPrune()` is a combination function of {@link is} and
339
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
340
+ * object including nested objects, with type checking.
341
+ *
342
+ * In such reason, when `input` value is not matched with the type `T`, it returns
343
+ * `false` value. Otherwise, there's no problem on the `input` value, it returns
344
+ * `true` after removing every superfluous properties, including nested objects.
345
+ *
346
+ * @template T Type of the input value
347
+ * @param input Target instance to check and prune
348
+ * @returns Whether the parametric value is following the type `T` or not
349
+ *
350
+ * @author Jeongho Nam - https://github.com/samchon
351
+ */
352
+ export function isPrune<T>(input: unknown): input is T;
353
+
354
+ /**
355
+ * @internal
356
+ */
357
+ export function isPrune(): never {
358
+ NoTransformConfigurationError("misc.isPrune");
359
+ }
360
+
361
+ /**
362
+ * Prune, erase superfluous properties, with type validation.
363
+ *
364
+ * `typia.misc.validatePrune()` is a combination function of {@link validate} and
365
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
366
+ * object including nested objects, with type validation.
367
+ *
368
+ * In such reason, when `input` value is not matched with the type `T`, it returns
369
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
370
+ * no problem on the `input` value, it returns {@link IValidation.ISuccess} value after
371
+ * removing every superfluous properties, including nested objects.
372
+ *
373
+ * @template T Type of the input value
374
+ * @param input Target instance to validate and prune
375
+ * @returns Validation result
376
+ *
377
+ * @author Jeongho Nam - https://github.com/samchon
378
+ */
379
+ export function validatePrune<T>(input: T): IValidation<T>;
380
+
381
+ /**
382
+ * Prune, erase superfluous properties, with type validation.
383
+ *
384
+ * `typia.misc.validatePrune()` is a combination function of {@link validate} and
385
+ * {@link prune}. Therefore, it removes every superfluous properties from the `input`
386
+ * object including nested objects, with type validation.
387
+ *
388
+ * In such reason, when `input` value is not matched with the type `T`, it returns
389
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
390
+ * no problem on the `input` value, it returns {@link IValidation.ISuccess} value after
391
+ * removing every superfluous properties, including nested objects.
392
+ *
393
+ * @template T Type of the input value
394
+ * @param input Target instance to validate and prune
395
+ * @returns Validation result
396
+ *
397
+ * @author Jeongho Nam - https://github.com/samchon
398
+ */
399
+ export function validatePrune<T>(input: unknown): IValidation<T>;
400
+
401
+ /**
402
+ * @internal
403
+ */
404
+ export function validatePrune<T>(): IValidation<T> {
405
+ NoTransformConfigurationError("misc.validatePrune");
406
+ }
407
+
408
+ /* -----------------------------------------------------------
409
+ FACTORY FUNCTIONS
410
+ ----------------------------------------------------------- */
411
+ /**
412
+ * Creates a reusable {@link clone} function.
413
+ *
414
+ * @danger You must configure the generic argument `T`
415
+ * @returns Nothing until you configure the generic argument `T`
416
+ * @throws compile error
417
+ *
418
+ * @author Jeongho Nam - https://github.com/samchon
419
+ */
420
+ export function createClone(): never;
421
+
422
+ /**
423
+ * Creates a reusable {@link clone} function.
424
+ *
425
+ * @template T Type of the input value
426
+ * @returns A reusable `clone` function
427
+ *
428
+ * @author Jeongho Nam - https://github.com/samchon
429
+ */
430
+ export function createClone<T>(): (input: T) => Resolved<T>;
431
+
432
+ /**
433
+ * @internal
434
+ */
435
+ export function createClone(): never {
436
+ NoTransformConfigurationError("misc.createClone");
437
+ }
438
+
439
+ /**
440
+ * Creates a reusable {@link assertClone} function.
441
+ *
442
+ * @danger You must configure the generic argument `T`
443
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
444
+ * @returns Nothing until you configure the generic argument `T`
445
+ * @throws compile error
446
+ *
447
+ * @author Jeongho Nam - https://github.com/samchon
448
+ */
449
+ export function createAssertClone(
450
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
451
+ ): never;
452
+
453
+ /**
454
+ * Creates a reusable {@link assertClone} function.
455
+ *
456
+ * @template T Type of the input value
457
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
458
+ * @returns A reusable `clone` function
459
+ *
460
+ * @author Jeongho Nam - https://github.com/samchon
461
+ */
462
+ export function createAssertClone<T>(
463
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
464
+ ): (input: unknown) => Resolved<T>;
465
+
466
+ /**
467
+ * @internal
468
+ */
469
+ export function createAssertClone(): never {
470
+ NoTransformConfigurationError("misc.createAssertClone");
471
+ }
472
+
473
+ /**
474
+ * Creates a reusable {@link isClone} function.
475
+ *
476
+ * @danger You must configure the generic argument `T`
477
+ * @returns Nothing until you configure the generic argument `T`
478
+ * @throws compile error
479
+ *
480
+ * @author Jeongho Nam - https://github.com/samchon
481
+ */
482
+ export function createIsClone(): never;
483
+
484
+ /**
485
+ * Creates a reusable {@link isClone} function.
486
+ *
487
+ * @template T Type of the input value
488
+ * @returns A reusable `clone` function
489
+ *
490
+ * @author Jeongho Nam - https://github.com/samchon
491
+ */
492
+ export function createIsClone<T>(): (input: unknown) => Resolved<T> | null;
493
+
494
+ /**
495
+ * @internal
496
+ */
497
+ export function createIsClone(): never {
498
+ NoTransformConfigurationError("misc.createIsClone");
499
+ }
500
+
501
+ /**
502
+ * Creates a reusable {@link validateClone} function.
503
+ *
504
+ * @danger You must configure the generic argument `T`
505
+ * @returns Nothing until you configure the generic argument `T`
506
+ * @throws compile error
507
+ *
508
+ * @author Jeongho Nam - https://github.com/samchon
509
+ */
510
+ export function createValidateClone(): never;
511
+
512
+ /**
513
+ * Creates a reusable {@link validateClone} function.
514
+ *
515
+ * @template T Type of the input value
516
+ * @returns A reusable `clone` function
517
+ *
518
+ * @author Jeongho Nam - https://github.com/samchon
519
+ */
520
+ export function createValidateClone<T>(): (
521
+ input: unknown,
522
+ ) => IValidation<Resolved<T>>;
523
+
524
+ /**
525
+ * @internal
526
+ */
527
+ export function createValidateClone(): never {
528
+ NoTransformConfigurationError("misc.createValidateClone");
529
+ }
530
+
531
+ /**
532
+ * Creates a reusable {@link prune} function.
533
+ *
534
+ * @danger You must configure the generic argument `T`
535
+ * @returns Nothing until you configure the generic argument `T`
536
+ * @throws compile error
537
+ *
538
+ * @author Jeongho Nam - https://github.com/samchon
539
+ */
540
+ export function createPrune(): never;
541
+
542
+ /**
543
+ * Creates a reusable {@link prune} function.
544
+ *
545
+ * @template T Type of the input value
546
+ * @returns A reusable `prune` function
547
+ *
548
+ * @author Jeongho Nam - https://github.com/samchon
549
+ */
550
+ export function createPrune<T extends object>(): (input: T) => void;
551
+
552
+ /**
553
+ * @internal
554
+ */
555
+ export function createPrune<T extends object>(): (input: T) => void {
556
+ NoTransformConfigurationError("misc.createPrune");
557
+ }
558
+
559
+ /**
560
+ * Creates a reusable {@link assertPrune} function.
561
+ *
562
+ * @danger You must configure the generic argument `T`
563
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
564
+ * @returns Nothing until you configure the generic argument `T`
565
+ * @throws compile error
566
+ *
567
+ * @author Jeongho Nam - https://github.com/samchon
568
+ */
569
+ export function createAssertPrune(
570
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
571
+ ): never;
572
+
573
+ /**
574
+ * Creates a reusable {@link assertPrune} function.
575
+ *
576
+ * @template T Type of the input value
577
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
578
+ * @returns A reusable `isPrune` function
579
+ *
580
+ * @author Jeongho Nam - https://github.com/samchon
581
+ */
582
+ export function createAssertPrune<T extends object>(
583
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
584
+ ): (input: T) => T;
585
+
586
+ /**
587
+ * @internal
588
+ */
589
+ export function createAssertPrune<T extends object>(): (input: T) => T {
590
+ NoTransformConfigurationError("misc.createAssertPrune");
591
+ }
592
+
593
+ /**
594
+ * Creates a reusable {@link isPrune} function.
595
+ *
596
+ * @danger You must configure the generic argument `T`
597
+ * @returns Nothing until you configure the generic argument `T`
598
+ * @throws compile error
599
+ *
600
+ * @author Jeongho Nam - https://github.com/samchon
601
+ */
602
+ export function createIsPrune(): never;
603
+
604
+ /**
605
+ * Creates a reusable {@link isPrune} function.
606
+ *
607
+ * @template T Type of the input value
608
+ * @returns A reusable `isPrune` function
609
+ *
610
+ * @author Jeongho Nam - https://github.com/samchon
611
+ */
612
+ export function createIsPrune<T extends object>(): (input: T) => input is T;
613
+
614
+ /**
615
+ * @internal
616
+ */
617
+ export function createIsPrune<T extends object>(): (input: T) => input is T {
618
+ NoTransformConfigurationError("misc.createIsPrune");
619
+ }
620
+
621
+ /**
622
+ * Creates a reusable {@link validatePrune} function.
623
+ *
624
+ * @danger You must configure the generic argument `T`
625
+ * @returns Nothing until you configure the generic argument `T`
626
+ * @throws compile error
627
+ *
628
+ * @author Jeongho Nam - https://github.com/samchon
629
+ */
630
+ export function createValidatePrune(): never;
631
+
632
+ /**
633
+ * Creates a reusable {@link validatePrune} function.
634
+ *
635
+ * @template T Type of the input value
636
+ * @returns A reusable `validatePrune` function
637
+ *
638
+ * @author Jeongho Nam - https://github.com/samchon
639
+ */
640
+ export function createValidatePrune<T extends object>(): (
641
+ input: T,
642
+ ) => IValidation<T>;
643
+
644
+ /**
645
+ * @internal
646
+ */
647
+ export function createValidatePrune<T extends object>(): (
648
+ input: T,
649
+ ) => IValidation<T> {
650
+ NoTransformConfigurationError("misc.createValidatePrune");
651
+ }