typia 7.0.2 → 7.1.0-dev.20241209

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