typia 7.4.2 → 7.5.0-dev.20241218

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 (445) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +148 -148
  3. package/lib/executable/typia.js +0 -0
  4. package/package.json +3 -3
  5. package/src/IRandomGenerator.ts +49 -49
  6. package/src/IReadableURLSearchParams.ts +9 -9
  7. package/src/IValidation.ts +21 -21
  8. package/src/executable/TypiaGenerateWizard.ts +83 -83
  9. package/src/executable/TypiaPatchWizard.ts +45 -45
  10. package/src/executable/TypiaSetupWizard.ts +179 -179
  11. package/src/executable/setup/ArgumentParser.ts +42 -42
  12. package/src/executable/setup/FileRetriever.ts +19 -19
  13. package/src/executable/setup/PackageManager.ts +87 -87
  14. package/src/factories/ExpressionFactory.ts +216 -216
  15. package/src/factories/IdentifierFactory.ts +89 -89
  16. package/src/factories/JsonMetadataFactory.ts +83 -83
  17. package/src/factories/LiteralFactory.ts +52 -52
  18. package/src/factories/MetadataCollection.ts +278 -278
  19. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  20. package/src/factories/MetadataFactory.ts +404 -404
  21. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  22. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  23. package/src/factories/NumericRangeFactory.ts +72 -72
  24. package/src/factories/ProtobufFactory.ts +875 -875
  25. package/src/factories/StatementFactory.ts +90 -90
  26. package/src/factories/TemplateFactory.ts +64 -64
  27. package/src/factories/TypeFactory.ts +140 -140
  28. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  29. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  30. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  31. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  32. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  33. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  34. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  35. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  36. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  37. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  38. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  39. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  40. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  41. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  42. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  43. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  44. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  45. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  46. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  47. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  48. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  49. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  50. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  51. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  52. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  53. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  54. package/src/functional.ts +750 -750
  55. package/src/http.ts +1047 -1047
  56. package/src/internal/_IProtobufWriter.ts +18 -18
  57. package/src/internal/_ProtobufReader.ts +194 -194
  58. package/src/internal/_ProtobufSizer.ts +145 -145
  59. package/src/internal/_ProtobufWriter.ts +145 -145
  60. package/src/internal/_accessExpressionAsString.ts +46 -46
  61. package/src/internal/_assertGuard.ts +13 -13
  62. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  63. package/src/internal/_httpFormDataReadArray.ts +4 -4
  64. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  65. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  66. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  67. package/src/internal/_httpFormDataReadFile.ts +10 -10
  68. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  69. package/src/internal/_httpFormDataReadString.ts +10 -10
  70. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  71. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  72. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  73. package/src/internal/_httpParameterReadBigint.ts +10 -10
  74. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  75. package/src/internal/_httpParameterReadNumber.ts +7 -7
  76. package/src/internal/_httpParameterReadString.ts +2 -2
  77. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  78. package/src/internal/_httpQueryReadArray.ts +4 -4
  79. package/src/internal/_httpQueryReadBigint.ts +12 -12
  80. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  81. package/src/internal/_httpQueryReadNumber.ts +9 -9
  82. package/src/internal/_httpQueryReadString.ts +4 -4
  83. package/src/internal/_isBetween.ts +2 -2
  84. package/src/internal/_isBigintString.ts +8 -8
  85. package/src/internal/_isFormatByte.ts +7 -7
  86. package/src/internal/_isFormatDate.ts +3 -3
  87. package/src/internal/_isFormatDateTime.ts +4 -4
  88. package/src/internal/_isFormatDuration.ts +4 -4
  89. package/src/internal/_isFormatEmail.ts +4 -4
  90. package/src/internal/_isFormatHostname.ts +4 -4
  91. package/src/internal/_isFormatIdnEmail.ts +4 -4
  92. package/src/internal/_isFormatIdnHostname.ts +4 -4
  93. package/src/internal/_isFormatIpv4.ts +4 -4
  94. package/src/internal/_isFormatIpv6.ts +4 -4
  95. package/src/internal/_isFormatIri.ts +3 -3
  96. package/src/internal/_isFormatIriReference.ts +4 -4
  97. package/src/internal/_isFormatJsonPointer.ts +3 -3
  98. package/src/internal/_isFormatPassword.ts +1 -1
  99. package/src/internal/_isFormatRegex.ts +8 -8
  100. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  101. package/src/internal/_isFormatTime.ts +4 -4
  102. package/src/internal/_isFormatUri.ts +6 -6
  103. package/src/internal/_isFormatUriReference.ts +5 -5
  104. package/src/internal/_isFormatUriTemplate.ts +4 -4
  105. package/src/internal/_isFormatUrl.ts +4 -4
  106. package/src/internal/_isFormatUuid.ts +3 -3
  107. package/src/internal/_isTypeFloat.ts +5 -5
  108. package/src/internal/_isTypeInt32.ts +5 -5
  109. package/src/internal/_isTypeInt64.ts +5 -5
  110. package/src/internal/_isTypeUint32.ts +5 -5
  111. package/src/internal/_isTypeUint64.ts +5 -5
  112. package/src/internal/_isUniqueItems.ts +159 -159
  113. package/src/internal/_jsonStringifyNumber.ts +12 -12
  114. package/src/internal/_jsonStringifyRest.ts +3 -3
  115. package/src/internal/_jsonStringifyString.ts +42 -42
  116. package/src/internal/_jsonStringifyTail.ts +2 -2
  117. package/src/internal/_llmApplicationFinalize.ts +20 -20
  118. package/src/internal/_miscCloneAny.ts +46 -46
  119. package/src/internal/_notationAny.ts +37 -37
  120. package/src/internal/_notationCamel.ts +13 -13
  121. package/src/internal/_notationPascal.ts +8 -8
  122. package/src/internal/_notationSnake.ts +43 -43
  123. package/src/internal/_randomArray.ts +21 -21
  124. package/src/internal/_randomBigint.ts +6 -6
  125. package/src/internal/_randomBoolean.ts +1 -1
  126. package/src/internal/_randomFormatByte.ts +3 -3
  127. package/src/internal/_randomFormatDate.ts +18 -18
  128. package/src/internal/_randomFormatDatetime.ts +16 -16
  129. package/src/internal/_randomFormatDuration.ts +27 -27
  130. package/src/internal/_randomFormatEmail.ts +11 -11
  131. package/src/internal/_randomFormatHostname.ts +6 -6
  132. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  133. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  134. package/src/internal/_randomFormatIpv4.ts +11 -11
  135. package/src/internal/_randomFormatIpv6.ts +11 -11
  136. package/src/internal/_randomFormatIri.ts +3 -3
  137. package/src/internal/_randomFormatIriReference.ts +3 -3
  138. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  139. package/src/internal/_randomFormatPassword.ts +8 -8
  140. package/src/internal/_randomFormatRegex.ts +4 -4
  141. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  142. package/src/internal/_randomFormatTime.ts +14 -14
  143. package/src/internal/_randomFormatUri.ts +3 -3
  144. package/src/internal/_randomFormatUriReference.ts +3 -3
  145. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  146. package/src/internal/_randomFormatUrl.ts +11 -11
  147. package/src/internal/_randomFormatUuid.ts +6 -6
  148. package/src/internal/_randomInteger.ts +47 -47
  149. package/src/internal/_randomNumber.ts +74 -74
  150. package/src/internal/_randomPattern.ts +10 -10
  151. package/src/internal/_randomPick.ts +9 -9
  152. package/src/internal/_randomString.ts +24 -24
  153. package/src/internal/_throwTypeGuardError.ts +5 -5
  154. package/src/internal/_validateReport.ts +13 -13
  155. package/src/internal/private/__notationCapitalize.ts +2 -2
  156. package/src/internal/private/__notationUnsnake.ts +24 -24
  157. package/src/json.ts +752 -752
  158. package/src/llm.ts +481 -481
  159. package/src/misc.ts +658 -658
  160. package/src/module.ts +937 -937
  161. package/src/notations.ts +827 -827
  162. package/src/programmers/AssertProgrammer.ts +454 -454
  163. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  164. package/src/programmers/FeatureProgrammer.ts +622 -622
  165. package/src/programmers/ImportProgrammer.ts +185 -185
  166. package/src/programmers/IsProgrammer.ts +273 -273
  167. package/src/programmers/RandomProgrammer.ts +1190 -1190
  168. package/src/programmers/TypiaProgrammer.ts +174 -174
  169. package/src/programmers/ValidateProgrammer.ts +439 -439
  170. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  171. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  172. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  173. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  174. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  175. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  176. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  177. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  178. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  179. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  180. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  181. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  182. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  183. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  184. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  185. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  186. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  187. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  188. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  189. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  190. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  191. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  192. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  193. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  194. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  195. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  196. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  197. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  198. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  199. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  200. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  201. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  202. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  203. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  204. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  205. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  206. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  207. package/src/programmers/internal/check_array_length.ts +47 -47
  208. package/src/programmers/internal/check_bigint.ts +50 -50
  209. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  210. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  211. package/src/programmers/internal/check_everything.ts +23 -23
  212. package/src/programmers/internal/check_native.ts +27 -27
  213. package/src/programmers/internal/check_number.ts +112 -112
  214. package/src/programmers/internal/check_object.ts +75 -75
  215. package/src/programmers/internal/check_string.ts +50 -50
  216. package/src/programmers/internal/check_template.ts +48 -48
  217. package/src/programmers/internal/check_union_array_like.ts +335 -335
  218. package/src/programmers/internal/decode_union_object.ts +116 -116
  219. package/src/programmers/internal/feature_object_entries.ts +61 -61
  220. package/src/programmers/internal/json_schema_alias.ts +47 -47
  221. package/src/programmers/internal/json_schema_array.ts +45 -45
  222. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  223. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  224. package/src/programmers/internal/json_schema_constant.ts +26 -26
  225. package/src/programmers/internal/json_schema_description.ts +12 -12
  226. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  227. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  228. package/src/programmers/internal/json_schema_native.ts +33 -33
  229. package/src/programmers/internal/json_schema_number.ts +15 -15
  230. package/src/programmers/internal/json_schema_object.ts +158 -158
  231. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  232. package/src/programmers/internal/json_schema_station.ts +182 -182
  233. package/src/programmers/internal/json_schema_string.ts +15 -15
  234. package/src/programmers/internal/json_schema_template.ts +55 -55
  235. package/src/programmers/internal/json_schema_title.ts +20 -20
  236. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  237. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  238. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  239. package/src/programmers/internal/prune_object_properties.ts +71 -71
  240. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  241. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  242. package/src/programmers/internal/template_to_pattern.ts +23 -23
  243. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  244. package/src/programmers/json/JsonApplicationProgrammer.ts +279 -279
  245. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  246. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  247. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  248. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  249. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  250. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  251. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  252. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  253. package/src/programmers/llm/LlmApplicationOfValidateProgrammer.ts +90 -90
  254. package/src/programmers/llm/LlmApplicationProgrammer.ts +280 -280
  255. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  256. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  257. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  258. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  259. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  260. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  261. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  262. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  263. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  264. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  265. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  266. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  267. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  268. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  269. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  270. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  271. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  272. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  273. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  274. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  275. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  276. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  277. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  278. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  279. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  280. package/src/protobuf.ts +868 -868
  281. package/src/reflect.ts +57 -57
  282. package/src/schemas/json/IJsonApplication.ts +73 -73
  283. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  284. package/src/schemas/json/__IJsonApplication.ts +63 -63
  285. package/src/schemas/llm/ILlmApplicationOfValidate.ts +55 -55
  286. package/src/schemas/llm/ILlmFunctionOfValidate.ts +39 -39
  287. package/src/schemas/metadata/IMetadata.ts +35 -35
  288. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  289. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  290. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  291. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  292. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  293. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  294. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  295. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  296. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  297. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  298. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  299. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  300. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  301. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  302. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  303. package/src/schemas/metadata/Metadata.ts +669 -669
  304. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  305. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  306. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  307. package/src/schemas/metadata/MetadataArray.ts +49 -49
  308. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  309. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  310. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  311. package/src/schemas/metadata/MetadataMap.ts +48 -48
  312. package/src/schemas/metadata/MetadataNative.ts +44 -44
  313. package/src/schemas/metadata/MetadataObject.ts +48 -48
  314. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  315. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  316. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  317. package/src/schemas/metadata/MetadataSet.ts +45 -45
  318. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  319. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  320. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  321. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  322. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  323. package/src/tags/Example.ts +24 -24
  324. package/src/tags/Examples.ts +16 -16
  325. package/src/tags/Format.ts +50 -50
  326. package/src/tags/JsonSchemaPlugin.ts +8 -8
  327. package/src/tags/Sequence.ts +10 -10
  328. package/src/tags/TagBase.ts +82 -82
  329. package/src/tags/Type.ts +32 -32
  330. package/src/tags/UniqueItems.ts +14 -14
  331. package/src/tags/index.ts +21 -21
  332. package/src/transform.ts +35 -35
  333. package/src/transformers/CallExpressionTransformer.ts +547 -547
  334. package/src/transformers/FileTransformer.ts +136 -136
  335. package/src/transformers/IProgrammerProps.ts +11 -11
  336. package/src/transformers/ITransformOptions.ts +62 -62
  337. package/src/transformers/ITransformProps.ts +9 -9
  338. package/src/transformers/ITypiaContext.ts +18 -18
  339. package/src/transformers/ImportTransformer.ts +81 -81
  340. package/src/transformers/NodeTransformer.ts +17 -17
  341. package/src/transformers/TransformerError.ts +60 -60
  342. package/src/transformers/features/AssertTransformer.ts +24 -24
  343. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  344. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  345. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  346. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  347. package/src/transformers/features/IsTransformer.ts +18 -18
  348. package/src/transformers/features/RandomTransformer.ts +41 -41
  349. package/src/transformers/features/ValidateTransformer.ts +18 -18
  350. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  351. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  352. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  353. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  354. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  355. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  356. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  357. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  358. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  359. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  360. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  361. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  362. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  363. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  364. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  365. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  366. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  367. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  368. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  369. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  370. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  371. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  372. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  373. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  374. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  375. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  376. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  377. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  378. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  379. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  380. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  381. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  382. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  383. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  384. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  385. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  386. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  387. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  388. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  389. package/src/transformers/features/json/JsonSchemasTransformer.ts +143 -143
  390. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  391. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  392. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  393. package/src/transformers/features/llm/LlmApplicationOfValidateTransformer.ts +121 -121
  394. package/src/transformers/features/llm/LlmApplicationTransformer.ts +118 -118
  395. package/src/transformers/features/llm/LlmParametersTransformer.ts +94 -94
  396. package/src/transformers/features/llm/LlmSchemaTransformer.ts +135 -135
  397. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  398. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  399. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  400. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  401. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  402. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  403. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  404. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  405. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  406. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  407. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  408. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  409. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  410. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  411. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  412. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  413. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  414. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  415. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  416. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  417. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  418. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  419. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  420. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  421. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  422. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  423. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  424. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  425. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  426. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  427. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  428. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  429. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  430. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  431. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  432. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  433. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  434. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  435. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  436. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  437. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  438. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  439. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  440. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  441. package/src/transformers/internal/GenericTransformer.ts +101 -101
  442. package/src/utils/MapUtil.ts +14 -14
  443. package/src/utils/NamingConvention.ts +94 -94
  444. package/src/utils/ProtobufNameEncoder.ts +32 -32
  445. package/src/utils/StringUtil.ts +16 -16
package/src/module.ts CHANGED
@@ -1,937 +1,937 @@
1
- import { AssertionGuard } from "./AssertionGuard";
2
- import { IRandomGenerator } from "./IRandomGenerator";
3
- import { IValidation } from "./IValidation";
4
- import { Resolved } from "./Resolved";
5
- import { TypeGuardError } from "./TypeGuardError";
6
-
7
- export * as functional from "./functional";
8
- export * as http from "./http";
9
- export * as llm from "./llm";
10
- export * as json from "./json";
11
- export * as misc from "./misc";
12
- export * as notations from "./notations";
13
- export * as protobuf from "./protobuf";
14
- export * as reflect from "./reflect";
15
- export * as tags from "./tags";
16
-
17
- export * from "./schemas/metadata/IJsDocTagInfo";
18
- export * from "./schemas/json/IJsonApplication";
19
- export * from "./schemas/json/IJsonSchemaCollection";
20
- export * from "./schemas/llm/ILlmApplicationOfValidate";
21
- export * from "./schemas/llm/ILlmFunctionOfValidate";
22
- export * from "./AssertionGuard";
23
- export * from "./IRandomGenerator";
24
- export * from "./IValidation";
25
- export * from "./TypeGuardError";
26
-
27
- export * from "./Primitive";
28
- export * from "./Resolved";
29
- export * from "./CamelCase";
30
- export * from "./PascalCase";
31
- export * from "./SnakeCase";
32
- export * from "./IReadableURLSearchParams";
33
-
34
- /* -----------------------------------------------------------
35
- BASIC VALIDATORS
36
- ----------------------------------------------------------- */
37
- /**
38
- * Asserts a value type.
39
- *
40
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
41
- * reason, if the parametric value is not following the type `T`. Otherwise, the
42
- * value is following the type `T`, just input parameter would be returned.
43
- *
44
- * If what you want is not asserting but just knowing whether the parametric value is
45
- * following the type `T` or not, you can choose the {@link is} function instead.
46
- * Otherwise you want to know all the errors, {@link validate} is the way to go.
47
- * Also, if you want to automatically cast the parametric value to the type `T`
48
- * when no problem (perform the assertion guard of type).
49
- *
50
- * On the other and, if you don't want to allow any superfluous property that is not
51
- * enrolled to the type `T`, you can use {@link assertEquals} function instead.
52
- *
53
- * @template T Type of the input value
54
- * @param input A value to be asserted
55
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
56
- * @returns Parametric input value
57
- * @throws A {@link TypeGuardError} instance with detailed reason
58
- *
59
- * @author Jeongho Nam - https://github.com/samchon
60
- */
61
- export function assert<T>(
62
- input: T,
63
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
64
- ): T;
65
-
66
- /**
67
- * Asserts a value type.
68
- *
69
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
70
- * reason, if the parametric value is not following the type `T`. Otherwise, the
71
- * value is following the type `T`, just input parameter would be returned.
72
- *
73
- * If what you want is not asserting but just knowing whether the parametric value is
74
- * following the type `T` or not, you can choose the {@link is} function instead.
75
- * Otherwise, you want to know all the errors, {@link validate} is the way to go.
76
- *
77
- * On the other and, if you don't want to allow any superfluous property that is not
78
- * enrolled to the type `T`, you can use {@link assertEquals} function instead.
79
- *
80
- * @template T Type of the input value
81
- * @param input A value to be asserted
82
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
83
- * @returns Parametric input value casted as `T`
84
- * @throws A {@link TypeGuardError} instance with detailed reason
85
- *
86
- * @author Jeongho Nam - https://github.com/samchon
87
- */
88
- export function assert<T>(
89
- input: unknown,
90
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
91
- ): T;
92
-
93
- /**
94
- * @internal
95
- */
96
- export function assert(): never {
97
- halt("assert");
98
- }
99
-
100
- /**
101
- * Assertion guard of a value type.
102
- *
103
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
104
- * reason, if the parametric value is not following the type `T`. Otherwise, the
105
- * value is following the type `T`, nothing would be returned, but the input value
106
- * would be automatically casted to the type `T`. This is the concept of
107
- * "Assertion Guard" of a value type.
108
- *
109
- * If what you want is not asserting but just knowing whether the parametric value is
110
- * following the type `T` or not, you can choose the {@link is} function instead.
111
- * Otherwise you want to know all the errors, {@link validate} is the way to go.
112
- * Also, if you want to returns the parametric value when no problem, you can use
113
- * {@link assert} function instead.
114
- *
115
- * On the other and, if you don't want to allow any superfluous property that is not
116
- * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
117
- *
118
- * @template T Type of the input value
119
- * @param input A value to be asserted
120
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
121
- * @throws A {@link TypeGuardError} instance with detailed reason
122
- *
123
- * @author Jeongho Nam - https://github.com/samchon
124
- */
125
- export function assertGuard<T>(
126
- input: T,
127
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
128
- ): asserts input is T;
129
-
130
- /**
131
- * Assertion guard of a value type.
132
- *
133
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
134
- * reason, if the parametric value is not following the type `T`. Otherwise, the
135
- * value is following the type `T`, nothing would be returned, but the input value
136
- * would be automatically casted to the type `T`. This is the concept of
137
- * "Assertion Guard" of a value type.
138
- *
139
- * If what you want is not asserting but just knowing whether the parametric value is
140
- * following the type `T` or not, you can choose the {@link is} function instead.
141
- * Otherwise you want to know all the errors, {@link validate} is the way to go.
142
- * Also, if you want to returns the parametric value when no problem, you can use
143
- * {@link assert} function instead.
144
- *
145
- * On the other and, if you don't want to allow any superfluous property that is not
146
- * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
147
- *
148
- * @template T Type of the input value
149
- * @param input A value to be asserted
150
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
151
- * @throws A {@link TypeGuardError} instance with detailed reason
152
- *
153
- * @author Jeongho Nam - https://github.com/samchon
154
- */
155
- export function assertGuard<T>(
156
- input: unknown,
157
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
158
- ): asserts input is T;
159
-
160
- /**
161
- * @internal
162
- */
163
- export function assertGuard(): never {
164
- halt("assertGuard");
165
- }
166
-
167
- /**
168
- * Tests a value type.
169
- *
170
- * Tests a parametric value type and returns whether it's following the type `T` or not.
171
- * If the parametric value is matched with the type `T`, `true` value would be returned.
172
- * Otherwise, the parametric value is not following the type `T`, `false` value would be
173
- * returned.
174
- *
175
- * If what you want is not just knowing whether the parametric value is following the
176
- * type `T` or not, but throwing an exception with detailed reason, you can choose
177
- * {@link assert} function instead. Also, if you want to know all the errors with
178
- * detailed reasons, {@link validate} function would be useful.
179
- *
180
- * On the other and, if you don't want to allow any superfluous property that is not
181
- * enrolled to the type `T`, you can use {@link equals} function instead.
182
- *
183
- * @template T Type of the input value
184
- * @param input A value to be tested
185
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
186
- * @returns Whether the parametric value is following the type `T` or not
187
- *
188
- * @author Jeongho Nam - https://github.com/samchon
189
- */
190
- export function is<T>(input: T): input is T;
191
-
192
- /**
193
- * Tests a value type.
194
- *
195
- * Tests a parametric value type and returns whether it's following the type `T` or not.
196
- * If the parametric value is matched with the type `T`, `true` value would be returned.
197
- * Otherwise, the parametric value is not following the type `T`, `false` value would be
198
- * returned.
199
- *
200
- * If what you want is not just knowing whether the parametric value is following the
201
- * type `T` or not, but throwing an exception with detailed reason, you can choose
202
- * {@link assert} function instead. Also, if you want to know all the errors with
203
- * detailed reasons, {@link validate} function would be useful.
204
- *
205
- * On the other and, if you don't want to allow any superfluous property that is not
206
- * enrolled to the type `T`, you can use {@link equals} function instead.
207
- *
208
- * @template T Type of the input value
209
- * @param input A value to be tested
210
- * @returns Whether the parametric value is following the type `T` or not
211
- *
212
- * @author Jeongho Nam - https://github.com/samchon
213
- */
214
- export function is<T>(input: unknown): input is T;
215
-
216
- /**
217
- * @internal
218
- */
219
- export function is(): never {
220
- halt("is");
221
- }
222
-
223
- /**
224
- * Validates a value type.
225
- *
226
- * Validates a parametric value type and archives all the type errors into an
227
- * {@link IValidation.errors} array, if the parametric value is not following the
228
- * type `T`. Of course, if the parametric value is following the type `T`, the
229
- * {@link IValidation.errors} array would be empty and {@link IValidation.success}
230
- * would have the `true` value.
231
- *
232
- * If what you want is not finding all the error, but asserting the parametric value
233
- * type with exception throwing, you can choose {@link assert} function instead.
234
- * Otherwise, you just want to know whether the parametric value is matched with the
235
- * type `T`, {@link is} function is the way to go.
236
- *
237
- * On the other and, if you don't want to allow any superfluous property that is not
238
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
239
- *
240
- * @template Type of the input value
241
- * @param input A value to be validated
242
- * @returns Validation result
243
- *
244
- * @author Jeongho Nam - https://github.com/samchon
245
- */
246
- export function validate<T>(input: T): IValidation<T>;
247
-
248
- /**
249
- * Validates a value type.
250
- *
251
- * Validates a parametric value type and archives all the type errors into an
252
- * {@link IValidation.errors} array, if the parametric value is not following the
253
- * type `T`. Of course, if the parametric value is following the type `T`, the
254
- * {@link IValidation.errors} array would be empty and {@link IValidation.success}
255
- * would have the `true` value.
256
- *
257
- * If what you want is not finding all the error, but asserting the parametric value
258
- * type with exception throwing, you can choose {@link assert} function instead.
259
- * Otherwise, you just want to know whether the parametric value is matched with the
260
- * type `T`, {@link is} function is the way to go.
261
- *
262
- * On the other and, if you don't want to allow any superfluous property that is not
263
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
264
- *
265
- * @template Type of the input value
266
- * @param input A value to be validated
267
- * @returns Validation result
268
- *
269
- * @author Jeongho Nam - https://github.com/samchon
270
- */
271
- export function validate<T>(input: unknown): IValidation<T>;
272
-
273
- /**
274
- * @internal
275
- */
276
- export function validate(): never {
277
- halt("validate");
278
- }
279
-
280
- /* -----------------------------------------------------------
281
- STRICT VALIDATORS
282
- ----------------------------------------------------------- */
283
- /**
284
- * Asserts equality between a value and its type.
285
- *
286
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
287
- * reason, if the parametric value is not following the type `T` or some superfluous
288
- * property that is not listed on the type `T` has been found. Otherwise, the value is
289
- * following the type `T` without any superfluous property, just input parameter would
290
- * be returned.
291
- *
292
- * If what you want is not asserting but just knowing whether the parametric value is
293
- * following the type `T` or not, you can choose the {@link equals} function instead.
294
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
295
- *
296
- * On the other hand, if you want to allow superfluous property that is not enrolled
297
- * to the type `T`, you can use {@link assert} function instead.
298
- *
299
- * @template T Type of the input value
300
- * @param input A value to be asserted
301
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
302
- * @returns Parametric input value
303
- * @throws A {@link TypeGuardError} instance with detailed reason
304
- *
305
- * @author Jeongho Nam - https://github.com/samchon
306
- */
307
- export function assertEquals<T>(
308
- input: T,
309
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
310
- ): T;
311
-
312
- /**
313
- * Asserts equality between a value and its type.
314
- *
315
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
316
- * reason, if the parametric value is not following the type `T` or some superfluous
317
- * property that is not listed on the type `T` has been found. Otherwise, the value is
318
- * following the type `T` without any superfluous property, just input parameter would
319
- * be returned.
320
- *
321
- * If what you want is not asserting but just knowing whether the parametric value is
322
- * following the type `T` or not, you can choose the {@link equals} function instead.
323
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
324
- *
325
- * On the other hand, if you want to allow superfluous property that is not enrolled
326
- * to the type `T`, you can use {@link assert} function instead.
327
- *
328
- * @template T Type of the input value
329
- * @param input A value to be asserted
330
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
331
- * @returns Parametric input value casted as `T`
332
- * @throws A {@link TypeGuardError} instance with detailed reason
333
- *
334
- * @author Jeongho Nam - https://github.com/samchon
335
- */
336
- export function assertEquals<T>(
337
- input: unknown,
338
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
339
- ): T;
340
-
341
- /**
342
- * @internal
343
- */
344
- export function assertEquals(): never {
345
- halt("assertEquals");
346
- }
347
-
348
- /**
349
- * Assertion guard of a type with equality.
350
- *
351
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
352
- * reason, if the parametric value is not following the type `T` or some superfluous
353
- * property that is not listed on the type `T` has been found.
354
- *
355
- * Otherwise, the value is following the type `T` without any superfluous property,
356
- * nothing would be returned, but the input value would be automatically casted to
357
- * the type `T`. This is the concept of "Assertion Guard" of a value type.
358
- *
359
- * If what you want is not asserting but just knowing whether the parametric value is
360
- * following the type `T` or not, you can choose the {@link equals} function instead.
361
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
362
- * Also, if you want to returns the parametric value when no problem, you can use
363
- * {@link assert} function instead.
364
- *
365
- * On the other hand, if you want to allow superfluous property that is not enrolled
366
- * to the type `T`, you can use {@link assertEquals} function instead.
367
- *
368
- * @template T Type of the input value
369
- * @param input A value to be asserted
370
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
371
- * @returns Parametric input value casted as `T`
372
- * @throws A {@link TypeGuardError} instance with detailed reason
373
- *
374
- * @author Jeongho Nam - https://github.com/samchon
375
- */
376
- export function assertGuardEquals<T>(
377
- input: T,
378
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
379
- ): asserts input is T;
380
-
381
- /**
382
- * Assertion guard of a type with equality.
383
- *
384
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
385
- * reason, if the parametric value is not following the type `T` or some superfluous
386
- * property that is not listed on the type `T` has been found.
387
- *
388
- * Otherwise, the value is following the type `T` without any superfluous property,
389
- * nothing would be returned, but the input value would be automatically casted to
390
- * the type `T`. This is the concept of "Assertion Guard" of a value type.
391
- *
392
- * If what you want is not asserting but just knowing whether the parametric value is
393
- * following the type `T` or not, you can choose the {@link equals} function instead.
394
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
395
- * Also, if you want to returns the parametric value when no problem, you can use
396
- * {@link assertEquals} function instead.
397
- *
398
- * On the other hand, if you want to allow superfluous property that is not enrolled
399
- * to the type `T`, you can use {@link assertGuard} function instead.
400
- *
401
- * @template T Type of the input value
402
- * @param input A value to be asserted
403
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
404
- * @returns Parametric input value casted as `T`
405
- * @throws A {@link TypeGuardError} instance with detailed reason
406
- *
407
- * @author Jeongho Nam - https://github.com/samchon
408
- */
409
- export function assertGuardEquals<T>(
410
- input: unknown,
411
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
412
- ): asserts input is T;
413
-
414
- /**
415
- * @internal
416
- */
417
- export function assertGuardEquals(): never {
418
- halt("assertGuardEquals");
419
- }
420
-
421
- /**
422
- * Tests equality between a value and its type.
423
- *
424
- * Tests a parametric value type and returns whether it's equivalent to the type `T`
425
- * or not. If the parametric value is matched with the type `T` and there's not any
426
- * superfluous property that is not listed on the type `T`, `true` value would be
427
- * returned. Otherwise, the parametric value is not following the type `T` or some
428
- * superfluous property exists, `false` value would be returned.
429
- *
430
- * If what you want is not just knowing whether the parametric value is following the
431
- * type `T` or not, but throwing an exception with detailed reason, you can choose
432
- * {@link assertEquals} function instead. Also, if you want to know all the errors with
433
- * detailed reasons, {@link validateEquals} function would be useful.
434
- *
435
- * On the other hand, if you want to allow superfluous property that is not enrolled
436
- * to the type `T`, you can use {@link is} function instead.
437
- *
438
- * @template T Type of the input value
439
- * @param input A value to be tested
440
- * @returns Whether the parametric value is equivalent to the type `T` or not
441
- *
442
- * @author Jeongho Nam - https://github.com/samchon
443
- */
444
- export function equals<T>(input: T): input is T;
445
-
446
- /**
447
- * Tests equality between a value and its type.
448
- *
449
- * Tests a parametric value type and returns whether it's equivalent to the type `T`
450
- * or not. If the parametric value is matched with the type `T` and there's not any
451
- * superfluous property that is not listed on the type `T`, `true` value would be
452
- * returned. Otherwise, the parametric value is not following the type `T` or some
453
- * superfluous property exists, `false` value would be returned.
454
- *
455
- * If what you want is not just knowing whether the parametric value is following the
456
- * type `T` or not, but throwing an exception with detailed reason, you can choose
457
- * {@link assertEquals} function instead. Also, if you want to know all the errors with
458
- * detailed reasons, {@link validateEquals} function would be useful.
459
- *
460
- * On the other hand, if you want to allow superfluous property that is not enrolled
461
- * to the type `T`, you can use {@link is} function instead.
462
- *
463
- * @template T Type of the input value
464
- * @param input A value to be tested
465
- * @returns Whether the parametric value is equivalent to the type `T` or not
466
- *
467
- * @author Jeongho Nam - https://github.com/samchon
468
- */
469
- export function equals<T>(input: unknown): input is T;
470
-
471
- /**
472
- * @internal
473
- */
474
- export function equals(): never {
475
- halt("equals");
476
- }
477
-
478
- /**
479
- * Validates equality between a value and its type.
480
- *
481
- * Validates a parametric value type and archives all the type errors into an
482
- * {@link IValidation.errors} array, if the parametric value is not following the
483
- * type `T` or some superfluous property that is not listed on the type `T` has been
484
- * found. Of course, if the parametric value is following the type `T` and no
485
- * superfluous property exists, the {@link IValidation.errors} array would be empty
486
- * and {@link IValidation.success} would have the `true` value.
487
- *
488
- * If what you want is not finding all the error, but asserting the parametric value
489
- * type with exception throwing, you can choose {@link assert} function instead.
490
- * Otherwise, you just want to know whether the parametric value is matched with the
491
- * type `T`, {@link is} function is the way to go.
492
- *
493
- * On the other and, if you don't want to allow any superfluous property that is not
494
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
495
- *
496
- * @template Type of the input value
497
- * @param input A value to be validated
498
- * @returns Validation result
499
- *
500
- * @author Jeongho Nam - https://github.com/samchon
501
- */
502
- export function validateEquals<T>(input: T): IValidation<T>;
503
-
504
- /**
505
- * Validates equality between a value and its type.
506
- *
507
- * Validates a parametric value type and archives all the type errors into an
508
- * {@link IValidation.errors} array, if the parametric value is not following the
509
- * type `T` or some superfluous property that is not listed on the type `T` has been
510
- * found. Of course, if the parametric value is following the type `T` and no
511
- * superfluous property exists, the {@link IValidation.errors} array would be empty
512
- * and {@link IValidation.success} would have the `true` value.
513
- *
514
- * If what you want is not finding all the error, but asserting the parametric value
515
- * type with exception throwing, you can choose {@link assert} function instead.
516
- * Otherwise, you just want to know whether the parametric value is matched with the
517
- * type `T`, {@link is} function is the way to go.
518
- *
519
- * On the other and, if you don't want to allow any superfluous property that is not
520
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
521
- *
522
- * @template Type of the input value
523
- * @param input A value to be validated
524
- * @returns Validation result
525
- *
526
- * @author Jeongho Nam - https://github.com/samchon
527
- */
528
- export function validateEquals<T>(input: unknown): IValidation<T>;
529
-
530
- /**
531
- * @internal
532
- */
533
- export function validateEquals(): never {
534
- halt("validateEquals");
535
- }
536
-
537
- /* -----------------------------------------------------------
538
- RANDOM
539
- ----------------------------------------------------------- */
540
- /**
541
- * > You must configure the generic argument `T`.
542
- *
543
- * Generate random data.
544
- *
545
- * Generates a random data following type the `T`.
546
- *
547
- * For reference, this `typia.random()` function generates only primitive type.
548
- * If there're some methods in the type `T` or its nested instances, those would
549
- * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
550
- * would be generated instead.
551
- *
552
- * @template T Type of data to generate
553
- * @param generator Random data generator
554
- * @return Randomly generated data
555
- *
556
- * @author Jeongho Nam - https://github.com/samchon
557
- */
558
- export function random(generator?: Partial<IRandomGenerator>): never;
559
-
560
- /**
561
- * Generate random data.
562
- *
563
- * Generates a random data following type the `T`.
564
- *
565
- * For reference, this `typia.random()` function generates only primitive type.
566
- * If there're some methods in the type `T` or its nested instances, those would
567
- * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
568
- * would be generated instead.
569
- *
570
- * @template T Type of data to generate
571
- * @param generator Random data generator
572
- * @return Randomly generated data
573
- *
574
- * @author Jeongho Nam - https://github.com/samchon
575
- */
576
- export function random<T>(generator?: Partial<IRandomGenerator>): Resolved<T>;
577
-
578
- /**
579
- * @internal
580
- */
581
- export function random(): never {
582
- halt("random");
583
- }
584
-
585
- /* -----------------------------------------------------------
586
- FACTORY FUNCTIONS
587
- ----------------------------------------------------------- */
588
- /**
589
- * Creates a reusable {@link assert} function.
590
- *
591
- * @danger You must configure the generic argument `T`
592
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
593
- * @returns Nothing until you configure the generic argument `T`
594
- * @throws compile error
595
- *
596
- * @author Jeongho Nam - https://github.com/samchon
597
- */
598
- export function createAssert(
599
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
600
- ): never;
601
-
602
- /**
603
- * Creates a reusable {@link assert} function.
604
- *
605
- * @template T Type of the input value
606
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
607
- * @returns A reusable `assert` function
608
- *
609
- * @author Jeongho Nam - https://github.com/samchon
610
- */
611
- export function createAssert<T>(
612
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
613
- ): (input: unknown) => T;
614
-
615
- /**
616
- * @internal
617
- */
618
- export function createAssert<T>(): (input: unknown) => T {
619
- halt("createAssert");
620
- }
621
-
622
- /**
623
- * Creates a reusable {@link assertGuard} function.
624
- *
625
- * Note that, you've to declare the variable type of the factory function caller
626
- * like below. If you don't declare the variable type, compilation error be thrown.
627
- * This is the special rule of the TypeScript compiler.
628
- *
629
- * ```typescript
630
- * // MUST DECLARE THE VARIABLE TYPE
631
- * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
632
- *
633
- * // IF NOT, COMPILATION ERROR BE OCCURED
634
- * const func = typia.createAssertGuard<number>();
635
- * ```
636
- *
637
- * > *Assertions require every name in the call target to be declared with an*
638
- * > *explicit type annotation.*
639
- *
640
- * @danger You must configure the generic argument `T`
641
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
642
- * @returns Nothing until you configure the generic argument `T`
643
- * @throws compile error
644
- *
645
- * @author Jeongho Nam - https://github.com/samchon
646
- */
647
- export function createAssertGuard(
648
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
649
- ): never;
650
-
651
- /**
652
- * Creates a reusable {@link assertGuard} function.
653
- *
654
- * Note that, you've to declare the variable type of the factory function caller
655
- * like below. If you don't declare the variable type, compilation error be thrown.
656
- * This is the special rule of the TypeScript compiler.
657
- *
658
- * ```typescript
659
- * // MUST DECLARE THE VARIABLE TYPE
660
- * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
661
- *
662
- * // IF NOT, COMPILATION ERROR BE OCCURED
663
- * const func = typia.createAssertGuard<number>();
664
- * ```
665
- *
666
- * > *Assertions require every name in the call target to be declared with an*
667
- * > *explicit type annotation.*
668
- *
669
- * @returns Nothing until you configure the generic argument `T`
670
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
671
- * @throws compile error
672
- *
673
- * @author Jeongho Nam - https://github.com/samchon
674
- */
675
- export function createAssertGuard<T>(
676
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
677
- ): (input: unknown) => AssertionGuard<T>;
678
-
679
- /**
680
- * @internal
681
- */
682
- export function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T> {
683
- halt("createAssertGuard");
684
- }
685
-
686
- /**
687
- * Creates a reusable {@link is} function.
688
- *
689
- * @danger You must configure the generic argument `T`
690
- * @returns Nothing until you configure the generic argument `T`
691
- * @throws compile error
692
- *
693
- * @author Jeongho Nam - https://github.com/samchon
694
- */
695
- export function createIs(): never;
696
-
697
- /**
698
- * Creates a reusable {@link is} function.
699
- *
700
- * @template T Type of the input value
701
- * @returns A reusable `is` function
702
- *
703
- * @author Jeongho Nam - https://github.com/samchon
704
- */
705
- export function createIs<T>(): (input: unknown) => input is T;
706
-
707
- /**
708
- * @internal
709
- */
710
- export function createIs<T>(): (input: unknown) => input is T {
711
- halt("createIs");
712
- }
713
-
714
- /**
715
- * Creates a reusable {@link validate} function.
716
- *
717
- * @danger You must configure the generic argument `T`
718
- * @returns Nothing until you configure the generic argument `T`
719
- * @throws compile error
720
- *
721
- * @author Jeongho Nam - https://github.com/samchon
722
- */
723
- export function createValidate(): never;
724
-
725
- /**
726
- * Creates a reusable {@link validate} function.
727
- *
728
- * @template T Type of the input value
729
- * @returns A reusable `validate` function
730
- *
731
- * @author Jeongho Nam - https://github.com/samchon
732
- */
733
- export function createValidate<T>(): (input: unknown) => IValidation<T>;
734
-
735
- /**
736
- * @internal
737
- */
738
- export function createValidate(): (input: unknown) => IValidation {
739
- halt("createValidate");
740
- }
741
-
742
- /**
743
- * Creates a reusable {@link assertEquals} function.
744
- *
745
- * @danger You must configure the generic argument `T`
746
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
747
- * @returns Nothing until you configure the generic argument `T`
748
- * @throws compile error
749
- *
750
- * @author Jeongho Nam - https://github.com/samchon
751
- */
752
- export function createAssertEquals(
753
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
754
- ): never;
755
-
756
- /**
757
- * Creates a reusable {@link assertEquals} function.
758
- *
759
- * @template T Type of the input value
760
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
761
- * @returns A reusable `assertEquals` function
762
- *
763
- * @author Jeongho Nam - https://github.com/samchon
764
- */
765
- export function createAssertEquals<T>(
766
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
767
- ): (input: unknown) => T;
768
-
769
- /**
770
- * @internal
771
- */
772
- export function createAssertEquals<T>(): (input: unknown) => T {
773
- halt("createAssertEquals");
774
- }
775
-
776
- /**
777
- * Creates a reusable {@link assertGuardEquals} function.
778
- *
779
- * Note that, you've to declare the variable type of the factory function caller
780
- * like below. If you don't declare the variable type, compilation error be thrown.
781
- * This is the special rule of the TypeScript compiler.
782
- *
783
- * ```typescript
784
- * // MUST DECLARE THE VARIABLE TYPE
785
- * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
786
- *
787
- * // IF NOT, COMPILATION ERROR BE OCCURED
788
- * const func = typia.createAssertGuardEquals<number>();
789
- * ```
790
- *
791
- * > *Assertions require every name in the call target to be declared with an*
792
- * > *explicit type annotation.*
793
- *
794
- * @danger You must configure the generic argument `T`
795
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
796
- * @returns Nothing until you configure the generic argument `T`
797
- * @throws compile error
798
- *
799
- * @author Jeongho Nam - https://github.com/samchon
800
- */
801
- export function createAssertGuardEquals(
802
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
803
- ): never;
804
-
805
- /**
806
- * Creates a reusable {@link assertGuardEquals} function.
807
- *
808
- * Note that, you've to declare the variable type of the factory function caller
809
- * like below. If you don't declare the variable type, compilation error be thrown.
810
- * This is the special rule of the TypeScript compiler.
811
- *
812
- * ```typescript
813
- * // MUST DECLARE THE VARIABLE TYPE
814
- * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
815
- *
816
- * // IF NOT, COMPILATION ERROR BE OCCURED
817
- * const func = typia.createAssertGuardEquals<number>();
818
- * ```
819
- *
820
- * > *Assertions require every name in the call target to be declared with an*
821
- * > *explicit type annotation.*
822
- *
823
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
824
- * @returns Nothing until you configure the generic argument `T`
825
- * @throws compile error
826
- *
827
- * @author Jeongho Nam - https://github.com/samchon
828
- */
829
- export function createAssertGuardEquals<T>(
830
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
831
- ): (input: unknown) => AssertionGuard<T>;
832
-
833
- /**
834
- * @internal
835
- */
836
- export function createAssertGuardEquals<T>(): (
837
- input: unknown,
838
- ) => AssertionGuard<T> {
839
- halt("createAssertGuardEquals");
840
- }
841
-
842
- /**
843
- * Creates a reusable {@link equals} function.
844
- *
845
- * @danger You must configure the generic argument `T`
846
- * @returns Nothing until you configure the generic argument `T`
847
- * @throws compile error
848
- *
849
- * @author Jeongho Nam - https://github.com/samchon
850
- */
851
- export function createEquals(): never;
852
-
853
- /**
854
- * Creates a reusable {@link equals} function.
855
- *
856
- * @template T Type of the input value
857
- * @returns A reusable `equals` function
858
- *
859
- * @author Jeongho Nam - https://github.com/samchon
860
- */
861
- export function createEquals<T>(): (input: unknown) => input is T;
862
-
863
- /**
864
- * @internal
865
- */
866
- export function createEquals<T>(): (input: unknown) => input is T {
867
- halt("createEquals");
868
- }
869
-
870
- /**
871
- * Creates a reusable {@link validateEquals} function.
872
- *
873
- * @danger You must configure the generic argument `T`
874
- * @returns Nothing until you configure the generic argument `T`
875
- * @throws compile error
876
- *
877
- * @author Jeongho Nam - https://github.com/samchon
878
- */
879
- export function createValidateEquals(): never;
880
-
881
- /**
882
- * Creates a reusable {@link validateEquals} function.
883
- *
884
- * @template T Type of the input value
885
- * @returns A reusable `validateEquals` function
886
- *
887
- * @author Jeongho Nam - https://github.com/samchon
888
- */
889
- export function createValidateEquals<T>(): (input: unknown) => IValidation<T>;
890
-
891
- /**
892
- * @internal
893
- */
894
- export function createValidateEquals(): (input: unknown) => IValidation {
895
- halt("createValidateEquals");
896
- }
897
-
898
- /**
899
- * Creates a reusable {@link random} function.
900
- *
901
- * @danger You must configure the generic argument `T`
902
- * @param generator Random data generator
903
- * @returns Nothing until you configure the generic argument `T`
904
- * @throws compile error
905
- *
906
- * @author Jeongho Nam - https://github.com/samchon
907
- */
908
- export function createRandom(generator?: Partial<IRandomGenerator>): never;
909
-
910
- /**
911
- * Creates a resuable {@link random} function.
912
- *
913
- * @template T Type of the input value
914
- * @param generator Random data generator
915
- * @returns A reusable `random` function
916
- *
917
- * @author Jeongho Nam - https://github.com/samchon
918
- */
919
- export function createRandom<T>(
920
- generator?: Partial<IRandomGenerator>,
921
- ): () => Resolved<T>;
922
-
923
- /**
924
- * @internal
925
- */
926
- export function createRandom(): never {
927
- halt("createRandom");
928
- }
929
-
930
- /**
931
- * @internal
932
- */
933
- function halt(name: string): never {
934
- throw new Error(
935
- `Error on typia.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
936
- );
937
- }
1
+ import { AssertionGuard } from "./AssertionGuard";
2
+ import { IRandomGenerator } from "./IRandomGenerator";
3
+ import { IValidation } from "./IValidation";
4
+ import { Resolved } from "./Resolved";
5
+ import { TypeGuardError } from "./TypeGuardError";
6
+
7
+ export * as functional from "./functional";
8
+ export * as http from "./http";
9
+ export * as llm from "./llm";
10
+ export * as json from "./json";
11
+ export * as misc from "./misc";
12
+ export * as notations from "./notations";
13
+ export * as protobuf from "./protobuf";
14
+ export * as reflect from "./reflect";
15
+ export * as tags from "./tags";
16
+
17
+ export * from "./schemas/metadata/IJsDocTagInfo";
18
+ export * from "./schemas/json/IJsonApplication";
19
+ export * from "./schemas/json/IJsonSchemaCollection";
20
+ export * from "./schemas/llm/ILlmApplicationOfValidate";
21
+ export * from "./schemas/llm/ILlmFunctionOfValidate";
22
+ export * from "./AssertionGuard";
23
+ export * from "./IRandomGenerator";
24
+ export * from "./IValidation";
25
+ export * from "./TypeGuardError";
26
+
27
+ export * from "./Primitive";
28
+ export * from "./Resolved";
29
+ export * from "./CamelCase";
30
+ export * from "./PascalCase";
31
+ export * from "./SnakeCase";
32
+ export * from "./IReadableURLSearchParams";
33
+
34
+ /* -----------------------------------------------------------
35
+ BASIC VALIDATORS
36
+ ----------------------------------------------------------- */
37
+ /**
38
+ * Asserts a value type.
39
+ *
40
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
41
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
42
+ * value is following the type `T`, just input parameter would be returned.
43
+ *
44
+ * If what you want is not asserting but just knowing whether the parametric value is
45
+ * following the type `T` or not, you can choose the {@link is} function instead.
46
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
47
+ * Also, if you want to automatically cast the parametric value to the type `T`
48
+ * when no problem (perform the assertion guard of type).
49
+ *
50
+ * On the other and, if you don't want to allow any superfluous property that is not
51
+ * enrolled to the type `T`, you can use {@link assertEquals} function instead.
52
+ *
53
+ * @template T Type of the input value
54
+ * @param input A value to be asserted
55
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
56
+ * @returns Parametric input value
57
+ * @throws A {@link TypeGuardError} instance with detailed reason
58
+ *
59
+ * @author Jeongho Nam - https://github.com/samchon
60
+ */
61
+ export function assert<T>(
62
+ input: T,
63
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
64
+ ): T;
65
+
66
+ /**
67
+ * Asserts a value type.
68
+ *
69
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
70
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
71
+ * value is following the type `T`, just input parameter would be returned.
72
+ *
73
+ * If what you want is not asserting but just knowing whether the parametric value is
74
+ * following the type `T` or not, you can choose the {@link is} function instead.
75
+ * Otherwise, you want to know all the errors, {@link validate} is the way to go.
76
+ *
77
+ * On the other and, if you don't want to allow any superfluous property that is not
78
+ * enrolled to the type `T`, you can use {@link assertEquals} function instead.
79
+ *
80
+ * @template T Type of the input value
81
+ * @param input A value to be asserted
82
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
83
+ * @returns Parametric input value casted as `T`
84
+ * @throws A {@link TypeGuardError} instance with detailed reason
85
+ *
86
+ * @author Jeongho Nam - https://github.com/samchon
87
+ */
88
+ export function assert<T>(
89
+ input: unknown,
90
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
91
+ ): T;
92
+
93
+ /**
94
+ * @internal
95
+ */
96
+ export function assert(): never {
97
+ halt("assert");
98
+ }
99
+
100
+ /**
101
+ * Assertion guard of a value type.
102
+ *
103
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
104
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
105
+ * value is following the type `T`, nothing would be returned, but the input value
106
+ * would be automatically casted to the type `T`. This is the concept of
107
+ * "Assertion Guard" of a value type.
108
+ *
109
+ * If what you want is not asserting but just knowing whether the parametric value is
110
+ * following the type `T` or not, you can choose the {@link is} function instead.
111
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
112
+ * Also, if you want to returns the parametric value when no problem, you can use
113
+ * {@link assert} function instead.
114
+ *
115
+ * On the other and, if you don't want to allow any superfluous property that is not
116
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
117
+ *
118
+ * @template T Type of the input value
119
+ * @param input A value to be asserted
120
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
121
+ * @throws A {@link TypeGuardError} instance with detailed reason
122
+ *
123
+ * @author Jeongho Nam - https://github.com/samchon
124
+ */
125
+ export function assertGuard<T>(
126
+ input: T,
127
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
128
+ ): asserts input is T;
129
+
130
+ /**
131
+ * Assertion guard of a value type.
132
+ *
133
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
134
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
135
+ * value is following the type `T`, nothing would be returned, but the input value
136
+ * would be automatically casted to the type `T`. This is the concept of
137
+ * "Assertion Guard" of a value type.
138
+ *
139
+ * If what you want is not asserting but just knowing whether the parametric value is
140
+ * following the type `T` or not, you can choose the {@link is} function instead.
141
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
142
+ * Also, if you want to returns the parametric value when no problem, you can use
143
+ * {@link assert} function instead.
144
+ *
145
+ * On the other and, if you don't want to allow any superfluous property that is not
146
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
147
+ *
148
+ * @template T Type of the input value
149
+ * @param input A value to be asserted
150
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
151
+ * @throws A {@link TypeGuardError} instance with detailed reason
152
+ *
153
+ * @author Jeongho Nam - https://github.com/samchon
154
+ */
155
+ export function assertGuard<T>(
156
+ input: unknown,
157
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
158
+ ): asserts input is T;
159
+
160
+ /**
161
+ * @internal
162
+ */
163
+ export function assertGuard(): never {
164
+ halt("assertGuard");
165
+ }
166
+
167
+ /**
168
+ * Tests a value type.
169
+ *
170
+ * Tests a parametric value type and returns whether it's following the type `T` or not.
171
+ * If the parametric value is matched with the type `T`, `true` value would be returned.
172
+ * Otherwise, the parametric value is not following the type `T`, `false` value would be
173
+ * returned.
174
+ *
175
+ * If what you want is not just knowing whether the parametric value is following the
176
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
177
+ * {@link assert} function instead. Also, if you want to know all the errors with
178
+ * detailed reasons, {@link validate} function would be useful.
179
+ *
180
+ * On the other and, if you don't want to allow any superfluous property that is not
181
+ * enrolled to the type `T`, you can use {@link equals} function instead.
182
+ *
183
+ * @template T Type of the input value
184
+ * @param input A value to be tested
185
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
186
+ * @returns Whether the parametric value is following the type `T` or not
187
+ *
188
+ * @author Jeongho Nam - https://github.com/samchon
189
+ */
190
+ export function is<T>(input: T): input is T;
191
+
192
+ /**
193
+ * Tests a value type.
194
+ *
195
+ * Tests a parametric value type and returns whether it's following the type `T` or not.
196
+ * If the parametric value is matched with the type `T`, `true` value would be returned.
197
+ * Otherwise, the parametric value is not following the type `T`, `false` value would be
198
+ * returned.
199
+ *
200
+ * If what you want is not just knowing whether the parametric value is following the
201
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
202
+ * {@link assert} function instead. Also, if you want to know all the errors with
203
+ * detailed reasons, {@link validate} function would be useful.
204
+ *
205
+ * On the other and, if you don't want to allow any superfluous property that is not
206
+ * enrolled to the type `T`, you can use {@link equals} function instead.
207
+ *
208
+ * @template T Type of the input value
209
+ * @param input A value to be tested
210
+ * @returns Whether the parametric value is following the type `T` or not
211
+ *
212
+ * @author Jeongho Nam - https://github.com/samchon
213
+ */
214
+ export function is<T>(input: unknown): input is T;
215
+
216
+ /**
217
+ * @internal
218
+ */
219
+ export function is(): never {
220
+ halt("is");
221
+ }
222
+
223
+ /**
224
+ * Validates a value type.
225
+ *
226
+ * Validates a parametric value type and archives all the type errors into an
227
+ * {@link IValidation.errors} array, if the parametric value is not following the
228
+ * type `T`. Of course, if the parametric value is following the type `T`, the
229
+ * {@link IValidation.errors} array would be empty and {@link IValidation.success}
230
+ * would have the `true` value.
231
+ *
232
+ * If what you want is not finding all the error, but asserting the parametric value
233
+ * type with exception throwing, you can choose {@link assert} function instead.
234
+ * Otherwise, you just want to know whether the parametric value is matched with the
235
+ * type `T`, {@link is} function is the way to go.
236
+ *
237
+ * On the other and, if you don't want to allow any superfluous property that is not
238
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
239
+ *
240
+ * @template Type of the input value
241
+ * @param input A value to be validated
242
+ * @returns Validation result
243
+ *
244
+ * @author Jeongho Nam - https://github.com/samchon
245
+ */
246
+ export function validate<T>(input: T): IValidation<T>;
247
+
248
+ /**
249
+ * Validates a value type.
250
+ *
251
+ * Validates a parametric value type and archives all the type errors into an
252
+ * {@link IValidation.errors} array, if the parametric value is not following the
253
+ * type `T`. Of course, if the parametric value is following the type `T`, the
254
+ * {@link IValidation.errors} array would be empty and {@link IValidation.success}
255
+ * would have the `true` value.
256
+ *
257
+ * If what you want is not finding all the error, but asserting the parametric value
258
+ * type with exception throwing, you can choose {@link assert} function instead.
259
+ * Otherwise, you just want to know whether the parametric value is matched with the
260
+ * type `T`, {@link is} function is the way to go.
261
+ *
262
+ * On the other and, if you don't want to allow any superfluous property that is not
263
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
264
+ *
265
+ * @template Type of the input value
266
+ * @param input A value to be validated
267
+ * @returns Validation result
268
+ *
269
+ * @author Jeongho Nam - https://github.com/samchon
270
+ */
271
+ export function validate<T>(input: unknown): IValidation<T>;
272
+
273
+ /**
274
+ * @internal
275
+ */
276
+ export function validate(): never {
277
+ halt("validate");
278
+ }
279
+
280
+ /* -----------------------------------------------------------
281
+ STRICT VALIDATORS
282
+ ----------------------------------------------------------- */
283
+ /**
284
+ * Asserts equality between a value and its type.
285
+ *
286
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
287
+ * reason, if the parametric value is not following the type `T` or some superfluous
288
+ * property that is not listed on the type `T` has been found. Otherwise, the value is
289
+ * following the type `T` without any superfluous property, just input parameter would
290
+ * be returned.
291
+ *
292
+ * If what you want is not asserting but just knowing whether the parametric value is
293
+ * following the type `T` or not, you can choose the {@link equals} function instead.
294
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
295
+ *
296
+ * On the other hand, if you want to allow superfluous property that is not enrolled
297
+ * to the type `T`, you can use {@link assert} function instead.
298
+ *
299
+ * @template T Type of the input value
300
+ * @param input A value to be asserted
301
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
302
+ * @returns Parametric input value
303
+ * @throws A {@link TypeGuardError} instance with detailed reason
304
+ *
305
+ * @author Jeongho Nam - https://github.com/samchon
306
+ */
307
+ export function assertEquals<T>(
308
+ input: T,
309
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
310
+ ): T;
311
+
312
+ /**
313
+ * Asserts equality between a value and its type.
314
+ *
315
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
316
+ * reason, if the parametric value is not following the type `T` or some superfluous
317
+ * property that is not listed on the type `T` has been found. Otherwise, the value is
318
+ * following the type `T` without any superfluous property, just input parameter would
319
+ * be returned.
320
+ *
321
+ * If what you want is not asserting but just knowing whether the parametric value is
322
+ * following the type `T` or not, you can choose the {@link equals} function instead.
323
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
324
+ *
325
+ * On the other hand, if you want to allow superfluous property that is not enrolled
326
+ * to the type `T`, you can use {@link assert} function instead.
327
+ *
328
+ * @template T Type of the input value
329
+ * @param input A value to be asserted
330
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
331
+ * @returns Parametric input value casted as `T`
332
+ * @throws A {@link TypeGuardError} instance with detailed reason
333
+ *
334
+ * @author Jeongho Nam - https://github.com/samchon
335
+ */
336
+ export function assertEquals<T>(
337
+ input: unknown,
338
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
339
+ ): T;
340
+
341
+ /**
342
+ * @internal
343
+ */
344
+ export function assertEquals(): never {
345
+ halt("assertEquals");
346
+ }
347
+
348
+ /**
349
+ * Assertion guard of a type with equality.
350
+ *
351
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
352
+ * reason, if the parametric value is not following the type `T` or some superfluous
353
+ * property that is not listed on the type `T` has been found.
354
+ *
355
+ * Otherwise, the value is following the type `T` without any superfluous property,
356
+ * nothing would be returned, but the input value would be automatically casted to
357
+ * the type `T`. This is the concept of "Assertion Guard" of a value type.
358
+ *
359
+ * If what you want is not asserting but just knowing whether the parametric value is
360
+ * following the type `T` or not, you can choose the {@link equals} function instead.
361
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
362
+ * Also, if you want to returns the parametric value when no problem, you can use
363
+ * {@link assert} function instead.
364
+ *
365
+ * On the other hand, if you want to allow superfluous property that is not enrolled
366
+ * to the type `T`, you can use {@link assertEquals} function instead.
367
+ *
368
+ * @template T Type of the input value
369
+ * @param input A value to be asserted
370
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
371
+ * @returns Parametric input value casted as `T`
372
+ * @throws A {@link TypeGuardError} instance with detailed reason
373
+ *
374
+ * @author Jeongho Nam - https://github.com/samchon
375
+ */
376
+ export function assertGuardEquals<T>(
377
+ input: T,
378
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
379
+ ): asserts input is T;
380
+
381
+ /**
382
+ * Assertion guard of a type with equality.
383
+ *
384
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
385
+ * reason, if the parametric value is not following the type `T` or some superfluous
386
+ * property that is not listed on the type `T` has been found.
387
+ *
388
+ * Otherwise, the value is following the type `T` without any superfluous property,
389
+ * nothing would be returned, but the input value would be automatically casted to
390
+ * the type `T`. This is the concept of "Assertion Guard" of a value type.
391
+ *
392
+ * If what you want is not asserting but just knowing whether the parametric value is
393
+ * following the type `T` or not, you can choose the {@link equals} function instead.
394
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
395
+ * Also, if you want to returns the parametric value when no problem, you can use
396
+ * {@link assertEquals} function instead.
397
+ *
398
+ * On the other hand, if you want to allow superfluous property that is not enrolled
399
+ * to the type `T`, you can use {@link assertGuard} function instead.
400
+ *
401
+ * @template T Type of the input value
402
+ * @param input A value to be asserted
403
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
404
+ * @returns Parametric input value casted as `T`
405
+ * @throws A {@link TypeGuardError} instance with detailed reason
406
+ *
407
+ * @author Jeongho Nam - https://github.com/samchon
408
+ */
409
+ export function assertGuardEquals<T>(
410
+ input: unknown,
411
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
412
+ ): asserts input is T;
413
+
414
+ /**
415
+ * @internal
416
+ */
417
+ export function assertGuardEquals(): never {
418
+ halt("assertGuardEquals");
419
+ }
420
+
421
+ /**
422
+ * Tests equality between a value and its type.
423
+ *
424
+ * Tests a parametric value type and returns whether it's equivalent to the type `T`
425
+ * or not. If the parametric value is matched with the type `T` and there's not any
426
+ * superfluous property that is not listed on the type `T`, `true` value would be
427
+ * returned. Otherwise, the parametric value is not following the type `T` or some
428
+ * superfluous property exists, `false` value would be returned.
429
+ *
430
+ * If what you want is not just knowing whether the parametric value is following the
431
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
432
+ * {@link assertEquals} function instead. Also, if you want to know all the errors with
433
+ * detailed reasons, {@link validateEquals} function would be useful.
434
+ *
435
+ * On the other hand, if you want to allow superfluous property that is not enrolled
436
+ * to the type `T`, you can use {@link is} function instead.
437
+ *
438
+ * @template T Type of the input value
439
+ * @param input A value to be tested
440
+ * @returns Whether the parametric value is equivalent to the type `T` or not
441
+ *
442
+ * @author Jeongho Nam - https://github.com/samchon
443
+ */
444
+ export function equals<T>(input: T): input is T;
445
+
446
+ /**
447
+ * Tests equality between a value and its type.
448
+ *
449
+ * Tests a parametric value type and returns whether it's equivalent to the type `T`
450
+ * or not. If the parametric value is matched with the type `T` and there's not any
451
+ * superfluous property that is not listed on the type `T`, `true` value would be
452
+ * returned. Otherwise, the parametric value is not following the type `T` or some
453
+ * superfluous property exists, `false` value would be returned.
454
+ *
455
+ * If what you want is not just knowing whether the parametric value is following the
456
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
457
+ * {@link assertEquals} function instead. Also, if you want to know all the errors with
458
+ * detailed reasons, {@link validateEquals} function would be useful.
459
+ *
460
+ * On the other hand, if you want to allow superfluous property that is not enrolled
461
+ * to the type `T`, you can use {@link is} function instead.
462
+ *
463
+ * @template T Type of the input value
464
+ * @param input A value to be tested
465
+ * @returns Whether the parametric value is equivalent to the type `T` or not
466
+ *
467
+ * @author Jeongho Nam - https://github.com/samchon
468
+ */
469
+ export function equals<T>(input: unknown): input is T;
470
+
471
+ /**
472
+ * @internal
473
+ */
474
+ export function equals(): never {
475
+ halt("equals");
476
+ }
477
+
478
+ /**
479
+ * Validates equality between a value and its type.
480
+ *
481
+ * Validates a parametric value type and archives all the type errors into an
482
+ * {@link IValidation.errors} array, if the parametric value is not following the
483
+ * type `T` or some superfluous property that is not listed on the type `T` has been
484
+ * found. Of course, if the parametric value is following the type `T` and no
485
+ * superfluous property exists, the {@link IValidation.errors} array would be empty
486
+ * and {@link IValidation.success} would have the `true` value.
487
+ *
488
+ * If what you want is not finding all the error, but asserting the parametric value
489
+ * type with exception throwing, you can choose {@link assert} function instead.
490
+ * Otherwise, you just want to know whether the parametric value is matched with the
491
+ * type `T`, {@link is} function is the way to go.
492
+ *
493
+ * On the other and, if you don't want to allow any superfluous property that is not
494
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
495
+ *
496
+ * @template Type of the input value
497
+ * @param input A value to be validated
498
+ * @returns Validation result
499
+ *
500
+ * @author Jeongho Nam - https://github.com/samchon
501
+ */
502
+ export function validateEquals<T>(input: T): IValidation<T>;
503
+
504
+ /**
505
+ * Validates equality between a value and its type.
506
+ *
507
+ * Validates a parametric value type and archives all the type errors into an
508
+ * {@link IValidation.errors} array, if the parametric value is not following the
509
+ * type `T` or some superfluous property that is not listed on the type `T` has been
510
+ * found. Of course, if the parametric value is following the type `T` and no
511
+ * superfluous property exists, the {@link IValidation.errors} array would be empty
512
+ * and {@link IValidation.success} would have the `true` value.
513
+ *
514
+ * If what you want is not finding all the error, but asserting the parametric value
515
+ * type with exception throwing, you can choose {@link assert} function instead.
516
+ * Otherwise, you just want to know whether the parametric value is matched with the
517
+ * type `T`, {@link is} function is the way to go.
518
+ *
519
+ * On the other and, if you don't want to allow any superfluous property that is not
520
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
521
+ *
522
+ * @template Type of the input value
523
+ * @param input A value to be validated
524
+ * @returns Validation result
525
+ *
526
+ * @author Jeongho Nam - https://github.com/samchon
527
+ */
528
+ export function validateEquals<T>(input: unknown): IValidation<T>;
529
+
530
+ /**
531
+ * @internal
532
+ */
533
+ export function validateEquals(): never {
534
+ halt("validateEquals");
535
+ }
536
+
537
+ /* -----------------------------------------------------------
538
+ RANDOM
539
+ ----------------------------------------------------------- */
540
+ /**
541
+ * > You must configure the generic argument `T`.
542
+ *
543
+ * Generate random data.
544
+ *
545
+ * Generates a random data following type the `T`.
546
+ *
547
+ * For reference, this `typia.random()` function generates only primitive type.
548
+ * If there're some methods in the type `T` or its nested instances, those would
549
+ * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
550
+ * would be generated instead.
551
+ *
552
+ * @template T Type of data to generate
553
+ * @param generator Random data generator
554
+ * @return Randomly generated data
555
+ *
556
+ * @author Jeongho Nam - https://github.com/samchon
557
+ */
558
+ export function random(generator?: Partial<IRandomGenerator>): never;
559
+
560
+ /**
561
+ * Generate random data.
562
+ *
563
+ * Generates a random data following type the `T`.
564
+ *
565
+ * For reference, this `typia.random()` function generates only primitive type.
566
+ * If there're some methods in the type `T` or its nested instances, those would
567
+ * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
568
+ * would be generated instead.
569
+ *
570
+ * @template T Type of data to generate
571
+ * @param generator Random data generator
572
+ * @return Randomly generated data
573
+ *
574
+ * @author Jeongho Nam - https://github.com/samchon
575
+ */
576
+ export function random<T>(generator?: Partial<IRandomGenerator>): Resolved<T>;
577
+
578
+ /**
579
+ * @internal
580
+ */
581
+ export function random(): never {
582
+ halt("random");
583
+ }
584
+
585
+ /* -----------------------------------------------------------
586
+ FACTORY FUNCTIONS
587
+ ----------------------------------------------------------- */
588
+ /**
589
+ * Creates a reusable {@link assert} function.
590
+ *
591
+ * @danger You must configure the generic argument `T`
592
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
593
+ * @returns Nothing until you configure the generic argument `T`
594
+ * @throws compile error
595
+ *
596
+ * @author Jeongho Nam - https://github.com/samchon
597
+ */
598
+ export function createAssert(
599
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
600
+ ): never;
601
+
602
+ /**
603
+ * Creates a reusable {@link assert} function.
604
+ *
605
+ * @template T Type of the input value
606
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
607
+ * @returns A reusable `assert` function
608
+ *
609
+ * @author Jeongho Nam - https://github.com/samchon
610
+ */
611
+ export function createAssert<T>(
612
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
613
+ ): (input: unknown) => T;
614
+
615
+ /**
616
+ * @internal
617
+ */
618
+ export function createAssert<T>(): (input: unknown) => T {
619
+ halt("createAssert");
620
+ }
621
+
622
+ /**
623
+ * Creates a reusable {@link assertGuard} function.
624
+ *
625
+ * Note that, you've to declare the variable type of the factory function caller
626
+ * like below. If you don't declare the variable type, compilation error be thrown.
627
+ * This is the special rule of the TypeScript compiler.
628
+ *
629
+ * ```typescript
630
+ * // MUST DECLARE THE VARIABLE TYPE
631
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
632
+ *
633
+ * // IF NOT, COMPILATION ERROR BE OCCURED
634
+ * const func = typia.createAssertGuard<number>();
635
+ * ```
636
+ *
637
+ * > *Assertions require every name in the call target to be declared with an*
638
+ * > *explicit type annotation.*
639
+ *
640
+ * @danger You must configure the generic argument `T`
641
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
642
+ * @returns Nothing until you configure the generic argument `T`
643
+ * @throws compile error
644
+ *
645
+ * @author Jeongho Nam - https://github.com/samchon
646
+ */
647
+ export function createAssertGuard(
648
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
649
+ ): never;
650
+
651
+ /**
652
+ * Creates a reusable {@link assertGuard} function.
653
+ *
654
+ * Note that, you've to declare the variable type of the factory function caller
655
+ * like below. If you don't declare the variable type, compilation error be thrown.
656
+ * This is the special rule of the TypeScript compiler.
657
+ *
658
+ * ```typescript
659
+ * // MUST DECLARE THE VARIABLE TYPE
660
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
661
+ *
662
+ * // IF NOT, COMPILATION ERROR BE OCCURED
663
+ * const func = typia.createAssertGuard<number>();
664
+ * ```
665
+ *
666
+ * > *Assertions require every name in the call target to be declared with an*
667
+ * > *explicit type annotation.*
668
+ *
669
+ * @returns Nothing until you configure the generic argument `T`
670
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
671
+ * @throws compile error
672
+ *
673
+ * @author Jeongho Nam - https://github.com/samchon
674
+ */
675
+ export function createAssertGuard<T>(
676
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
677
+ ): (input: unknown) => AssertionGuard<T>;
678
+
679
+ /**
680
+ * @internal
681
+ */
682
+ export function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T> {
683
+ halt("createAssertGuard");
684
+ }
685
+
686
+ /**
687
+ * Creates a reusable {@link is} function.
688
+ *
689
+ * @danger You must configure the generic argument `T`
690
+ * @returns Nothing until you configure the generic argument `T`
691
+ * @throws compile error
692
+ *
693
+ * @author Jeongho Nam - https://github.com/samchon
694
+ */
695
+ export function createIs(): never;
696
+
697
+ /**
698
+ * Creates a reusable {@link is} function.
699
+ *
700
+ * @template T Type of the input value
701
+ * @returns A reusable `is` function
702
+ *
703
+ * @author Jeongho Nam - https://github.com/samchon
704
+ */
705
+ export function createIs<T>(): (input: unknown) => input is T;
706
+
707
+ /**
708
+ * @internal
709
+ */
710
+ export function createIs<T>(): (input: unknown) => input is T {
711
+ halt("createIs");
712
+ }
713
+
714
+ /**
715
+ * Creates a reusable {@link validate} function.
716
+ *
717
+ * @danger You must configure the generic argument `T`
718
+ * @returns Nothing until you configure the generic argument `T`
719
+ * @throws compile error
720
+ *
721
+ * @author Jeongho Nam - https://github.com/samchon
722
+ */
723
+ export function createValidate(): never;
724
+
725
+ /**
726
+ * Creates a reusable {@link validate} function.
727
+ *
728
+ * @template T Type of the input value
729
+ * @returns A reusable `validate` function
730
+ *
731
+ * @author Jeongho Nam - https://github.com/samchon
732
+ */
733
+ export function createValidate<T>(): (input: unknown) => IValidation<T>;
734
+
735
+ /**
736
+ * @internal
737
+ */
738
+ export function createValidate(): (input: unknown) => IValidation {
739
+ halt("createValidate");
740
+ }
741
+
742
+ /**
743
+ * Creates a reusable {@link assertEquals} function.
744
+ *
745
+ * @danger You must configure the generic argument `T`
746
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
747
+ * @returns Nothing until you configure the generic argument `T`
748
+ * @throws compile error
749
+ *
750
+ * @author Jeongho Nam - https://github.com/samchon
751
+ */
752
+ export function createAssertEquals(
753
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
754
+ ): never;
755
+
756
+ /**
757
+ * Creates a reusable {@link assertEquals} function.
758
+ *
759
+ * @template T Type of the input value
760
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
761
+ * @returns A reusable `assertEquals` function
762
+ *
763
+ * @author Jeongho Nam - https://github.com/samchon
764
+ */
765
+ export function createAssertEquals<T>(
766
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
767
+ ): (input: unknown) => T;
768
+
769
+ /**
770
+ * @internal
771
+ */
772
+ export function createAssertEquals<T>(): (input: unknown) => T {
773
+ halt("createAssertEquals");
774
+ }
775
+
776
+ /**
777
+ * Creates a reusable {@link assertGuardEquals} function.
778
+ *
779
+ * Note that, you've to declare the variable type of the factory function caller
780
+ * like below. If you don't declare the variable type, compilation error be thrown.
781
+ * This is the special rule of the TypeScript compiler.
782
+ *
783
+ * ```typescript
784
+ * // MUST DECLARE THE VARIABLE TYPE
785
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
786
+ *
787
+ * // IF NOT, COMPILATION ERROR BE OCCURED
788
+ * const func = typia.createAssertGuardEquals<number>();
789
+ * ```
790
+ *
791
+ * > *Assertions require every name in the call target to be declared with an*
792
+ * > *explicit type annotation.*
793
+ *
794
+ * @danger You must configure the generic argument `T`
795
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
796
+ * @returns Nothing until you configure the generic argument `T`
797
+ * @throws compile error
798
+ *
799
+ * @author Jeongho Nam - https://github.com/samchon
800
+ */
801
+ export function createAssertGuardEquals(
802
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
803
+ ): never;
804
+
805
+ /**
806
+ * Creates a reusable {@link assertGuardEquals} function.
807
+ *
808
+ * Note that, you've to declare the variable type of the factory function caller
809
+ * like below. If you don't declare the variable type, compilation error be thrown.
810
+ * This is the special rule of the TypeScript compiler.
811
+ *
812
+ * ```typescript
813
+ * // MUST DECLARE THE VARIABLE TYPE
814
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
815
+ *
816
+ * // IF NOT, COMPILATION ERROR BE OCCURED
817
+ * const func = typia.createAssertGuardEquals<number>();
818
+ * ```
819
+ *
820
+ * > *Assertions require every name in the call target to be declared with an*
821
+ * > *explicit type annotation.*
822
+ *
823
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
824
+ * @returns Nothing until you configure the generic argument `T`
825
+ * @throws compile error
826
+ *
827
+ * @author Jeongho Nam - https://github.com/samchon
828
+ */
829
+ export function createAssertGuardEquals<T>(
830
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
831
+ ): (input: unknown) => AssertionGuard<T>;
832
+
833
+ /**
834
+ * @internal
835
+ */
836
+ export function createAssertGuardEquals<T>(): (
837
+ input: unknown,
838
+ ) => AssertionGuard<T> {
839
+ halt("createAssertGuardEquals");
840
+ }
841
+
842
+ /**
843
+ * Creates a reusable {@link equals} function.
844
+ *
845
+ * @danger You must configure the generic argument `T`
846
+ * @returns Nothing until you configure the generic argument `T`
847
+ * @throws compile error
848
+ *
849
+ * @author Jeongho Nam - https://github.com/samchon
850
+ */
851
+ export function createEquals(): never;
852
+
853
+ /**
854
+ * Creates a reusable {@link equals} function.
855
+ *
856
+ * @template T Type of the input value
857
+ * @returns A reusable `equals` function
858
+ *
859
+ * @author Jeongho Nam - https://github.com/samchon
860
+ */
861
+ export function createEquals<T>(): (input: unknown) => input is T;
862
+
863
+ /**
864
+ * @internal
865
+ */
866
+ export function createEquals<T>(): (input: unknown) => input is T {
867
+ halt("createEquals");
868
+ }
869
+
870
+ /**
871
+ * Creates a reusable {@link validateEquals} function.
872
+ *
873
+ * @danger You must configure the generic argument `T`
874
+ * @returns Nothing until you configure the generic argument `T`
875
+ * @throws compile error
876
+ *
877
+ * @author Jeongho Nam - https://github.com/samchon
878
+ */
879
+ export function createValidateEquals(): never;
880
+
881
+ /**
882
+ * Creates a reusable {@link validateEquals} function.
883
+ *
884
+ * @template T Type of the input value
885
+ * @returns A reusable `validateEquals` function
886
+ *
887
+ * @author Jeongho Nam - https://github.com/samchon
888
+ */
889
+ export function createValidateEquals<T>(): (input: unknown) => IValidation<T>;
890
+
891
+ /**
892
+ * @internal
893
+ */
894
+ export function createValidateEquals(): (input: unknown) => IValidation {
895
+ halt("createValidateEquals");
896
+ }
897
+
898
+ /**
899
+ * Creates a reusable {@link random} function.
900
+ *
901
+ * @danger You must configure the generic argument `T`
902
+ * @param generator Random data generator
903
+ * @returns Nothing until you configure the generic argument `T`
904
+ * @throws compile error
905
+ *
906
+ * @author Jeongho Nam - https://github.com/samchon
907
+ */
908
+ export function createRandom(generator?: Partial<IRandomGenerator>): never;
909
+
910
+ /**
911
+ * Creates a resuable {@link random} function.
912
+ *
913
+ * @template T Type of the input value
914
+ * @param generator Random data generator
915
+ * @returns A reusable `random` function
916
+ *
917
+ * @author Jeongho Nam - https://github.com/samchon
918
+ */
919
+ export function createRandom<T>(
920
+ generator?: Partial<IRandomGenerator>,
921
+ ): () => Resolved<T>;
922
+
923
+ /**
924
+ * @internal
925
+ */
926
+ export function createRandom(): never {
927
+ halt("createRandom");
928
+ }
929
+
930
+ /**
931
+ * @internal
932
+ */
933
+ function halt(name: string): never {
934
+ throw new Error(
935
+ `Error on typia.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
936
+ );
937
+ }