typia 7.2.1 → 7.3.0-dev.20241213

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