typia 9.1.1 → 9.3.0-dev.20250511

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