typia 7.0.1 → 7.0.2-dev.20241205

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