typia 9.0.0 → 9.1.0-dev.20250408

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