typia 7.0.2 → 7.1.0-dev.20241209

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 (476) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +123 -123
  3. package/lib/executable/typia.js +0 -0
  4. package/lib/factories/LiteralFactory.js +4 -0
  5. package/lib/factories/LiteralFactory.js.map +1 -1
  6. package/lib/factories/internal/metadata/iterate_metadata_function.js +1 -0
  7. package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -1
  8. package/lib/index.mjs +18 -1
  9. package/lib/index.mjs.map +1 -1
  10. package/lib/llm.d.ts +121 -2
  11. package/lib/llm.js +7 -0
  12. package/lib/llm.js.map +1 -1
  13. package/lib/module.d.ts +2 -0
  14. package/lib/module.js +2 -0
  15. package/lib/module.js.map +1 -1
  16. package/lib/programmers/llm/LlmApplicationOfValidateProgrammer.d.ts +15 -0
  17. package/lib/programmers/llm/LlmApplicationOfValidateProgrammer.js +37 -0
  18. package/lib/programmers/llm/LlmApplicationOfValidateProgrammer.js.map +1 -0
  19. package/lib/schemas/llm/ILlmApplicationOfValidate.d.ts +52 -0
  20. package/lib/schemas/llm/ILlmApplicationOfValidate.js +7 -0
  21. package/lib/schemas/llm/ILlmApplicationOfValidate.js.map +1 -0
  22. package/lib/schemas/llm/ILlmFunctionOfValidate.d.ts +36 -0
  23. package/lib/schemas/llm/ILlmFunctionOfValidate.js +7 -0
  24. package/lib/schemas/llm/ILlmFunctionOfValidate.js.map +1 -0
  25. package/lib/schemas/metadata/MetadataParameter.d.ts +2 -0
  26. package/lib/schemas/metadata/MetadataParameter.js +1 -0
  27. package/lib/schemas/metadata/MetadataParameter.js.map +1 -1
  28. package/lib/transformers/CallExpressionTransformer.js +2 -0
  29. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  30. package/lib/transformers/features/llm/LlmApplicationOfValidateTransformer.d.ts +5 -0
  31. package/lib/transformers/features/llm/LlmApplicationOfValidateTransformer.js +94 -0
  32. package/lib/transformers/features/llm/LlmApplicationOfValidateTransformer.js.map +1 -0
  33. package/lib/transformers/features/llm/LlmApplicationTransformer.js +3 -3
  34. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/IRandomGenerator.ts +49 -49
  37. package/src/IReadableURLSearchParams.ts +9 -9
  38. package/src/IValidation.ts +20 -20
  39. package/src/executable/TypiaGenerateWizard.ts +83 -83
  40. package/src/executable/TypiaPatchWizard.ts +45 -45
  41. package/src/executable/TypiaSetupWizard.ts +179 -179
  42. package/src/executable/setup/ArgumentParser.ts +42 -42
  43. package/src/executable/setup/FileRetriever.ts +19 -19
  44. package/src/executable/setup/PackageManager.ts +87 -87
  45. package/src/factories/ExpressionFactory.ts +216 -216
  46. package/src/factories/IdentifierFactory.ts +89 -89
  47. package/src/factories/JsonMetadataFactory.ts +76 -76
  48. package/src/factories/LiteralFactory.ts +52 -50
  49. package/src/factories/MetadataCollection.ts +278 -278
  50. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  51. package/src/factories/MetadataFactory.ts +404 -404
  52. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  53. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  54. package/src/factories/NumericRangeFactory.ts +72 -72
  55. package/src/factories/ProtobufFactory.ts +875 -875
  56. package/src/factories/StatementFactory.ts +90 -90
  57. package/src/factories/TemplateFactory.ts +64 -64
  58. package/src/factories/TypeFactory.ts +140 -140
  59. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  60. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  61. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  62. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  63. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  64. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  65. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  66. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  67. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  68. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  69. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  70. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  71. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  72. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  73. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  74. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  75. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -90
  76. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  77. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  78. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  79. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  80. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  81. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  82. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  83. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  84. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  85. package/src/functional.ts +750 -750
  86. package/src/http.ts +1047 -1047
  87. package/src/internal/_IProtobufWriter.ts +18 -18
  88. package/src/internal/_ProtobufReader.ts +194 -194
  89. package/src/internal/_ProtobufSizer.ts +145 -145
  90. package/src/internal/_ProtobufWriter.ts +145 -145
  91. package/src/internal/_accessExpressionAsString.ts +46 -46
  92. package/src/internal/_assertGuard.ts +13 -13
  93. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  94. package/src/internal/_httpFormDataReadArray.ts +4 -4
  95. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  96. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  97. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  98. package/src/internal/_httpFormDataReadFile.ts +10 -10
  99. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  100. package/src/internal/_httpFormDataReadString.ts +10 -10
  101. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  102. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  103. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  104. package/src/internal/_httpParameterReadBigint.ts +10 -10
  105. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  106. package/src/internal/_httpParameterReadNumber.ts +7 -7
  107. package/src/internal/_httpParameterReadString.ts +2 -2
  108. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  109. package/src/internal/_httpQueryReadArray.ts +4 -4
  110. package/src/internal/_httpQueryReadBigint.ts +12 -12
  111. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  112. package/src/internal/_httpQueryReadNumber.ts +9 -9
  113. package/src/internal/_httpQueryReadString.ts +4 -4
  114. package/src/internal/_isBetween.ts +2 -2
  115. package/src/internal/_isBigintString.ts +8 -8
  116. package/src/internal/_isFormatByte.ts +7 -7
  117. package/src/internal/_isFormatDate.ts +3 -3
  118. package/src/internal/_isFormatDateTime.ts +4 -4
  119. package/src/internal/_isFormatDuration.ts +4 -4
  120. package/src/internal/_isFormatEmail.ts +4 -4
  121. package/src/internal/_isFormatHostname.ts +4 -4
  122. package/src/internal/_isFormatIdnEmail.ts +4 -4
  123. package/src/internal/_isFormatIdnHostname.ts +4 -4
  124. package/src/internal/_isFormatIpv4.ts +4 -4
  125. package/src/internal/_isFormatIpv6.ts +4 -4
  126. package/src/internal/_isFormatIri.ts +3 -3
  127. package/src/internal/_isFormatIriReference.ts +4 -4
  128. package/src/internal/_isFormatJsonPointer.ts +3 -3
  129. package/src/internal/_isFormatPassword.ts +1 -1
  130. package/src/internal/_isFormatRegex.ts +8 -8
  131. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  132. package/src/internal/_isFormatTime.ts +4 -4
  133. package/src/internal/_isFormatUri.ts +6 -6
  134. package/src/internal/_isFormatUriReference.ts +5 -5
  135. package/src/internal/_isFormatUriTemplate.ts +4 -4
  136. package/src/internal/_isFormatUrl.ts +4 -4
  137. package/src/internal/_isFormatUuid.ts +3 -3
  138. package/src/internal/_isTypeFloat.ts +5 -5
  139. package/src/internal/_isTypeInt32.ts +5 -5
  140. package/src/internal/_isTypeInt64.ts +5 -5
  141. package/src/internal/_isTypeUint32.ts +5 -5
  142. package/src/internal/_isTypeUint64.ts +5 -5
  143. package/src/internal/_isUniqueItems.ts +159 -159
  144. package/src/internal/_jsonStringifyNumber.ts +12 -12
  145. package/src/internal/_jsonStringifyRest.ts +3 -3
  146. package/src/internal/_jsonStringifyString.ts +42 -42
  147. package/src/internal/_jsonStringifyTail.ts +2 -2
  148. package/src/internal/_llmApplicationFinalize.ts +20 -20
  149. package/src/internal/_miscCloneAny.ts +46 -46
  150. package/src/internal/_notationAny.ts +37 -37
  151. package/src/internal/_notationCamel.ts +13 -13
  152. package/src/internal/_notationPascal.ts +8 -8
  153. package/src/internal/_notationSnake.ts +43 -43
  154. package/src/internal/_randomArray.ts +21 -21
  155. package/src/internal/_randomBigint.ts +6 -6
  156. package/src/internal/_randomBoolean.ts +1 -1
  157. package/src/internal/_randomFormatByte.ts +3 -3
  158. package/src/internal/_randomFormatDate.ts +18 -18
  159. package/src/internal/_randomFormatDatetime.ts +16 -16
  160. package/src/internal/_randomFormatDuration.ts +27 -27
  161. package/src/internal/_randomFormatEmail.ts +11 -11
  162. package/src/internal/_randomFormatHostname.ts +6 -6
  163. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  164. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  165. package/src/internal/_randomFormatIpv4.ts +11 -11
  166. package/src/internal/_randomFormatIpv6.ts +11 -11
  167. package/src/internal/_randomFormatIri.ts +3 -3
  168. package/src/internal/_randomFormatIriReference.ts +3 -3
  169. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  170. package/src/internal/_randomFormatPassword.ts +8 -8
  171. package/src/internal/_randomFormatRegex.ts +4 -4
  172. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  173. package/src/internal/_randomFormatTime.ts +14 -14
  174. package/src/internal/_randomFormatUri.ts +3 -3
  175. package/src/internal/_randomFormatUriReference.ts +3 -3
  176. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  177. package/src/internal/_randomFormatUrl.ts +11 -11
  178. package/src/internal/_randomFormatUuid.ts +6 -6
  179. package/src/internal/_randomInteger.ts +47 -47
  180. package/src/internal/_randomNumber.ts +74 -74
  181. package/src/internal/_randomPattern.ts +10 -10
  182. package/src/internal/_randomPick.ts +9 -9
  183. package/src/internal/_randomString.ts +24 -24
  184. package/src/internal/_throwTypeGuardError.ts +5 -5
  185. package/src/internal/_validateReport.ts +13 -13
  186. package/src/internal/private/__notationCapitalize.ts +2 -2
  187. package/src/internal/private/__notationUnsnake.ts +24 -24
  188. package/src/json.ts +752 -752
  189. package/src/llm.ts +481 -342
  190. package/src/misc.ts +658 -658
  191. package/src/module.ts +937 -935
  192. package/src/notations.ts +827 -827
  193. package/src/programmers/AssertProgrammer.ts +454 -454
  194. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  195. package/src/programmers/FeatureProgrammer.ts +622 -622
  196. package/src/programmers/ImportProgrammer.ts +185 -185
  197. package/src/programmers/IsProgrammer.ts +273 -273
  198. package/src/programmers/RandomProgrammer.ts +1190 -1190
  199. package/src/programmers/TypiaProgrammer.ts +174 -174
  200. package/src/programmers/ValidateProgrammer.ts +434 -434
  201. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  202. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  203. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  204. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  205. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  206. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  207. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  208. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  209. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  210. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  211. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  212. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  213. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  214. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  215. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  216. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  217. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  218. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  219. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  220. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  221. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  222. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  223. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  224. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  225. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  226. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  227. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  228. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  229. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  230. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  231. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  232. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  233. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  234. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  235. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  236. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  237. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  238. package/src/programmers/internal/check_array_length.ts +47 -47
  239. package/src/programmers/internal/check_bigint.ts +50 -50
  240. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  241. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  242. package/src/programmers/internal/check_everything.ts +23 -23
  243. package/src/programmers/internal/check_native.ts +27 -27
  244. package/src/programmers/internal/check_number.ts +112 -112
  245. package/src/programmers/internal/check_object.ts +75 -75
  246. package/src/programmers/internal/check_string.ts +50 -50
  247. package/src/programmers/internal/check_template.ts +48 -48
  248. package/src/programmers/internal/check_union_array_like.ts +335 -335
  249. package/src/programmers/internal/decode_union_object.ts +116 -116
  250. package/src/programmers/internal/feature_object_entries.ts +61 -61
  251. package/src/programmers/internal/json_schema_alias.ts +47 -47
  252. package/src/programmers/internal/json_schema_array.ts +45 -45
  253. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  254. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  255. package/src/programmers/internal/json_schema_constant.ts +26 -26
  256. package/src/programmers/internal/json_schema_description.ts +12 -12
  257. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  258. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  259. package/src/programmers/internal/json_schema_native.ts +33 -33
  260. package/src/programmers/internal/json_schema_number.ts +15 -15
  261. package/src/programmers/internal/json_schema_object.ts +158 -158
  262. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  263. package/src/programmers/internal/json_schema_station.ts +182 -182
  264. package/src/programmers/internal/json_schema_string.ts +15 -15
  265. package/src/programmers/internal/json_schema_template.ts +55 -55
  266. package/src/programmers/internal/json_schema_title.ts +20 -20
  267. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  268. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  269. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  270. package/src/programmers/internal/prune_object_properties.ts +71 -71
  271. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  272. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  273. package/src/programmers/internal/template_to_pattern.ts +23 -23
  274. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  275. package/src/programmers/json/JsonApplicationProgrammer.ts +276 -276
  276. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  277. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  278. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  279. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  280. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  281. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  282. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  283. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  284. package/src/programmers/llm/LlmApplicationOfValidateProgrammer.ts +81 -0
  285. package/src/programmers/llm/LlmApplicationProgrammer.ts +276 -276
  286. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  287. package/src/programmers/llm/LlmParametersProgrammer.ts +90 -90
  288. package/src/programmers/llm/LlmSchemaProgrammer.ts +143 -143
  289. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  290. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  291. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  292. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  293. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  294. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  295. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  296. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  297. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  298. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  299. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  300. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  301. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  302. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  303. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  304. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  305. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  306. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  307. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  308. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  309. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  310. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  311. package/src/protobuf.ts +868 -868
  312. package/src/reflect.ts +57 -57
  313. package/src/schemas/json/IJsonApplication.ts +73 -73
  314. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  315. package/src/schemas/json/__IJsonApplication.ts +63 -63
  316. package/src/schemas/llm/ILlmApplicationOfValidate.ts +55 -0
  317. package/src/schemas/llm/ILlmFunctionOfValidate.ts +39 -0
  318. package/src/schemas/metadata/IMetadata.ts +35 -35
  319. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  320. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  321. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  322. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  323. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  324. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  325. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  326. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  327. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  328. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  329. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  330. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  331. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  332. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  333. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  334. package/src/schemas/metadata/Metadata.ts +669 -669
  335. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  336. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  337. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  338. package/src/schemas/metadata/MetadataArray.ts +49 -49
  339. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  340. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  341. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  342. package/src/schemas/metadata/MetadataMap.ts +48 -48
  343. package/src/schemas/metadata/MetadataNative.ts +44 -44
  344. package/src/schemas/metadata/MetadataObject.ts +48 -48
  345. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  346. package/src/schemas/metadata/MetadataParameter.ts +4 -0
  347. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  348. package/src/schemas/metadata/MetadataSet.ts +45 -45
  349. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  350. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  351. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  352. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  353. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  354. package/src/tags/Example.ts +24 -24
  355. package/src/tags/Examples.ts +16 -16
  356. package/src/tags/Format.ts +50 -50
  357. package/src/tags/JsonSchemaPlugin.ts +8 -8
  358. package/src/tags/Sequence.ts +10 -10
  359. package/src/tags/TagBase.ts +82 -82
  360. package/src/tags/Type.ts +32 -32
  361. package/src/tags/UniqueItems.ts +14 -14
  362. package/src/tags/index.ts +21 -21
  363. package/src/transform.ts +35 -35
  364. package/src/transformers/CallExpressionTransformer.ts +547 -545
  365. package/src/transformers/FileTransformer.ts +136 -136
  366. package/src/transformers/IProgrammerProps.ts +11 -11
  367. package/src/transformers/ITransformOptions.ts +62 -62
  368. package/src/transformers/ITransformProps.ts +9 -9
  369. package/src/transformers/ITypiaContext.ts +18 -18
  370. package/src/transformers/ImportTransformer.ts +81 -81
  371. package/src/transformers/NodeTransformer.ts +17 -17
  372. package/src/transformers/TransformerError.ts +60 -60
  373. package/src/transformers/features/AssertTransformer.ts +24 -24
  374. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  375. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  376. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  377. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  378. package/src/transformers/features/IsTransformer.ts +18 -18
  379. package/src/transformers/features/RandomTransformer.ts +41 -41
  380. package/src/transformers/features/ValidateTransformer.ts +18 -18
  381. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  382. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  383. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  384. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  385. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  386. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  387. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  388. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  389. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  390. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  391. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  392. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  393. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  394. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  395. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  396. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  397. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  398. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  399. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  400. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  401. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  402. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  403. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  404. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  405. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  406. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  407. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  408. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  409. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  410. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  411. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  412. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  413. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  414. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  415. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  416. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  417. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  418. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  419. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  420. package/src/transformers/features/json/JsonSchemasTransformer.ts +143 -143
  421. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  422. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  423. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  424. package/src/transformers/features/llm/LlmApplicationOfValidateTransformer.ts +115 -0
  425. package/src/transformers/features/llm/LlmApplicationTransformer.ts +113 -113
  426. package/src/transformers/features/llm/LlmParametersTransformer.ts +89 -89
  427. package/src/transformers/features/llm/LlmSchemaTransformer.ts +130 -130
  428. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  429. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  430. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  431. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  432. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  433. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  434. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  435. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  436. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  437. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  438. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  439. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  440. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  441. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  442. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  443. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  444. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  445. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  446. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  447. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  448. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  449. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  450. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  451. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  452. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  453. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  454. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  455. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  456. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  457. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  458. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  459. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  460. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  461. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  462. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  463. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  464. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  465. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  466. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  467. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  468. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  469. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  470. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  471. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  472. package/src/transformers/internal/GenericTransformer.ts +101 -101
  473. package/src/utils/MapUtil.ts +14 -14
  474. package/src/utils/NamingConvention.ts +94 -94
  475. package/src/utils/ProtobufNameEncoder.ts +32 -32
  476. package/src/utils/StringUtil.ts +16 -16
package/src/misc.ts CHANGED
@@ -1,658 +1,658 @@
1
- /* ===========================================================
2
- MISCELLAENOUS
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.ISucess} 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.ISucess} 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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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
+ MISCELLAENOUS
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.ISucess} 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.ISucess} 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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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 resuable {@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
+ }