typia 9.3.0-dev.20250511 → 9.3.0

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