typia 7.0.0-dev.20241005 → 7.0.0-dev.20241008

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 (586) hide show
  1. package/lib/IRandomGenerator.d.ts +17 -21
  2. package/lib/factories/ExpressionFactory.d.ts +1 -1
  3. package/lib/factories/ExpressionFactory.js +2 -2
  4. package/lib/factories/ExpressionFactory.js.map +1 -1
  5. package/lib/factories/LiteralFactory.d.ts +1 -1
  6. package/lib/factories/LiteralFactory.js +20 -17
  7. package/lib/factories/LiteralFactory.js.map +1 -1
  8. package/lib/factories/MetadataCommentTagFactory.js +28 -6
  9. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  10. package/lib/factories/ValueFactory.d.ts +1 -1
  11. package/lib/index.mjs +184 -1437
  12. package/lib/index.mjs.map +1 -1
  13. package/lib/internal/$randomArray.d.ts +1 -1
  14. package/lib/internal/$randomArray.js +1 -0
  15. package/lib/internal/$randomArray.js.map +1 -1
  16. package/lib/internal/$randomBigint.d.ts +1 -1
  17. package/lib/internal/$randomBigint.js +1 -6
  18. package/lib/internal/$randomBigint.js.map +1 -1
  19. package/lib/internal/$randomFormatByte.d.ts +1 -0
  20. package/lib/internal/$randomFormatByte.js +7 -0
  21. package/lib/internal/$randomFormatByte.js.map +1 -0
  22. package/lib/internal/$randomFormatDate.js +1 -0
  23. package/lib/internal/$randomFormatDate.js.map +1 -1
  24. package/lib/internal/$randomFormatDatetime.js +1 -0
  25. package/lib/internal/$randomFormatDatetime.js.map +1 -1
  26. package/lib/internal/$randomFormatDuration.js +1 -0
  27. package/lib/internal/$randomFormatDuration.js.map +1 -1
  28. package/lib/internal/$randomFormatIpv4.js +1 -0
  29. package/lib/internal/$randomFormatIpv4.js.map +1 -1
  30. package/lib/internal/$randomFormatIpv6.js +1 -0
  31. package/lib/internal/$randomFormatIpv6.js.map +1 -1
  32. package/lib/internal/$randomFormatRelativeJsonPointer.js +5 -5
  33. package/lib/internal/$randomFormatRelativeJsonPointer.js.map +1 -1
  34. package/lib/internal/$randomFormatTime.js +2 -1
  35. package/lib/internal/$randomFormatTime.js.map +1 -1
  36. package/lib/internal/$randomFormatUuid.d.ts +1 -0
  37. package/lib/internal/{$randomUuid.js → $randomFormatUuid.js} +4 -4
  38. package/lib/internal/$randomFormatUuid.js.map +1 -0
  39. package/lib/internal/$randomInteger.d.ts +1 -1
  40. package/lib/internal/$randomInteger.js +7 -4
  41. package/lib/internal/$randomInteger.js.map +1 -1
  42. package/lib/internal/$randomNumber.d.ts +1 -1
  43. package/lib/internal/$randomNumber.js +14 -11
  44. package/lib/internal/$randomNumber.js.map +1 -1
  45. package/lib/internal/$randomPick.js +1 -0
  46. package/lib/internal/$randomPick.js.map +1 -1
  47. package/lib/internal/$randomString.d.ts +1 -1
  48. package/lib/internal/$randomString.js +4 -1
  49. package/lib/internal/$randomString.js.map +1 -1
  50. package/lib/llm.d.ts +2 -4
  51. package/lib/llm.js +1 -28
  52. package/lib/llm.js.map +1 -1
  53. package/lib/module.d.ts +4 -8
  54. package/lib/module.js +3 -7
  55. package/lib/module.js.map +1 -1
  56. package/lib/programmers/AssertProgrammer.d.ts +5 -2
  57. package/lib/programmers/AssertProgrammer.js +12 -5
  58. package/lib/programmers/AssertProgrammer.js.map +1 -1
  59. package/lib/programmers/FeatureProgrammer.js +1 -1
  60. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  61. package/lib/programmers/ImportProgrammer.d.ts +25 -4
  62. package/lib/programmers/ImportProgrammer.js +67 -31
  63. package/lib/programmers/ImportProgrammer.js.map +1 -1
  64. package/lib/programmers/RandomProgrammer.js +303 -282
  65. package/lib/programmers/RandomProgrammer.js.map +1 -1
  66. package/lib/programmers/ValidateProgrammer.js +10 -4
  67. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  68. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +1 -1
  69. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
  70. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.d.ts +1 -0
  71. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js +14 -5
  72. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js.map +1 -1
  73. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +5 -1
  74. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
  75. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +1 -0
  76. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
  77. package/lib/programmers/helpers/FunctionProgrammer.d.ts +1 -8
  78. package/lib/programmers/helpers/FunctionProgrammer.js +2 -24
  79. package/lib/programmers/helpers/FunctionProgrammer.js.map +1 -1
  80. package/lib/programmers/helpers/RandomJoiner.d.ts +6 -11
  81. package/lib/programmers/helpers/RandomJoiner.js +68 -41
  82. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  83. package/lib/programmers/helpers/disable_function_programmer_declare.js +1 -4
  84. package/lib/programmers/helpers/disable_function_programmer_declare.js.map +1 -1
  85. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +4 -1
  86. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  87. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +4 -1
  88. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  89. package/lib/programmers/http/HttpAssertQueryProgrammer.js +4 -1
  90. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  91. package/lib/programmers/http/HttpFormDataProgrammer.js +10 -6
  92. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  93. package/lib/programmers/http/HttpHeadersProgrammer.js +10 -6
  94. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  95. package/lib/programmers/http/HttpQueryProgrammer.js +10 -6
  96. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  97. package/lib/programmers/http/HttpValidateFormDataProgrammer.js +5 -3
  98. package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -1
  99. package/lib/programmers/http/HttpValidateHeadersProgrammer.js +5 -3
  100. package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
  101. package/lib/programmers/http/HttpValidateQueryProgrammer.js +5 -3
  102. package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
  103. package/lib/programmers/json/JsonAssertParseProgrammer.js +14 -7
  104. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  105. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +4 -1
  106. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  107. package/lib/programmers/json/JsonIsParseProgrammer.js +10 -6
  108. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  109. package/lib/programmers/json/JsonValidateParseProgrammer.js +16 -4
  110. package/lib/programmers/json/JsonValidateParseProgrammer.js.map +1 -1
  111. package/lib/programmers/json/JsonValidateStringifyProgrammer.js +7 -3
  112. package/lib/programmers/json/JsonValidateStringifyProgrammer.js.map +1 -1
  113. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +4 -1
  114. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  115. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +4 -1
  116. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  117. package/lib/programmers/misc/MiscCloneProgrammer.js +10 -6
  118. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  119. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +5 -3
  120. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  121. package/lib/programmers/misc/MiscValidatePruneProgrammer.js +10 -4
  122. package/lib/programmers/misc/MiscValidatePruneProgrammer.js.map +1 -1
  123. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +4 -1
  124. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  125. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +2 -1
  126. package/lib/programmers/notations/NotationGeneralProgrammer.js +13 -5
  127. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  128. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +5 -3
  129. package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -1
  130. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +4 -1
  131. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  132. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +4 -1
  133. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  134. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +10 -6
  135. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  136. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +5 -3
  137. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  138. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js +7 -3
  139. package/lib/programmers/protobuf/ProtobufValidateEncodeProgrammer.js.map +1 -1
  140. package/lib/transformers/features/json/JsonApplicationTransformer.js +1 -1
  141. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  142. package/lib/transformers/features/llm/LlmApplicationTransformer.js +2 -2
  143. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  144. package/lib/transformers/features/llm/LlmSchemaTransformer.js +1 -1
  145. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  146. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -1
  147. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  148. package/package.json +1 -1
  149. package/src/CamelCase.ts +75 -75
  150. package/src/IRandomGenerator.ts +11 -27
  151. package/src/PascalCase.ts +71 -71
  152. package/src/Primitive.ts +92 -92
  153. package/src/Resolved.ts +74 -74
  154. package/src/SnakeCase.ts +126 -126
  155. package/src/executable/TypiaGenerateWizard.ts +83 -83
  156. package/src/executable/TypiaPatchWizard.ts +42 -42
  157. package/src/executable/TypiaSetupWizard.ts +174 -174
  158. package/src/executable/setup/ArgumentParser.ts +42 -42
  159. package/src/executable/setup/CommandExecutor.ts +8 -8
  160. package/src/executable/setup/FileRetriever.ts +19 -19
  161. package/src/executable/setup/PackageManager.ts +87 -87
  162. package/src/executable/setup/PluginConfigurator.ts +69 -69
  163. package/src/executable/typia.ts +55 -55
  164. package/src/factories/CommentFactory.ts +79 -79
  165. package/src/factories/ExpressionFactory.ts +164 -164
  166. package/src/factories/IdentifierFactory.ts +89 -89
  167. package/src/factories/LiteralFactory.ts +18 -15
  168. package/src/factories/MetadataCollection.ts +278 -278
  169. package/src/factories/MetadataCommentTagFactory.ts +650 -622
  170. package/src/factories/MetadataFactory.ts +400 -400
  171. package/src/factories/MetadataTypeTagFactory.ts +385 -385
  172. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  173. package/src/factories/NumericRangeFactory.ts +72 -72
  174. package/src/factories/StatementFactory.ts +90 -90
  175. package/src/factories/TemplateFactory.ts +64 -64
  176. package/src/factories/TypeFactory.ts +140 -140
  177. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +16 -16
  178. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  179. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  180. package/src/factories/internal/metadata/emplace_metadata_object.ts +206 -206
  181. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  182. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  183. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  184. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  185. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  186. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  187. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  188. package/src/factories/internal/metadata/iterate_metadata_collection.ts +145 -145
  189. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  190. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  191. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  192. package/src/factories/internal/metadata/iterate_metadata_function.ts +88 -88
  193. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +216 -216
  194. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  195. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  196. package/src/factories/internal/metadata/iterate_metadata_object.ts +27 -27
  197. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  198. package/src/factories/internal/metadata/iterate_metadata_sort.ts +83 -83
  199. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  200. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  201. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  202. package/src/internal/$accessExpressionAsString.ts +46 -46
  203. package/src/internal/$assertGuard.ts +13 -13
  204. package/src/internal/$functionalTypeGuardErrorFactory.ts +4 -4
  205. package/src/internal/$httpFormDataReadArray.ts +4 -4
  206. package/src/internal/$httpFormDataReadBigint.ts +18 -18
  207. package/src/internal/$httpFormDataReadBlob.ts +10 -10
  208. package/src/internal/$httpFormDataReadBoolean.ts +16 -16
  209. package/src/internal/$httpFormDataReadFile.ts +10 -10
  210. package/src/internal/$httpFormDataReadNumber.ts +15 -15
  211. package/src/internal/$httpFormDataReadString.ts +10 -10
  212. package/src/internal/$httpHeaderReadBigint.ts +10 -10
  213. package/src/internal/$httpHeaderReadBoolean.ts +8 -8
  214. package/src/internal/$httpHeaderReadNumber.ts +7 -7
  215. package/src/internal/$httpParameterBigint.ts +10 -10
  216. package/src/internal/$httpParameterBoolean.ts +8 -8
  217. package/src/internal/$httpParameterNumber.ts +7 -7
  218. package/src/internal/$httpParameterString.ts +2 -2
  219. package/src/internal/$httpQueryParseURLSearchParams.ts +10 -10
  220. package/src/internal/$httpQueryReadArray.ts +4 -4
  221. package/src/internal/$httpQueryReadBigint.ts +12 -12
  222. package/src/internal/$httpQueryReadBoolean.ts +14 -14
  223. package/src/internal/$httpQueryReadNumber.ts +9 -9
  224. package/src/internal/$httpQueryReadString.ts +4 -4
  225. package/src/internal/$isBetween.ts +2 -2
  226. package/src/internal/$isBigintString.ts +8 -8
  227. package/src/internal/$jsonStringifyNumber.ts +12 -12
  228. package/src/internal/$jsonStringifyRest.ts +3 -3
  229. package/src/internal/$jsonStringifyString.ts +43 -43
  230. package/src/internal/$jsonStringifyTail.ts +2 -2
  231. package/src/internal/$llmApplicationFinalize.ts +18 -18
  232. package/src/internal/$miscCloneAny.ts +48 -48
  233. package/src/internal/$notationAny.ts +37 -37
  234. package/src/internal/$notationCamel.ts +13 -13
  235. package/src/internal/$notationPascal.ts +8 -8
  236. package/src/internal/$notationSnake.ts +43 -43
  237. package/src/internal/$randomArray.ts +21 -20
  238. package/src/internal/$randomBigint.ts +6 -15
  239. package/src/internal/$randomBoolean.ts +1 -1
  240. package/src/internal/{$randomByte.ts → $randomFormatByte.ts} +3 -3
  241. package/src/internal/$randomFormatDate.ts +18 -17
  242. package/src/internal/$randomFormatDatetime.ts +16 -15
  243. package/src/internal/$randomFormatDuration.ts +27 -26
  244. package/src/internal/$randomFormatEmail.ts +11 -11
  245. package/src/internal/$randomFormatHostname.ts +6 -6
  246. package/src/internal/$randomFormatIdnEmail.ts +3 -3
  247. package/src/internal/$randomFormatIdnHostname.ts +3 -3
  248. package/src/internal/$randomFormatIpv4.ts +11 -10
  249. package/src/internal/$randomFormatIpv6.ts +11 -10
  250. package/src/internal/$randomFormatIri.ts +3 -3
  251. package/src/internal/$randomFormatIriReference.ts +3 -3
  252. package/src/internal/$randomFormatJsonPointer.ts +7 -7
  253. package/src/internal/$randomFormatPassword.ts +8 -8
  254. package/src/internal/$randomFormatRegex.ts +4 -4
  255. package/src/internal/$randomFormatRelativeJsonPointer.ts +8 -8
  256. package/src/internal/$randomFormatTime.ts +14 -13
  257. package/src/internal/$randomFormatUri.ts +3 -3
  258. package/src/internal/$randomFormatUriReference.ts +3 -3
  259. package/src/internal/$randomFormatUriTemplate.ts +3 -3
  260. package/src/internal/$randomFormatUrl.ts +11 -11
  261. package/src/internal/{$randomUuid.ts → $randomFormatUuid.ts} +6 -6
  262. package/src/internal/$randomInteger.ts +47 -44
  263. package/src/internal/$randomNumber.ts +74 -71
  264. package/src/internal/$randomPattern.ts +10 -10
  265. package/src/internal/$randomPick.ts +9 -8
  266. package/src/internal/$randomString.ts +24 -24
  267. package/src/internal/$throwTypeGuardError.ts +5 -5
  268. package/src/internal/$validateReport.ts +13 -13
  269. package/src/internal/private/$__notationCapitalize.ts +2 -2
  270. package/src/internal/private/$__notationUnsnake.ts +24 -24
  271. package/src/json.ts +651 -651
  272. package/src/llm.ts +178 -186
  273. package/src/module.ts +933 -945
  274. package/src/programmers/AssertProgrammer.ts +15 -17
  275. package/src/programmers/FeatureProgrammer.ts +616 -616
  276. package/src/programmers/ImportProgrammer.ts +125 -50
  277. package/src/programmers/RandomProgrammer.ts +425 -394
  278. package/src/programmers/ValidateProgrammer.ts +13 -9
  279. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  280. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  281. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  282. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  283. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  284. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  285. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -123
  286. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -281
  287. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -134
  288. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  289. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  290. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  291. package/src/programmers/helpers/FunctionProgrammer.ts +67 -101
  292. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  293. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  294. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  295. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  296. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  297. package/src/programmers/helpers/RandomJoiner.ts +168 -162
  298. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  299. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  300. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  301. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  302. package/src/programmers/helpers/disable_function_programmer_declare.ts +1 -4
  303. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +4 -1
  304. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +4 -1
  305. package/src/programmers/http/HttpAssertQueryProgrammer.ts +4 -1
  306. package/src/programmers/http/HttpFormDataProgrammer.ts +5 -9
  307. package/src/programmers/http/HttpHeadersProgrammer.ts +5 -9
  308. package/src/programmers/http/HttpQueryProgrammer.ts +5 -9
  309. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +5 -3
  310. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +5 -3
  311. package/src/programmers/http/HttpValidateQueryProgrammer.ts +5 -3
  312. package/src/programmers/internal/application_array.ts +56 -56
  313. package/src/programmers/internal/application_bigint.ts +25 -25
  314. package/src/programmers/internal/application_boolean.ts +25 -25
  315. package/src/programmers/internal/application_description.ts +12 -12
  316. package/src/programmers/internal/application_escaped.ts +96 -96
  317. package/src/programmers/internal/application_number.ts +25 -25
  318. package/src/programmers/internal/application_plugin.ts +19 -19
  319. package/src/programmers/internal/application_string.ts +25 -25
  320. package/src/programmers/internal/application_templates.ts +64 -64
  321. package/src/programmers/internal/application_title.ts +20 -20
  322. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  323. package/src/programmers/internal/application_v30_alias.ts +59 -59
  324. package/src/programmers/internal/application_v30_native.ts +29 -29
  325. package/src/programmers/internal/application_v30_object.ts +165 -165
  326. package/src/programmers/internal/application_v30_schema.ts +220 -220
  327. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  328. package/src/programmers/internal/application_v31_alias.ts +47 -47
  329. package/src/programmers/internal/application_v31_constant.ts +29 -29
  330. package/src/programmers/internal/application_v31_native.ts +25 -25
  331. package/src/programmers/internal/application_v31_object.ts +147 -147
  332. package/src/programmers/internal/application_v31_schema.ts +215 -215
  333. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  334. package/src/programmers/internal/check_array_length.ts +46 -46
  335. package/src/programmers/internal/check_bigint.ts +49 -49
  336. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  337. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  338. package/src/programmers/internal/check_everything.ts +23 -23
  339. package/src/programmers/internal/check_native.ts +27 -27
  340. package/src/programmers/internal/check_number.ts +111 -111
  341. package/src/programmers/internal/check_object.ts +75 -75
  342. package/src/programmers/internal/check_string.ts +49 -49
  343. package/src/programmers/internal/check_template.ts +48 -48
  344. package/src/programmers/internal/check_union_array_like.ts +334 -334
  345. package/src/programmers/internal/decode_union_object.ts +116 -116
  346. package/src/programmers/internal/feature_object_entries.ts +61 -61
  347. package/src/programmers/internal/llm_schema_array.ts +22 -22
  348. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  349. package/src/programmers/internal/llm_schema_native.ts +17 -17
  350. package/src/programmers/internal/llm_schema_object.ts +132 -132
  351. package/src/programmers/internal/llm_schema_station.ts +190 -190
  352. package/src/programmers/internal/llm_schema_tuple.ts +31 -31
  353. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  354. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  355. package/src/programmers/internal/prune_object_properties.ts +63 -63
  356. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  357. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  358. package/src/programmers/internal/template_to_pattern.ts +23 -23
  359. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  360. package/src/programmers/json/JsonAssertParseProgrammer.ts +9 -10
  361. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +4 -1
  362. package/src/programmers/json/JsonIsParseProgrammer.ts +5 -9
  363. package/src/programmers/json/JsonValidateParseProgrammer.ts +19 -9
  364. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +8 -3
  365. package/src/programmers/llm/LlmApplicationProgrammer.ts +235 -235
  366. package/src/programmers/llm/LlmSchemaProgrammer.ts +51 -51
  367. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +4 -1
  368. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +4 -1
  369. package/src/programmers/misc/MiscCloneProgrammer.ts +5 -9
  370. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +5 -3
  371. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +13 -9
  372. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +4 -1
  373. package/src/programmers/notations/NotationGeneralProgrammer.ts +27 -23
  374. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +5 -3
  375. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +4 -1
  376. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +4 -1
  377. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +5 -8
  378. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  379. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +5 -3
  380. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +8 -3
  381. package/src/protobuf.ts +868 -868
  382. package/src/schemas/json/IJsonApplication.ts +22 -22
  383. package/src/schemas/metadata/IMetadata.ts +36 -36
  384. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  385. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  386. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  387. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  388. package/src/schemas/metadata/Metadata.ts +616 -616
  389. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  390. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  391. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  392. package/src/schemas/metadata/MetadataObject.ts +139 -139
  393. package/src/schemas/metadata/MetadataParameter.ts +50 -50
  394. package/src/tags/Constant.ts +15 -15
  395. package/src/tags/Default.ts +22 -22
  396. package/src/tags/Example.ts +17 -17
  397. package/src/tags/Examples.ts +16 -16
  398. package/src/tags/ExclusiveMaximum.ts +25 -25
  399. package/src/tags/ExclusiveMinimum.ts +25 -25
  400. package/src/tags/JsonSchemaPlugin.ts +8 -8
  401. package/src/tags/Maximum.ts +19 -19
  402. package/src/tags/Minimum.ts +19 -19
  403. package/src/tags/MultipleOf.ts +21 -21
  404. package/src/tags/Pattern.ts +31 -31
  405. package/src/tags/Type.ts +32 -32
  406. package/src/tags/index.ts +20 -20
  407. package/src/transformers/ITransformOptions.ts +62 -62
  408. package/src/transformers/ImportTransformer.ts +66 -66
  409. package/src/transformers/features/json/JsonApplicationTransformer.ts +1 -1
  410. package/src/transformers/features/llm/LlmApplicationTransformer.ts +2 -2
  411. package/src/transformers/features/llm/LlmSchemaTransformer.ts +1 -1
  412. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +1 -1
  413. package/src/typings/Equal.ts +18 -18
  414. package/src/typings/IsTuple.ts +9 -9
  415. package/src/typings/NativeClass.ts +23 -23
  416. package/src/typings/ValueOf.ts +20 -20
  417. package/src/utils/Escaper.ts +50 -50
  418. package/src/utils/MapUtil.ts +14 -14
  419. package/src/utils/NameEncoder.ts +32 -32
  420. package/src/utils/NamingConvention.ts +94 -94
  421. package/src/utils/StringUtil.ts +16 -16
  422. package/lib/functional/$FormDataReader/$FormDataReader.d.ts +0 -7
  423. package/lib/functional/$FormDataReader/$FormDataReader.js +0 -86
  424. package/lib/functional/$FormDataReader/$FormDataReader.js.map +0 -1
  425. package/lib/functional/$FormDataReader/index.d.ts +0 -1
  426. package/lib/functional/$FormDataReader/index.js +0 -28
  427. package/lib/functional/$FormDataReader/index.js.map +0 -1
  428. package/lib/functional/$HeadersReader/$HeadersReader.d.ts +0 -4
  429. package/lib/functional/$HeadersReader/$HeadersReader.js +0 -36
  430. package/lib/functional/$HeadersReader/$HeadersReader.js.map +0 -1
  431. package/lib/functional/$HeadersReader/index.d.ts +0 -1
  432. package/lib/functional/$HeadersReader/index.js +0 -28
  433. package/lib/functional/$HeadersReader/index.js.map +0 -1
  434. package/lib/functional/$ParameterReader/$ParameterReader.d.ts +0 -4
  435. package/lib/functional/$ParameterReader/$ParameterReader.js +0 -36
  436. package/lib/functional/$ParameterReader/$ParameterReader.js.map +0 -1
  437. package/lib/functional/$ParameterReader/index.d.ts +0 -1
  438. package/lib/functional/$ParameterReader/index.js +0 -28
  439. package/lib/functional/$ParameterReader/index.js.map +0 -1
  440. package/lib/functional/$ProtobufReader.d.ts +0 -35
  441. package/lib/functional/$ProtobufReader.js +0 -166
  442. package/lib/functional/$ProtobufReader.js.map +0 -1
  443. package/lib/functional/$ProtobufSizer.d.ts +0 -36
  444. package/lib/functional/$ProtobufSizer.js +0 -118
  445. package/lib/functional/$ProtobufSizer.js.map +0 -1
  446. package/lib/functional/$ProtobufWriter.d.ts +0 -45
  447. package/lib/functional/$ProtobufWriter.js +0 -104
  448. package/lib/functional/$ProtobufWriter.js.map +0 -1
  449. package/lib/functional/$QueryReader/$QueryReader.d.ts +0 -6
  450. package/lib/functional/$QueryReader/$QueryReader.js +0 -55
  451. package/lib/functional/$QueryReader/$QueryReader.js.map +0 -1
  452. package/lib/functional/$QueryReader/index.d.ts +0 -1
  453. package/lib/functional/$QueryReader/index.js +0 -28
  454. package/lib/functional/$QueryReader/index.js.map +0 -1
  455. package/lib/functional/$any.d.ts +0 -1
  456. package/lib/functional/$any.js +0 -7
  457. package/lib/functional/$any.js.map +0 -1
  458. package/lib/functional/$clone.d.ts +0 -2
  459. package/lib/functional/$clone.js +0 -100
  460. package/lib/functional/$clone.js.map +0 -1
  461. package/lib/functional/$convention.d.ts +0 -1
  462. package/lib/functional/$convention.js +0 -60
  463. package/lib/functional/$convention.js.map +0 -1
  464. package/lib/functional/$dictionary.d.ts +0 -2
  465. package/lib/functional/$dictionary.js +0 -18
  466. package/lib/functional/$dictionary.js.map +0 -1
  467. package/lib/functional/$guard.d.ts +0 -1
  468. package/lib/functional/$guard.js +0 -21
  469. package/lib/functional/$guard.js.map +0 -1
  470. package/lib/functional/$is_between.d.ts +0 -1
  471. package/lib/functional/$is_between.js +0 -8
  472. package/lib/functional/$is_between.js.map +0 -1
  473. package/lib/functional/$join.d.ts +0 -1
  474. package/lib/functional/$join.js +0 -50
  475. package/lib/functional/$join.js.map +0 -1
  476. package/lib/functional/$number.d.ts +0 -1
  477. package/lib/functional/$number.js +0 -16
  478. package/lib/functional/$number.js.map +0 -1
  479. package/lib/functional/$report.d.ts +0 -2
  480. package/lib/functional/$report.js +0 -18
  481. package/lib/functional/$report.js.map +0 -1
  482. package/lib/functional/$rest.d.ts +0 -1
  483. package/lib/functional/$rest.js +0 -8
  484. package/lib/functional/$rest.js.map +0 -1
  485. package/lib/functional/$stoll.d.ts +0 -1
  486. package/lib/functional/$stoll.js +0 -14
  487. package/lib/functional/$stoll.js.map +0 -1
  488. package/lib/functional/$string.d.ts +0 -1
  489. package/lib/functional/$string.js +0 -43
  490. package/lib/functional/$string.js.map +0 -1
  491. package/lib/functional/$strlen.d.ts +0 -1
  492. package/lib/functional/$strlen.js +0 -13
  493. package/lib/functional/$strlen.js.map +0 -1
  494. package/lib/functional/$tail.d.ts +0 -1
  495. package/lib/functional/$tail.js +0 -11
  496. package/lib/functional/$tail.js.map +0 -1
  497. package/lib/functional/$throws.d.ts +0 -2
  498. package/lib/functional/$throws.js +0 -22
  499. package/lib/functional/$throws.js.map +0 -1
  500. package/lib/functional/IProtobufWriter.d.ts +0 -15
  501. package/lib/functional/IProtobufWriter.js +0 -3
  502. package/lib/functional/IProtobufWriter.js.map +0 -1
  503. package/lib/functional/Namespace/functional.d.ts +0 -4
  504. package/lib/functional/Namespace/functional.js +0 -9
  505. package/lib/functional/Namespace/functional.js.map +0 -1
  506. package/lib/functional/Namespace/http.d.ts +0 -8
  507. package/lib/functional/Namespace/http.js +0 -16
  508. package/lib/functional/Namespace/http.js.map +0 -1
  509. package/lib/functional/Namespace/index.d.ts +0 -30
  510. package/lib/functional/Namespace/index.js +0 -85
  511. package/lib/functional/Namespace/index.js.map +0 -1
  512. package/lib/functional/Namespace/json.d.ts +0 -9
  513. package/lib/functional/Namespace/json.js +0 -23
  514. package/lib/functional/Namespace/json.js.map +0 -1
  515. package/lib/functional/Namespace/llm.d.ts +0 -4
  516. package/lib/functional/Namespace/llm.js +0 -44
  517. package/lib/functional/Namespace/llm.js.map +0 -1
  518. package/lib/functional/Namespace/misc.d.ts +0 -11
  519. package/lib/functional/Namespace/misc.js +0 -22
  520. package/lib/functional/Namespace/misc.js.map +0 -1
  521. package/lib/functional/Namespace/notations.d.ts +0 -18
  522. package/lib/functional/Namespace/notations.js +0 -26
  523. package/lib/functional/Namespace/notations.js.map +0 -1
  524. package/lib/functional/Namespace/protobuf.d.ts +0 -17
  525. package/lib/functional/Namespace/protobuf.js +0 -25
  526. package/lib/functional/Namespace/protobuf.js.map +0 -1
  527. package/lib/functional/is.d.ts +0 -1
  528. package/lib/functional/is.js +0 -14
  529. package/lib/functional/is.js.map +0 -1
  530. package/lib/internal/$randomByte.d.ts +0 -1
  531. package/lib/internal/$randomByte.js +0 -7
  532. package/lib/internal/$randomByte.js.map +0 -1
  533. package/lib/internal/$randomUuid.d.ts +0 -1
  534. package/lib/internal/$randomUuid.js.map +0 -1
  535. package/lib/programmers/helpers/RandomRanger.d.ts +0 -33
  536. package/lib/programmers/helpers/RandomRanger.js +0 -158
  537. package/lib/programmers/helpers/RandomRanger.js.map +0 -1
  538. package/lib/programmers/internal/random_custom.d.ts +0 -1
  539. package/lib/programmers/internal/random_custom.js +0 -23
  540. package/lib/programmers/internal/random_custom.js.map +0 -1
  541. package/lib/utils/RandomGenerator/RandomGenerator.d.ts +0 -31
  542. package/lib/utils/RandomGenerator/RandomGenerator.js +0 -176
  543. package/lib/utils/RandomGenerator/RandomGenerator.js.map +0 -1
  544. package/lib/utils/RandomGenerator/index.d.ts +0 -1
  545. package/lib/utils/RandomGenerator/index.js +0 -28
  546. package/lib/utils/RandomGenerator/index.js.map +0 -1
  547. package/src/functional/$FormDataReader/$FormDataReader.ts +0 -83
  548. package/src/functional/$FormDataReader/index.ts +0 -1
  549. package/src/functional/$HeadersReader/$HeadersReader.ts +0 -26
  550. package/src/functional/$HeadersReader/index.ts +0 -1
  551. package/src/functional/$ParameterReader/$ParameterReader.ts +0 -29
  552. package/src/functional/$ParameterReader/index.ts +0 -1
  553. package/src/functional/$ProtobufReader.ts +0 -194
  554. package/src/functional/$ProtobufSizer.ts +0 -144
  555. package/src/functional/$ProtobufWriter.ts +0 -145
  556. package/src/functional/$QueryReader/$QueryReader.ts +0 -46
  557. package/src/functional/$QueryReader/index.ts +0 -1
  558. package/src/functional/$any.ts +0 -3
  559. package/src/functional/$clone.ts +0 -48
  560. package/src/functional/$convention.ts +0 -37
  561. package/src/functional/$dictionary.ts +0 -22
  562. package/src/functional/$guard.ts +0 -21
  563. package/src/functional/$is_between.ts +0 -2
  564. package/src/functional/$join.ts +0 -46
  565. package/src/functional/$number.ts +0 -12
  566. package/src/functional/$report.ts +0 -13
  567. package/src/functional/$rest.ts +0 -3
  568. package/src/functional/$stoll.ts +0 -8
  569. package/src/functional/$string.ts +0 -43
  570. package/src/functional/$strlen.ts +0 -7
  571. package/src/functional/$tail.ts +0 -5
  572. package/src/functional/$throws.ts +0 -10
  573. package/src/functional/IProtobufWriter.ts +0 -18
  574. package/src/functional/Namespace/functional.ts +0 -5
  575. package/src/functional/Namespace/http.ts +0 -9
  576. package/src/functional/Namespace/index.ts +0 -75
  577. package/src/functional/Namespace/json.ts +0 -15
  578. package/src/functional/Namespace/llm.ts +0 -20
  579. package/src/functional/Namespace/misc.ts +0 -14
  580. package/src/functional/Namespace/notations.ts +0 -23
  581. package/src/functional/Namespace/protobuf.ts +0 -20
  582. package/src/functional/is.ts +0 -10
  583. package/src/programmers/helpers/RandomRanger.ts +0 -225
  584. package/src/programmers/internal/random_custom.ts +0 -39
  585. package/src/utils/RandomGenerator/RandomGenerator.ts +0 -119
  586. package/src/utils/RandomGenerator/index.ts +0 -1
package/src/module.ts CHANGED
@@ -1,945 +1,933 @@
1
- import * as Namespace from "./functional/Namespace";
2
-
3
- import { AssertionGuard } from "./AssertionGuard";
4
- import { IRandomGenerator } from "./IRandomGenerator";
5
- import { IValidation } from "./IValidation";
6
- import { Resolved } from "./Resolved";
7
- import { TypeGuardError } from "./TypeGuardError";
8
-
9
- export * as functional from "./functional";
10
- export * as http from "./http";
11
- export * as llm from "./llm";
12
- export * as json from "./json";
13
- export * as misc from "./misc";
14
- export * as notations from "./notations";
15
- export * as protobuf from "./protobuf";
16
- export * as reflect from "./reflect";
17
- export * as tags from "./tags";
18
-
19
- export * from "./schemas/metadata/IJsDocTagInfo";
20
- export * from "./schemas/json/IJsonApplication";
21
- export * from "./AssertionGuard";
22
- export * from "./IRandomGenerator";
23
- export * from "./IValidation";
24
- export * from "./TypeGuardError";
25
-
26
- export * from "./Primitive";
27
- export * from "./Resolved";
28
- export * from "./CamelCase";
29
- export * from "./PascalCase";
30
- export * from "./SnakeCase";
31
-
32
- /* -----------------------------------------------------------
33
- BASIC VALIDATORS
34
- ----------------------------------------------------------- */
35
- /**
36
- * Asserts a value type.
37
- *
38
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
39
- * reason, if the parametric value is not following the type `T`. Otherwise, the
40
- * value is following the type `T`, just input parameter would be returned.
41
- *
42
- * If what you want is not asserting but just knowing whether the parametric value is
43
- * following the type `T` or not, you can choose the {@link is} function instead.
44
- * Otherwise you want to know all the errors, {@link validate} is the way to go.
45
- * Also, if you want to automatically cast the parametric value to the type `T`
46
- * when no problem (perform the assertion guard of type).
47
- *
48
- * On the other and, if you don't want to allow any superfluous property that is not
49
- * enrolled to the type `T`, you can use {@link assertEquals} function instead.
50
- *
51
- * @template T Type of the input value
52
- * @param input A value to be asserted
53
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
54
- * @returns Parametric input value
55
- * @throws A {@link TypeGuardError} instance with detailed reason
56
- *
57
- * @author Jeongho Nam - https://github.com/samchon
58
- */
59
- export function assert<T>(
60
- input: T,
61
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
62
- ): T;
63
-
64
- /**
65
- * Asserts a value type.
66
- *
67
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
68
- * reason, if the parametric value is not following the type `T`. Otherwise, the
69
- * value is following the type `T`, just input parameter would be returned.
70
- *
71
- * If what you want is not asserting but just knowing whether the parametric value is
72
- * following the type `T` or not, you can choose the {@link is} function instead.
73
- * Otherwise, you want to know all the errors, {@link validate} is the way to go.
74
- *
75
- * On the other and, if you don't want to allow any superfluous property that is not
76
- * enrolled to the type `T`, you can use {@link assertEquals} function instead.
77
- *
78
- * @template T Type of the input value
79
- * @param input A value to be asserted
80
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
81
- * @returns Parametric input value casted as `T`
82
- * @throws A {@link TypeGuardError} instance with detailed reason
83
- *
84
- * @author Jeongho Nam - https://github.com/samchon
85
- */
86
- export function assert<T>(
87
- input: unknown,
88
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
89
- ): T;
90
-
91
- /**
92
- * @internal
93
- */
94
- export function assert(): never {
95
- halt("assert");
96
- }
97
-
98
- /**
99
- * Assertion guard of a value type.
100
- *
101
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
102
- * reason, if the parametric value is not following the type `T`. Otherwise, the
103
- * value is following the type `T`, nothing would be returned, but the input value
104
- * would be automatically casted to the type `T`. This is the concept of
105
- * "Assertion Guard" of a value type.
106
- *
107
- * If what you want is not asserting but just knowing whether the parametric value is
108
- * following the type `T` or not, you can choose the {@link is} function instead.
109
- * Otherwise you want to know all the errors, {@link validate} is the way to go.
110
- * Also, if you want to returns the parametric value when no problem, you can use
111
- * {@link assert} function instead.
112
- *
113
- * On the other and, if you don't want to allow any superfluous property that is not
114
- * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
115
- *
116
- * @template T Type of the input value
117
- * @param input A value to be asserted
118
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
119
- * @throws A {@link TypeGuardError} instance with detailed reason
120
- *
121
- * @author Jeongho Nam - https://github.com/samchon
122
- */
123
- export function assertGuard<T>(
124
- input: T,
125
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
126
- ): asserts input is T;
127
-
128
- /**
129
- * Assertion guard of a value type.
130
- *
131
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
132
- * reason, if the parametric value is not following the type `T`. Otherwise, the
133
- * value is following the type `T`, nothing would be returned, but the input value
134
- * would be automatically casted to the type `T`. This is the concept of
135
- * "Assertion Guard" of a value type.
136
- *
137
- * If what you want is not asserting but just knowing whether the parametric value is
138
- * following the type `T` or not, you can choose the {@link is} function instead.
139
- * Otherwise you want to know all the errors, {@link validate} is the way to go.
140
- * Also, if you want to returns the parametric value when no problem, you can use
141
- * {@link assert} function instead.
142
- *
143
- * On the other and, if you don't want to allow any superfluous property that is not
144
- * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
145
- *
146
- * @template T Type of the input value
147
- * @param input A value to be asserted
148
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
149
- * @throws A {@link TypeGuardError} instance with detailed reason
150
- *
151
- * @author Jeongho Nam - https://github.com/samchon
152
- */
153
- export function assertGuard<T>(
154
- input: unknown,
155
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
156
- ): asserts input is T;
157
-
158
- /**
159
- * @internal
160
- */
161
- export function assertGuard(): never {
162
- halt("assertGuard");
163
- }
164
-
165
- /**
166
- * Tests a value type.
167
- *
168
- * Tests a parametric value type and returns whether it's following the type `T` or not.
169
- * If the parametric value is matched with the type `T`, `true` value would be returned.
170
- * Otherwise, the parametric value is not following the type `T`, `false` value would be
171
- * returned.
172
- *
173
- * If what you want is not just knowing whether the parametric value is following the
174
- * type `T` or not, but throwing an exception with detailed reason, you can choose
175
- * {@link assert} function instead. Also, if you want to know all the errors with
176
- * detailed reasons, {@link validate} function would be useful.
177
- *
178
- * On the other and, if you don't want to allow any superfluous property that is not
179
- * enrolled to the type `T`, you can use {@link equals} function instead.
180
- *
181
- * @template T Type of the input value
182
- * @param input A value to be tested
183
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
184
- * @returns Whether the parametric value is following the type `T` or not
185
- *
186
- * @author Jeongho Nam - https://github.com/samchon
187
- */
188
- export function is<T>(input: T): input is T;
189
-
190
- /**
191
- * Tests a value type.
192
- *
193
- * Tests a parametric value type and returns whether it's following the type `T` or not.
194
- * If the parametric value is matched with the type `T`, `true` value would be returned.
195
- * Otherwise, the parametric value is not following the type `T`, `false` value would be
196
- * returned.
197
- *
198
- * If what you want is not just knowing whether the parametric value is following the
199
- * type `T` or not, but throwing an exception with detailed reason, you can choose
200
- * {@link assert} function instead. Also, if you want to know all the errors with
201
- * detailed reasons, {@link validate} function would be useful.
202
- *
203
- * On the other and, if you don't want to allow any superfluous property that is not
204
- * enrolled to the type `T`, you can use {@link equals} function instead.
205
- *
206
- * @template T Type of the input value
207
- * @param input A value to be tested
208
- * @returns Whether the parametric value is following the type `T` or not
209
- *
210
- * @author Jeongho Nam - https://github.com/samchon
211
- */
212
- export function is<T>(input: unknown): input is T;
213
-
214
- /**
215
- * @internal
216
- */
217
- export function is(): never {
218
- halt("is");
219
- }
220
-
221
- /**
222
- * Validates a value type.
223
- *
224
- * Validates a parametric value type and archives all the type errors into an
225
- * {@link IValidation.errors} array, if the parametric value is not following the
226
- * type `T`. Of course, if the parametric value is following the type `T`, the
227
- * {@link IValidation.errors} array would be empty and {@link IValidation.success}
228
- * would have the `true` value.
229
- *
230
- * If what you want is not finding all the error, but asserting the parametric value
231
- * type with exception throwing, you can choose {@link assert} function instead.
232
- * Otherwise, you just want to know whether the parametric value is matched with the
233
- * type `T`, {@link is} function is the way to go.
234
- *
235
- * On the other and, if you don't want to allow any superfluous property that is not
236
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
237
- *
238
- * @template Type of the input value
239
- * @param input A value to be validated
240
- * @returns Validation result
241
- *
242
- * @author Jeongho Nam - https://github.com/samchon
243
- */
244
- export function validate<T>(input: T): IValidation<T>;
245
-
246
- /**
247
- * Validates a value type.
248
- *
249
- * Validates a parametric value type and archives all the type errors into an
250
- * {@link IValidation.errors} array, if the parametric value is not following the
251
- * type `T`. Of course, if the parametric value is following the type `T`, the
252
- * {@link IValidation.errors} array would be empty and {@link IValidation.success}
253
- * would have the `true` value.
254
- *
255
- * If what you want is not finding all the error, but asserting the parametric value
256
- * type with exception throwing, you can choose {@link assert} function instead.
257
- * Otherwise, you just want to know whether the parametric value is matched with the
258
- * type `T`, {@link is} function is the way to go.
259
- *
260
- * On the other and, if you don't want to allow any superfluous property that is not
261
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
262
- *
263
- * @template Type of the input value
264
- * @param input A value to be validated
265
- * @returns Validation result
266
- *
267
- * @author Jeongho Nam - https://github.com/samchon
268
- */
269
- export function validate<T>(input: unknown): IValidation<T>;
270
-
271
- /**
272
- * @internal
273
- */
274
- export function validate(): never {
275
- halt("validate");
276
- }
277
-
278
- /* -----------------------------------------------------------
279
- STRICT VALIDATORS
280
- ----------------------------------------------------------- */
281
- /**
282
- * Asserts equality between a value and its type.
283
- *
284
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
285
- * reason, if the parametric value is not following the type `T` or some superfluous
286
- * property that is not listed on the type `T` has been found. Otherwise, the value is
287
- * following the type `T` without any superfluous property, just input parameter would
288
- * be returned.
289
- *
290
- * If what you want is not asserting but just knowing whether the parametric value is
291
- * following the type `T` or not, you can choose the {@link equals} function instead.
292
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
293
- *
294
- * On the other hand, if you want to allow superfluous property that is not enrolled
295
- * to the type `T`, you can use {@link assert} function instead.
296
- *
297
- * @template T Type of the input value
298
- * @param input A value to be asserted
299
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
300
- * @returns Parametric input value
301
- * @throws A {@link TypeGuardError} instance with detailed reason
302
- *
303
- * @author Jeongho Nam - https://github.com/samchon
304
- */
305
- export function assertEquals<T>(
306
- input: T,
307
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
308
- ): T;
309
-
310
- /**
311
- * Asserts equality between a value and its type.
312
- *
313
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
314
- * reason, if the parametric value is not following the type `T` or some superfluous
315
- * property that is not listed on the type `T` has been found. Otherwise, the value is
316
- * following the type `T` without any superfluous property, just input parameter would
317
- * be returned.
318
- *
319
- * If what you want is not asserting but just knowing whether the parametric value is
320
- * following the type `T` or not, you can choose the {@link equals} function instead.
321
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
322
- *
323
- * On the other hand, if you want to allow superfluous property that is not enrolled
324
- * to the type `T`, you can use {@link assert} function instead.
325
- *
326
- * @template T Type of the input value
327
- * @param input A value to be asserted
328
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
329
- * @returns Parametric input value casted as `T`
330
- * @throws A {@link TypeGuardError} instance with detailed reason
331
- *
332
- * @author Jeongho Nam - https://github.com/samchon
333
- */
334
- export function assertEquals<T>(
335
- input: unknown,
336
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
337
- ): T;
338
-
339
- /**
340
- * @internal
341
- */
342
- export function assertEquals(): never {
343
- halt("assertEquals");
344
- }
345
-
346
- /**
347
- * Assertion guard of a type with equality.
348
- *
349
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
350
- * reason, if the parametric value is not following the type `T` or some superfluous
351
- * property that is not listed on the type `T` has been found.
352
- *
353
- * Otherwise, the value is following the type `T` without any superfluous property,
354
- * nothing would be returned, but the input value would be automatically casted to
355
- * the type `T`. This is the concept of "Assertion Guard" of a value type.
356
- *
357
- * If what you want is not asserting but just knowing whether the parametric value is
358
- * following the type `T` or not, you can choose the {@link equals} function instead.
359
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
360
- * Also, if you want to returns the parametric value when no problem, you can use
361
- * {@link assert} function instead.
362
- *
363
- * On the other hand, if you want to allow superfluous property that is not enrolled
364
- * to the type `T`, you can use {@link assertEquals} function instead.
365
- *
366
- * @template T Type of the input value
367
- * @param input A value to be asserted
368
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
369
- * @returns Parametric input value casted as `T`
370
- * @throws A {@link TypeGuardError} instance with detailed reason
371
- *
372
- * @author Jeongho Nam - https://github.com/samchon
373
- */
374
- export function assertGuardEquals<T>(
375
- input: T,
376
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
377
- ): asserts input is T;
378
-
379
- /**
380
- * Assertion guard of a type with equality.
381
- *
382
- * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
383
- * reason, if the parametric value is not following the type `T` or some superfluous
384
- * property that is not listed on the type `T` has been found.
385
- *
386
- * Otherwise, the value is following the type `T` without any superfluous property,
387
- * nothing would be returned, but the input value would be automatically casted to
388
- * the type `T`. This is the concept of "Assertion Guard" of a value type.
389
- *
390
- * If what you want is not asserting but just knowing whether the parametric value is
391
- * following the type `T` or not, you can choose the {@link equals} function instead.
392
- * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
393
- * Also, if you want to returns the parametric value when no problem, you can use
394
- * {@link assertEquals} function instead.
395
- *
396
- * On the other hand, if you want to allow superfluous property that is not enrolled
397
- * to the type `T`, you can use {@link assertGuard} function instead.
398
- *
399
- * @template T Type of the input value
400
- * @param input A value to be asserted
401
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
402
- * @returns Parametric input value casted as `T`
403
- * @throws A {@link TypeGuardError} instance with detailed reason
404
- *
405
- * @author Jeongho Nam - https://github.com/samchon
406
- */
407
- export function assertGuardEquals<T>(
408
- input: unknown,
409
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
410
- ): asserts input is T;
411
-
412
- /**
413
- * @internal
414
- */
415
- export function assertGuardEquals(): never {
416
- halt("assertGuardEquals");
417
- }
418
-
419
- /**
420
- * Tests equality between a value and its type.
421
- *
422
- * Tests a parametric value type and returns whether it's equivalent to the type `T`
423
- * or not. If the parametric value is matched with the type `T` and there's not any
424
- * superfluous property that is not listed on the type `T`, `true` value would be
425
- * returned. Otherwise, the parametric value is not following the type `T` or some
426
- * superfluous property exists, `false` value would be returned.
427
- *
428
- * If what you want is not just knowing whether the parametric value is following the
429
- * type `T` or not, but throwing an exception with detailed reason, you can choose
430
- * {@link assertEquals} function instead. Also, if you want to know all the errors with
431
- * detailed reasons, {@link validateEquals} function would be useful.
432
- *
433
- * On the other hand, if you want to allow superfluous property that is not enrolled
434
- * to the type `T`, you can use {@link is} function instead.
435
- *
436
- * @template T Type of the input value
437
- * @param input A value to be tested
438
- * @returns Whether the parametric value is equivalent to the type `T` or not
439
- *
440
- * @author Jeongho Nam - https://github.com/samchon
441
- */
442
- export function equals<T>(input: T): input is T;
443
-
444
- /**
445
- * Tests equality between a value and its type.
446
- *
447
- * Tests a parametric value type and returns whether it's equivalent to the type `T`
448
- * or not. If the parametric value is matched with the type `T` and there's not any
449
- * superfluous property that is not listed on the type `T`, `true` value would be
450
- * returned. Otherwise, the parametric value is not following the type `T` or some
451
- * superfluous property exists, `false` value would be returned.
452
- *
453
- * If what you want is not just knowing whether the parametric value is following the
454
- * type `T` or not, but throwing an exception with detailed reason, you can choose
455
- * {@link assertEquals} function instead. Also, if you want to know all the errors with
456
- * detailed reasons, {@link validateEquals} function would be useful.
457
- *
458
- * On the other hand, if you want to allow superfluous property that is not enrolled
459
- * to the type `T`, you can use {@link is} function instead.
460
- *
461
- * @template T Type of the input value
462
- * @param input A value to be tested
463
- * @returns Whether the parametric value is equivalent to the type `T` or not
464
- *
465
- * @author Jeongho Nam - https://github.com/samchon
466
- */
467
- export function equals<T>(input: unknown): input is T;
468
-
469
- /**
470
- * @internal
471
- */
472
- export function equals(): never {
473
- halt("equals");
474
- }
475
-
476
- /**
477
- * Validates equality between a value and its type.
478
- *
479
- * Validates a parametric value type and archives all the type errors into an
480
- * {@link IValidation.errors} array, if the parametric value is not following the
481
- * type `T` or some superfluous property that is not listed on the type `T` has been
482
- * found. Of course, if the parametric value is following the type `T` and no
483
- * superfluous property exists, the {@link IValidation.errors} array would be empty
484
- * and {@link IValidation.success} would have the `true` value.
485
- *
486
- * If what you want is not finding all the error, but asserting the parametric value
487
- * type with exception throwing, you can choose {@link assert} function instead.
488
- * Otherwise, you just want to know whether the parametric value is matched with the
489
- * type `T`, {@link is} function is the way to go.
490
- *
491
- * On the other and, if you don't want to allow any superfluous property that is not
492
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
493
- *
494
- * @template Type of the input value
495
- * @param input A value to be validated
496
- * @returns Validation result
497
- *
498
- * @author Jeongho Nam - https://github.com/samchon
499
- */
500
- export function validateEquals<T>(input: T): IValidation<T>;
501
-
502
- /**
503
- * Validates equality between a value and its type.
504
- *
505
- * Validates a parametric value type and archives all the type errors into an
506
- * {@link IValidation.errors} array, if the parametric value is not following the
507
- * type `T` or some superfluous property that is not listed on the type `T` has been
508
- * found. Of course, if the parametric value is following the type `T` and no
509
- * superfluous property exists, the {@link IValidation.errors} array would be empty
510
- * and {@link IValidation.success} would have the `true` value.
511
- *
512
- * If what you want is not finding all the error, but asserting the parametric value
513
- * type with exception throwing, you can choose {@link assert} function instead.
514
- * Otherwise, you just want to know whether the parametric value is matched with the
515
- * type `T`, {@link is} function is the way to go.
516
- *
517
- * On the other and, if you don't want to allow any superfluous property that is not
518
- * enrolled to the type `T`, you can use {@link validateEquals} function instead.
519
- *
520
- * @template Type of the input value
521
- * @param input A value to be validated
522
- * @returns Validation result
523
- *
524
- * @author Jeongho Nam - https://github.com/samchon
525
- */
526
- export function validateEquals<T>(input: unknown): IValidation<T>;
527
-
528
- /**
529
- * @internal
530
- */
531
- export function validateEquals(): never {
532
- halt("validateEquals");
533
- }
534
-
535
- /* -----------------------------------------------------------
536
- RANDOM
537
- ----------------------------------------------------------- */
538
- /**
539
- * > You must configure the generic argument `T`.
540
- *
541
- * Generate random data.
542
- *
543
- * Generates a random data following type the `T`.
544
- *
545
- * For reference, this `typia.random()` function generates only primitive type.
546
- * If there're some methods in the type `T` or its nested instances, those would
547
- * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
548
- * would be generated instead.
549
- *
550
- * @template T Type of data to generate
551
- * @param generator Random data generator
552
- * @return Randomly generated data
553
- *
554
- * @author Jeongho Nam - https://github.com/samchon
555
- */
556
- function random(generator?: Partial<IRandomGenerator>): never;
557
-
558
- /**
559
- * Generate random data.
560
- *
561
- * Generates a random data following type the `T`.
562
- *
563
- * For reference, this `typia.random()` function generates only primitive type.
564
- * If there're some methods in the type `T` or its nested instances, those would
565
- * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
566
- * would be generated instead.
567
- *
568
- * @template T Type of data to generate
569
- * @param generator Random data generator
570
- * @return Randomly generated data
571
- *
572
- * @author Jeongho Nam - https://github.com/samchon
573
- */
574
- function random<T>(generator?: Partial<IRandomGenerator>): Resolved<T>;
575
-
576
- /**
577
- * @internal
578
- */
579
- function random(): never {
580
- halt("random");
581
- }
582
- const randomPure = /** @__PURE__ */ Object.assign<typeof random, {}>(
583
- random,
584
- /** @__PURE__ */ Namespace.random(),
585
- );
586
- export { randomPure as random };
587
-
588
- /* -----------------------------------------------------------
589
- FACTORY FUNCTIONS
590
- ----------------------------------------------------------- */
591
- /**
592
- * Creates a reusable {@link assert} function.
593
- *
594
- * @danger You must configure the generic argument `T`
595
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
596
- * @returns Nothing until you configure the generic argument `T`
597
- * @throws compile error
598
- *
599
- * @author Jeongho Nam - https://github.com/samchon
600
- */
601
- export function createAssert(
602
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
603
- ): never;
604
-
605
- /**
606
- * Creates a reusable {@link assert} function.
607
- *
608
- * @template T Type of the input value
609
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
610
- * @returns A reusable `assert` function
611
- *
612
- * @author Jeongho Nam - https://github.com/samchon
613
- */
614
- export function createAssert<T>(
615
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
616
- ): (input: unknown) => T;
617
-
618
- /**
619
- * @internal
620
- */
621
- export function createAssert<T>(): (input: unknown) => T {
622
- halt("createAssert");
623
- }
624
-
625
- /**
626
- * Creates a reusable {@link assertGuard} function.
627
- *
628
- * Note that, you've to declare the variable type of the factory function caller
629
- * like below. If you don't declare the variable type, compilation error be thrown.
630
- * This is the special rule of the TypeScript compiler.
631
- *
632
- * ```typescript
633
- * // MUST DECLARE THE VARIABLE TYPE
634
- * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
635
- *
636
- * // IF NOT, COMPILATION ERROR BE OCCURED
637
- * const func = typia.createAssertGuard<number>();
638
- * ```
639
- *
640
- * > *Assertions require every name in the call target to be declared with an*
641
- * > *explicit type annotation.*
642
- *
643
- * @danger You must configure the generic argument `T`
644
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
645
- * @returns Nothing until you configure the generic argument `T`
646
- * @throws compile error
647
- *
648
- * @author Jeongho Nam - https://github.com/samchon
649
- */
650
- export function createAssertGuard(
651
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
652
- ): never;
653
-
654
- /**
655
- * Creates a reusable {@link assertGuard} function.
656
- *
657
- * Note that, you've to declare the variable type of the factory function caller
658
- * like below. If you don't declare the variable type, compilation error be thrown.
659
- * This is the special rule of the TypeScript compiler.
660
- *
661
- * ```typescript
662
- * // MUST DECLARE THE VARIABLE TYPE
663
- * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
664
- *
665
- * // IF NOT, COMPILATION ERROR BE OCCURED
666
- * const func = typia.createAssertGuard<number>();
667
- * ```
668
- *
669
- * > *Assertions require every name in the call target to be declared with an*
670
- * > *explicit type annotation.*
671
- *
672
- * @returns Nothing until you configure the generic argument `T`
673
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
674
- * @throws compile error
675
- *
676
- * @author Jeongho Nam - https://github.com/samchon
677
- */
678
- export function createAssertGuard<T>(
679
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
680
- ): (input: unknown) => AssertionGuard<T>;
681
-
682
- /**
683
- * @internal
684
- */
685
- export function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T> {
686
- halt("createAssertGuard");
687
- }
688
-
689
- /**
690
- * Creates a reusable {@link is} function.
691
- *
692
- * @danger You must configure the generic argument `T`
693
- * @returns Nothing until you configure the generic argument `T`
694
- * @throws compile error
695
- *
696
- * @author Jeongho Nam - https://github.com/samchon
697
- */
698
- export function createIs(): never;
699
-
700
- /**
701
- * Creates a reusable {@link is} function.
702
- *
703
- * @template T Type of the input value
704
- * @returns A reusable `is` function
705
- *
706
- * @author Jeongho Nam - https://github.com/samchon
707
- */
708
- export function createIs<T>(): (input: unknown) => input is T;
709
-
710
- /**
711
- * @internal
712
- */
713
- export function createIs<T>(): (input: unknown) => input is T {
714
- halt("createIs");
715
- }
716
-
717
- /**
718
- * Creates a reusable {@link validate} function.
719
- *
720
- * @danger You must configure the generic argument `T`
721
- * @returns Nothing until you configure the generic argument `T`
722
- * @throws compile error
723
- *
724
- * @author Jeongho Nam - https://github.com/samchon
725
- */
726
- export function createValidate(): never;
727
-
728
- /**
729
- * Creates a reusable {@link validate} function.
730
- *
731
- * @template T Type of the input value
732
- * @returns A reusable `validate` function
733
- *
734
- * @author Jeongho Nam - https://github.com/samchon
735
- */
736
- export function createValidate<T>(): (input: unknown) => IValidation<T>;
737
-
738
- /**
739
- * @internal
740
- */
741
- export function createValidate(): (input: unknown) => IValidation {
742
- halt("createValidate");
743
- }
744
-
745
- /**
746
- * Creates a reusable {@link assertEquals} function.
747
- *
748
- * @danger You must configure the generic argument `T`
749
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
750
- * @returns Nothing until you configure the generic argument `T`
751
- * @throws compile error
752
- *
753
- * @author Jeongho Nam - https://github.com/samchon
754
- */
755
- export function createAssertEquals(
756
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
757
- ): never;
758
-
759
- /**
760
- * Creates a reusable {@link assertEquals} function.
761
- *
762
- * @template T Type of the input value
763
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
764
- * @returns A reusable `assertEquals` function
765
- *
766
- * @author Jeongho Nam - https://github.com/samchon
767
- */
768
- export function createAssertEquals<T>(
769
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
770
- ): (input: unknown) => T;
771
-
772
- /**
773
- * @internal
774
- */
775
- export function createAssertEquals<T>(): (input: unknown) => T {
776
- halt("createAssertEquals");
777
- }
778
-
779
- /**
780
- * Creates a reusable {@link assertGuardEquals} function.
781
- *
782
- * Note that, you've to declare the variable type of the factory function caller
783
- * like below. If you don't declare the variable type, compilation error be thrown.
784
- * This is the special rule of the TypeScript compiler.
785
- *
786
- * ```typescript
787
- * // MUST DECLARE THE VARIABLE TYPE
788
- * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
789
- *
790
- * // IF NOT, COMPILATION ERROR BE OCCURED
791
- * const func = typia.createAssertGuardEquals<number>();
792
- * ```
793
- *
794
- * > *Assertions require every name in the call target to be declared with an*
795
- * > *explicit type annotation.*
796
- *
797
- * @danger You must configure the generic argument `T`
798
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
799
- * @returns Nothing until you configure the generic argument `T`
800
- * @throws compile error
801
- *
802
- * @author Jeongho Nam - https://github.com/samchon
803
- */
804
- export function createAssertGuardEquals(
805
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
806
- ): never;
807
-
808
- /**
809
- * Creates a reusable {@link assertGuardEquals} function.
810
- *
811
- * Note that, you've to declare the variable type of the factory function caller
812
- * like below. If you don't declare the variable type, compilation error be thrown.
813
- * This is the special rule of the TypeScript compiler.
814
- *
815
- * ```typescript
816
- * // MUST DECLARE THE VARIABLE TYPE
817
- * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
818
- *
819
- * // IF NOT, COMPILATION ERROR BE OCCURED
820
- * const func = typia.createAssertGuardEquals<number>();
821
- * ```
822
- *
823
- * > *Assertions require every name in the call target to be declared with an*
824
- * > *explicit type annotation.*
825
- *
826
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
827
- * @returns Nothing until you configure the generic argument `T`
828
- * @throws compile error
829
- *
830
- * @author Jeongho Nam - https://github.com/samchon
831
- */
832
- export function createAssertGuardEquals<T>(
833
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
834
- ): (input: unknown) => AssertionGuard<T>;
835
-
836
- /**
837
- * @internal
838
- */
839
- export function createAssertGuardEquals<T>(): (
840
- input: unknown,
841
- ) => AssertionGuard<T> {
842
- halt("createAssertGuardEquals");
843
- }
844
-
845
- /**
846
- * Creates a reusable {@link equals} function.
847
- *
848
- * @danger You must configure the generic argument `T`
849
- * @returns Nothing until you configure the generic argument `T`
850
- * @throws compile error
851
- *
852
- * @author Jeongho Nam - https://github.com/samchon
853
- */
854
- export function createEquals(): never;
855
-
856
- /**
857
- * Creates a reusable {@link equals} function.
858
- *
859
- * @template T Type of the input value
860
- * @returns A reusable `equals` function
861
- *
862
- * @author Jeongho Nam - https://github.com/samchon
863
- */
864
- export function createEquals<T>(): (input: unknown) => input is T;
865
-
866
- /**
867
- * @internal
868
- */
869
- export function createEquals<T>(): (input: unknown) => input is T {
870
- halt("createEquals");
871
- }
872
-
873
- /**
874
- * Creates a reusable {@link validateEquals} function.
875
- *
876
- * @danger You must configure the generic argument `T`
877
- * @returns Nothing until you configure the generic argument `T`
878
- * @throws compile error
879
- *
880
- * @author Jeongho Nam - https://github.com/samchon
881
- */
882
- export function createValidateEquals(): never;
883
-
884
- /**
885
- * Creates a reusable {@link validateEquals} function.
886
- *
887
- * @template T Type of the input value
888
- * @returns A reusable `validateEquals` function
889
- *
890
- * @author Jeongho Nam - https://github.com/samchon
891
- */
892
- export function createValidateEquals<T>(): (input: unknown) => IValidation<T>;
893
-
894
- /**
895
- * @internal
896
- */
897
- export function createValidateEquals(): (input: unknown) => IValidation {
898
- halt("createValidateEquals");
899
- }
900
-
901
- /**
902
- * Creates a reusable {@link random} function.
903
- *
904
- * @danger You must configure the generic argument `T`
905
- * @param generator Random data generator
906
- * @returns Nothing until you configure the generic argument `T`
907
- * @throws compile error
908
- *
909
- * @author Jeongho Nam - https://github.com/samchon
910
- */
911
- function createRandom(generator?: Partial<IRandomGenerator>): never;
912
-
913
- /**
914
- * Creates a resuable {@link random} function.
915
- *
916
- * @template T Type of the input value
917
- * @param generator Random data generator
918
- * @returns A reusable `random` function
919
- *
920
- * @author Jeongho Nam - https://github.com/samchon
921
- */
922
- function createRandom<T>(
923
- generator?: Partial<IRandomGenerator>,
924
- ): () => Resolved<T>;
925
-
926
- /**
927
- * @internal
928
- */
929
- function createRandom(): never {
930
- halt("createRandom");
931
- }
932
- const createRandomPure = /** @__PURE__ */ Object.assign<
933
- typeof createRandom,
934
- {}
935
- >(createRandom, randomPure);
936
- export { createRandomPure as createRandom };
937
-
938
- /**
939
- * @internal
940
- */
941
- function halt(name: string): never {
942
- throw new Error(
943
- `Error on typia.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
944
- );
945
- }
1
+ import { AssertionGuard } from "./AssertionGuard";
2
+ import { IRandomGenerator } from "./IRandomGenerator";
3
+ import { IValidation } from "./IValidation";
4
+ import { Resolved } from "./Resolved";
5
+ import { TypeGuardError } from "./TypeGuardError";
6
+
7
+ export * as functional from "./functional";
8
+ export * as http from "./http";
9
+ export * as llm from "./llm";
10
+ export * as json from "./json";
11
+ export * as misc from "./misc";
12
+ export * as notations from "./notations";
13
+ export * as protobuf from "./protobuf";
14
+ export * as reflect from "./reflect";
15
+ export * as tags from "./tags";
16
+
17
+ export * from "./schemas/metadata/IJsDocTagInfo";
18
+ export * from "./schemas/json/IJsonApplication";
19
+ export * from "./AssertionGuard";
20
+ export * from "./IRandomGenerator";
21
+ export * from "./IValidation";
22
+ export * from "./TypeGuardError";
23
+
24
+ export * from "./Primitive";
25
+ export * from "./Resolved";
26
+ export * from "./CamelCase";
27
+ export * from "./PascalCase";
28
+ export * from "./SnakeCase";
29
+
30
+ /* -----------------------------------------------------------
31
+ BASIC VALIDATORS
32
+ ----------------------------------------------------------- */
33
+ /**
34
+ * Asserts a value type.
35
+ *
36
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
37
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
38
+ * value is following the type `T`, just input parameter would be returned.
39
+ *
40
+ * If what you want is not asserting but just knowing whether the parametric value is
41
+ * following the type `T` or not, you can choose the {@link is} function instead.
42
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
43
+ * Also, if you want to automatically cast the parametric value to the type `T`
44
+ * when no problem (perform the assertion guard of type).
45
+ *
46
+ * On the other and, if you don't want to allow any superfluous property that is not
47
+ * enrolled to the type `T`, you can use {@link assertEquals} function instead.
48
+ *
49
+ * @template T Type of the input value
50
+ * @param input A value to be asserted
51
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
52
+ * @returns Parametric input value
53
+ * @throws A {@link TypeGuardError} instance with detailed reason
54
+ *
55
+ * @author Jeongho Nam - https://github.com/samchon
56
+ */
57
+ export function assert<T>(
58
+ input: T,
59
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
60
+ ): T;
61
+
62
+ /**
63
+ * Asserts a value type.
64
+ *
65
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
66
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
67
+ * value is following the type `T`, just input parameter would be returned.
68
+ *
69
+ * If what you want is not asserting but just knowing whether the parametric value is
70
+ * following the type `T` or not, you can choose the {@link is} function instead.
71
+ * Otherwise, you want to know all the errors, {@link validate} is the way to go.
72
+ *
73
+ * On the other and, if you don't want to allow any superfluous property that is not
74
+ * enrolled to the type `T`, you can use {@link assertEquals} function instead.
75
+ *
76
+ * @template T Type of the input value
77
+ * @param input A value to be asserted
78
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
79
+ * @returns Parametric input value casted as `T`
80
+ * @throws A {@link TypeGuardError} instance with detailed reason
81
+ *
82
+ * @author Jeongho Nam - https://github.com/samchon
83
+ */
84
+ export function assert<T>(
85
+ input: unknown,
86
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
87
+ ): T;
88
+
89
+ /**
90
+ * @internal
91
+ */
92
+ export function assert(): never {
93
+ halt("assert");
94
+ }
95
+
96
+ /**
97
+ * Assertion guard of a value type.
98
+ *
99
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
100
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
101
+ * value is following the type `T`, nothing would be returned, but the input value
102
+ * would be automatically casted to the type `T`. This is the concept of
103
+ * "Assertion Guard" of a value type.
104
+ *
105
+ * If what you want is not asserting but just knowing whether the parametric value is
106
+ * following the type `T` or not, you can choose the {@link is} function instead.
107
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
108
+ * Also, if you want to returns the parametric value when no problem, you can use
109
+ * {@link assert} function instead.
110
+ *
111
+ * On the other and, if you don't want to allow any superfluous property that is not
112
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
113
+ *
114
+ * @template T Type of the input value
115
+ * @param input A value to be asserted
116
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
117
+ * @throws A {@link TypeGuardError} instance with detailed reason
118
+ *
119
+ * @author Jeongho Nam - https://github.com/samchon
120
+ */
121
+ export function assertGuard<T>(
122
+ input: T,
123
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
124
+ ): asserts input is T;
125
+
126
+ /**
127
+ * Assertion guard of a value type.
128
+ *
129
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
130
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
131
+ * value is following the type `T`, nothing would be returned, but the input value
132
+ * would be automatically casted to the type `T`. This is the concept of
133
+ * "Assertion Guard" of a value type.
134
+ *
135
+ * If what you want is not asserting but just knowing whether the parametric value is
136
+ * following the type `T` or not, you can choose the {@link is} function instead.
137
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
138
+ * Also, if you want to returns the parametric value when no problem, you can use
139
+ * {@link assert} function instead.
140
+ *
141
+ * On the other and, if you don't want to allow any superfluous property that is not
142
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
143
+ *
144
+ * @template T Type of the input value
145
+ * @param input A value to be asserted
146
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
147
+ * @throws A {@link TypeGuardError} instance with detailed reason
148
+ *
149
+ * @author Jeongho Nam - https://github.com/samchon
150
+ */
151
+ export function assertGuard<T>(
152
+ input: unknown,
153
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
154
+ ): asserts input is T;
155
+
156
+ /**
157
+ * @internal
158
+ */
159
+ export function assertGuard(): never {
160
+ halt("assertGuard");
161
+ }
162
+
163
+ /**
164
+ * Tests a value type.
165
+ *
166
+ * Tests a parametric value type and returns whether it's following the type `T` or not.
167
+ * If the parametric value is matched with the type `T`, `true` value would be returned.
168
+ * Otherwise, the parametric value is not following the type `T`, `false` value would be
169
+ * returned.
170
+ *
171
+ * If what you want is not just knowing whether the parametric value is following the
172
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
173
+ * {@link assert} function instead. Also, if you want to know all the errors with
174
+ * detailed reasons, {@link validate} function would be useful.
175
+ *
176
+ * On the other and, if you don't want to allow any superfluous property that is not
177
+ * enrolled to the type `T`, you can use {@link equals} function instead.
178
+ *
179
+ * @template T Type of the input value
180
+ * @param input A value to be tested
181
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
182
+ * @returns Whether the parametric value is following the type `T` or not
183
+ *
184
+ * @author Jeongho Nam - https://github.com/samchon
185
+ */
186
+ export function is<T>(input: T): input is T;
187
+
188
+ /**
189
+ * Tests a value type.
190
+ *
191
+ * Tests a parametric value type and returns whether it's following the type `T` or not.
192
+ * If the parametric value is matched with the type `T`, `true` value would be returned.
193
+ * Otherwise, the parametric value is not following the type `T`, `false` value would be
194
+ * returned.
195
+ *
196
+ * If what you want is not just knowing whether the parametric value is following the
197
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
198
+ * {@link assert} function instead. Also, if you want to know all the errors with
199
+ * detailed reasons, {@link validate} function would be useful.
200
+ *
201
+ * On the other and, if you don't want to allow any superfluous property that is not
202
+ * enrolled to the type `T`, you can use {@link equals} function instead.
203
+ *
204
+ * @template T Type of the input value
205
+ * @param input A value to be tested
206
+ * @returns Whether the parametric value is following the type `T` or not
207
+ *
208
+ * @author Jeongho Nam - https://github.com/samchon
209
+ */
210
+ export function is<T>(input: unknown): input is T;
211
+
212
+ /**
213
+ * @internal
214
+ */
215
+ export function is(): never {
216
+ halt("is");
217
+ }
218
+
219
+ /**
220
+ * Validates a value type.
221
+ *
222
+ * Validates a parametric value type and archives all the type errors into an
223
+ * {@link IValidation.errors} array, if the parametric value is not following the
224
+ * type `T`. Of course, if the parametric value is following the type `T`, the
225
+ * {@link IValidation.errors} array would be empty and {@link IValidation.success}
226
+ * would have the `true` value.
227
+ *
228
+ * If what you want is not finding all the error, but asserting the parametric value
229
+ * type with exception throwing, you can choose {@link assert} function instead.
230
+ * Otherwise, you just want to know whether the parametric value is matched with the
231
+ * type `T`, {@link is} function is the way to go.
232
+ *
233
+ * On the other and, if you don't want to allow any superfluous property that is not
234
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
235
+ *
236
+ * @template Type of the input value
237
+ * @param input A value to be validated
238
+ * @returns Validation result
239
+ *
240
+ * @author Jeongho Nam - https://github.com/samchon
241
+ */
242
+ export function validate<T>(input: T): IValidation<T>;
243
+
244
+ /**
245
+ * Validates a value type.
246
+ *
247
+ * Validates a parametric value type and archives all the type errors into an
248
+ * {@link IValidation.errors} array, if the parametric value is not following the
249
+ * type `T`. Of course, if the parametric value is following the type `T`, the
250
+ * {@link IValidation.errors} array would be empty and {@link IValidation.success}
251
+ * would have the `true` value.
252
+ *
253
+ * If what you want is not finding all the error, but asserting the parametric value
254
+ * type with exception throwing, you can choose {@link assert} function instead.
255
+ * Otherwise, you just want to know whether the parametric value is matched with the
256
+ * type `T`, {@link is} function is the way to go.
257
+ *
258
+ * On the other and, if you don't want to allow any superfluous property that is not
259
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
260
+ *
261
+ * @template Type of the input value
262
+ * @param input A value to be validated
263
+ * @returns Validation result
264
+ *
265
+ * @author Jeongho Nam - https://github.com/samchon
266
+ */
267
+ export function validate<T>(input: unknown): IValidation<T>;
268
+
269
+ /**
270
+ * @internal
271
+ */
272
+ export function validate(): never {
273
+ halt("validate");
274
+ }
275
+
276
+ /* -----------------------------------------------------------
277
+ STRICT VALIDATORS
278
+ ----------------------------------------------------------- */
279
+ /**
280
+ * Asserts equality between a value and its type.
281
+ *
282
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
283
+ * reason, if the parametric value is not following the type `T` or some superfluous
284
+ * property that is not listed on the type `T` has been found. Otherwise, the value is
285
+ * following the type `T` without any superfluous property, just input parameter would
286
+ * be returned.
287
+ *
288
+ * If what you want is not asserting but just knowing whether the parametric value is
289
+ * following the type `T` or not, you can choose the {@link equals} function instead.
290
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
291
+ *
292
+ * On the other hand, if you want to allow superfluous property that is not enrolled
293
+ * to the type `T`, you can use {@link assert} function instead.
294
+ *
295
+ * @template T Type of the input value
296
+ * @param input A value to be asserted
297
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
298
+ * @returns Parametric input value
299
+ * @throws A {@link TypeGuardError} instance with detailed reason
300
+ *
301
+ * @author Jeongho Nam - https://github.com/samchon
302
+ */
303
+ export function assertEquals<T>(
304
+ input: T,
305
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
306
+ ): T;
307
+
308
+ /**
309
+ * Asserts equality between a value and its type.
310
+ *
311
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
312
+ * reason, if the parametric value is not following the type `T` or some superfluous
313
+ * property that is not listed on the type `T` has been found. Otherwise, the value is
314
+ * following the type `T` without any superfluous property, just input parameter would
315
+ * be returned.
316
+ *
317
+ * If what you want is not asserting but just knowing whether the parametric value is
318
+ * following the type `T` or not, you can choose the {@link equals} function instead.
319
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
320
+ *
321
+ * On the other hand, if you want to allow superfluous property that is not enrolled
322
+ * to the type `T`, you can use {@link assert} function instead.
323
+ *
324
+ * @template T Type of the input value
325
+ * @param input A value to be asserted
326
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
327
+ * @returns Parametric input value casted as `T`
328
+ * @throws A {@link TypeGuardError} instance with detailed reason
329
+ *
330
+ * @author Jeongho Nam - https://github.com/samchon
331
+ */
332
+ export function assertEquals<T>(
333
+ input: unknown,
334
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
335
+ ): T;
336
+
337
+ /**
338
+ * @internal
339
+ */
340
+ export function assertEquals(): never {
341
+ halt("assertEquals");
342
+ }
343
+
344
+ /**
345
+ * Assertion guard of a type with equality.
346
+ *
347
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
348
+ * reason, if the parametric value is not following the type `T` or some superfluous
349
+ * property that is not listed on the type `T` has been found.
350
+ *
351
+ * Otherwise, the value is following the type `T` without any superfluous property,
352
+ * nothing would be returned, but the input value would be automatically casted to
353
+ * the type `T`. This is the concept of "Assertion Guard" of a value type.
354
+ *
355
+ * If what you want is not asserting but just knowing whether the parametric value is
356
+ * following the type `T` or not, you can choose the {@link equals} function instead.
357
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
358
+ * Also, if you want to returns the parametric value when no problem, you can use
359
+ * {@link assert} function instead.
360
+ *
361
+ * On the other hand, if you want to allow superfluous property that is not enrolled
362
+ * to the type `T`, you can use {@link assertEquals} function instead.
363
+ *
364
+ * @template T Type of the input value
365
+ * @param input A value to be asserted
366
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
367
+ * @returns Parametric input value casted as `T`
368
+ * @throws A {@link TypeGuardError} instance with detailed reason
369
+ *
370
+ * @author Jeongho Nam - https://github.com/samchon
371
+ */
372
+ export function assertGuardEquals<T>(
373
+ input: T,
374
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
375
+ ): asserts input is T;
376
+
377
+ /**
378
+ * Assertion guard of a type with equality.
379
+ *
380
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
381
+ * reason, if the parametric value is not following the type `T` or some superfluous
382
+ * property that is not listed on the type `T` has been found.
383
+ *
384
+ * Otherwise, the value is following the type `T` without any superfluous property,
385
+ * nothing would be returned, but the input value would be automatically casted to
386
+ * the type `T`. This is the concept of "Assertion Guard" of a value type.
387
+ *
388
+ * If what you want is not asserting but just knowing whether the parametric value is
389
+ * following the type `T` or not, you can choose the {@link equals} function instead.
390
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
391
+ * Also, if you want to returns the parametric value when no problem, you can use
392
+ * {@link assertEquals} function instead.
393
+ *
394
+ * On the other hand, if you want to allow superfluous property that is not enrolled
395
+ * to the type `T`, you can use {@link assertGuard} function instead.
396
+ *
397
+ * @template T Type of the input value
398
+ * @param input A value to be asserted
399
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
400
+ * @returns Parametric input value casted as `T`
401
+ * @throws A {@link TypeGuardError} instance with detailed reason
402
+ *
403
+ * @author Jeongho Nam - https://github.com/samchon
404
+ */
405
+ export function assertGuardEquals<T>(
406
+ input: unknown,
407
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
408
+ ): asserts input is T;
409
+
410
+ /**
411
+ * @internal
412
+ */
413
+ export function assertGuardEquals(): never {
414
+ halt("assertGuardEquals");
415
+ }
416
+
417
+ /**
418
+ * Tests equality between a value and its type.
419
+ *
420
+ * Tests a parametric value type and returns whether it's equivalent to the type `T`
421
+ * or not. If the parametric value is matched with the type `T` and there's not any
422
+ * superfluous property that is not listed on the type `T`, `true` value would be
423
+ * returned. Otherwise, the parametric value is not following the type `T` or some
424
+ * superfluous property exists, `false` value would be returned.
425
+ *
426
+ * If what you want is not just knowing whether the parametric value is following the
427
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
428
+ * {@link assertEquals} function instead. Also, if you want to know all the errors with
429
+ * detailed reasons, {@link validateEquals} function would be useful.
430
+ *
431
+ * On the other hand, if you want to allow superfluous property that is not enrolled
432
+ * to the type `T`, you can use {@link is} function instead.
433
+ *
434
+ * @template T Type of the input value
435
+ * @param input A value to be tested
436
+ * @returns Whether the parametric value is equivalent to the type `T` or not
437
+ *
438
+ * @author Jeongho Nam - https://github.com/samchon
439
+ */
440
+ export function equals<T>(input: T): input is T;
441
+
442
+ /**
443
+ * Tests equality between a value and its type.
444
+ *
445
+ * Tests a parametric value type and returns whether it's equivalent to the type `T`
446
+ * or not. If the parametric value is matched with the type `T` and there's not any
447
+ * superfluous property that is not listed on the type `T`, `true` value would be
448
+ * returned. Otherwise, the parametric value is not following the type `T` or some
449
+ * superfluous property exists, `false` value would be returned.
450
+ *
451
+ * If what you want is not just knowing whether the parametric value is following the
452
+ * type `T` or not, but throwing an exception with detailed reason, you can choose
453
+ * {@link assertEquals} function instead. Also, if you want to know all the errors with
454
+ * detailed reasons, {@link validateEquals} function would be useful.
455
+ *
456
+ * On the other hand, if you want to allow superfluous property that is not enrolled
457
+ * to the type `T`, you can use {@link is} function instead.
458
+ *
459
+ * @template T Type of the input value
460
+ * @param input A value to be tested
461
+ * @returns Whether the parametric value is equivalent to the type `T` or not
462
+ *
463
+ * @author Jeongho Nam - https://github.com/samchon
464
+ */
465
+ export function equals<T>(input: unknown): input is T;
466
+
467
+ /**
468
+ * @internal
469
+ */
470
+ export function equals(): never {
471
+ halt("equals");
472
+ }
473
+
474
+ /**
475
+ * Validates equality between a value and its type.
476
+ *
477
+ * Validates a parametric value type and archives all the type errors into an
478
+ * {@link IValidation.errors} array, if the parametric value is not following the
479
+ * type `T` or some superfluous property that is not listed on the type `T` has been
480
+ * found. Of course, if the parametric value is following the type `T` and no
481
+ * superfluous property exists, the {@link IValidation.errors} array would be empty
482
+ * and {@link IValidation.success} would have the `true` value.
483
+ *
484
+ * If what you want is not finding all the error, but asserting the parametric value
485
+ * type with exception throwing, you can choose {@link assert} function instead.
486
+ * Otherwise, you just want to know whether the parametric value is matched with the
487
+ * type `T`, {@link is} function is the way to go.
488
+ *
489
+ * On the other and, if you don't want to allow any superfluous property that is not
490
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
491
+ *
492
+ * @template Type of the input value
493
+ * @param input A value to be validated
494
+ * @returns Validation result
495
+ *
496
+ * @author Jeongho Nam - https://github.com/samchon
497
+ */
498
+ export function validateEquals<T>(input: T): IValidation<T>;
499
+
500
+ /**
501
+ * Validates equality between a value and its type.
502
+ *
503
+ * Validates a parametric value type and archives all the type errors into an
504
+ * {@link IValidation.errors} array, if the parametric value is not following the
505
+ * type `T` or some superfluous property that is not listed on the type `T` has been
506
+ * found. Of course, if the parametric value is following the type `T` and no
507
+ * superfluous property exists, the {@link IValidation.errors} array would be empty
508
+ * and {@link IValidation.success} would have the `true` value.
509
+ *
510
+ * If what you want is not finding all the error, but asserting the parametric value
511
+ * type with exception throwing, you can choose {@link assert} function instead.
512
+ * Otherwise, you just want to know whether the parametric value is matched with the
513
+ * type `T`, {@link is} function is the way to go.
514
+ *
515
+ * On the other and, if you don't want to allow any superfluous property that is not
516
+ * enrolled to the type `T`, you can use {@link validateEquals} function instead.
517
+ *
518
+ * @template Type of the input value
519
+ * @param input A value to be validated
520
+ * @returns Validation result
521
+ *
522
+ * @author Jeongho Nam - https://github.com/samchon
523
+ */
524
+ export function validateEquals<T>(input: unknown): IValidation<T>;
525
+
526
+ /**
527
+ * @internal
528
+ */
529
+ export function validateEquals(): never {
530
+ halt("validateEquals");
531
+ }
532
+
533
+ /* -----------------------------------------------------------
534
+ RANDOM
535
+ ----------------------------------------------------------- */
536
+ /**
537
+ * > You must configure the generic argument `T`.
538
+ *
539
+ * Generate random data.
540
+ *
541
+ * Generates a random data following type the `T`.
542
+ *
543
+ * For reference, this `typia.random()` function generates only primitive type.
544
+ * If there're some methods in the type `T` or its nested instances, those would
545
+ * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
546
+ * would be generated instead.
547
+ *
548
+ * @template T Type of data to generate
549
+ * @param generator Random data generator
550
+ * @return Randomly generated data
551
+ *
552
+ * @author Jeongho Nam - https://github.com/samchon
553
+ */
554
+ export function random(generator?: Partial<IRandomGenerator>): never;
555
+
556
+ /**
557
+ * Generate random data.
558
+ *
559
+ * Generates a random data following type the `T`.
560
+ *
561
+ * For reference, this `typia.random()` function generates only primitive type.
562
+ * If there're some methods in the type `T` or its nested instances, those would
563
+ * be ignored. Also, when the type `T` has a `toJSON()` method, its return type
564
+ * would be generated instead.
565
+ *
566
+ * @template T Type of data to generate
567
+ * @param generator Random data generator
568
+ * @return Randomly generated data
569
+ *
570
+ * @author Jeongho Nam - https://github.com/samchon
571
+ */
572
+ export function random<T>(generator?: Partial<IRandomGenerator>): Resolved<T>;
573
+
574
+ /**
575
+ * @internal
576
+ */
577
+ export function random(): never {
578
+ halt("random");
579
+ }
580
+
581
+ /* -----------------------------------------------------------
582
+ FACTORY FUNCTIONS
583
+ ----------------------------------------------------------- */
584
+ /**
585
+ * Creates a reusable {@link assert} function.
586
+ *
587
+ * @danger You must configure the generic argument `T`
588
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
589
+ * @returns Nothing until you configure the generic argument `T`
590
+ * @throws compile error
591
+ *
592
+ * @author Jeongho Nam - https://github.com/samchon
593
+ */
594
+ export function createAssert(
595
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
596
+ ): never;
597
+
598
+ /**
599
+ * Creates a reusable {@link assert} function.
600
+ *
601
+ * @template T Type of the input value
602
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
603
+ * @returns A reusable `assert` function
604
+ *
605
+ * @author Jeongho Nam - https://github.com/samchon
606
+ */
607
+ export function createAssert<T>(
608
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
609
+ ): (input: unknown) => T;
610
+
611
+ /**
612
+ * @internal
613
+ */
614
+ export function createAssert<T>(): (input: unknown) => T {
615
+ halt("createAssert");
616
+ }
617
+
618
+ /**
619
+ * Creates a reusable {@link assertGuard} function.
620
+ *
621
+ * Note that, you've to declare the variable type of the factory function caller
622
+ * like below. If you don't declare the variable type, compilation error be thrown.
623
+ * This is the special rule of the TypeScript compiler.
624
+ *
625
+ * ```typescript
626
+ * // MUST DECLARE THE VARIABLE TYPE
627
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
628
+ *
629
+ * // IF NOT, COMPILATION ERROR BE OCCURED
630
+ * const func = typia.createAssertGuard<number>();
631
+ * ```
632
+ *
633
+ * > *Assertions require every name in the call target to be declared with an*
634
+ * > *explicit type annotation.*
635
+ *
636
+ * @danger You must configure the generic argument `T`
637
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
638
+ * @returns Nothing until you configure the generic argument `T`
639
+ * @throws compile error
640
+ *
641
+ * @author Jeongho Nam - https://github.com/samchon
642
+ */
643
+ export function createAssertGuard(
644
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
645
+ ): never;
646
+
647
+ /**
648
+ * Creates a reusable {@link assertGuard} function.
649
+ *
650
+ * Note that, you've to declare the variable type of the factory function caller
651
+ * like below. If you don't declare the variable type, compilation error be thrown.
652
+ * This is the special rule of the TypeScript compiler.
653
+ *
654
+ * ```typescript
655
+ * // MUST DECLARE THE VARIABLE TYPE
656
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
657
+ *
658
+ * // IF NOT, COMPILATION ERROR BE OCCURED
659
+ * const func = typia.createAssertGuard<number>();
660
+ * ```
661
+ *
662
+ * > *Assertions require every name in the call target to be declared with an*
663
+ * > *explicit type annotation.*
664
+ *
665
+ * @returns Nothing until you configure the generic argument `T`
666
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
667
+ * @throws compile error
668
+ *
669
+ * @author Jeongho Nam - https://github.com/samchon
670
+ */
671
+ export function createAssertGuard<T>(
672
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
673
+ ): (input: unknown) => AssertionGuard<T>;
674
+
675
+ /**
676
+ * @internal
677
+ */
678
+ export function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T> {
679
+ halt("createAssertGuard");
680
+ }
681
+
682
+ /**
683
+ * Creates a reusable {@link is} function.
684
+ *
685
+ * @danger You must configure the generic argument `T`
686
+ * @returns Nothing until you configure the generic argument `T`
687
+ * @throws compile error
688
+ *
689
+ * @author Jeongho Nam - https://github.com/samchon
690
+ */
691
+ export function createIs(): never;
692
+
693
+ /**
694
+ * Creates a reusable {@link is} function.
695
+ *
696
+ * @template T Type of the input value
697
+ * @returns A reusable `is` function
698
+ *
699
+ * @author Jeongho Nam - https://github.com/samchon
700
+ */
701
+ export function createIs<T>(): (input: unknown) => input is T;
702
+
703
+ /**
704
+ * @internal
705
+ */
706
+ export function createIs<T>(): (input: unknown) => input is T {
707
+ halt("createIs");
708
+ }
709
+
710
+ /**
711
+ * Creates a reusable {@link validate} function.
712
+ *
713
+ * @danger You must configure the generic argument `T`
714
+ * @returns Nothing until you configure the generic argument `T`
715
+ * @throws compile error
716
+ *
717
+ * @author Jeongho Nam - https://github.com/samchon
718
+ */
719
+ export function createValidate(): never;
720
+
721
+ /**
722
+ * Creates a reusable {@link validate} function.
723
+ *
724
+ * @template T Type of the input value
725
+ * @returns A reusable `validate` function
726
+ *
727
+ * @author Jeongho Nam - https://github.com/samchon
728
+ */
729
+ export function createValidate<T>(): (input: unknown) => IValidation<T>;
730
+
731
+ /**
732
+ * @internal
733
+ */
734
+ export function createValidate(): (input: unknown) => IValidation {
735
+ halt("createValidate");
736
+ }
737
+
738
+ /**
739
+ * Creates a reusable {@link assertEquals} function.
740
+ *
741
+ * @danger You must configure the generic argument `T`
742
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
743
+ * @returns Nothing until you configure the generic argument `T`
744
+ * @throws compile error
745
+ *
746
+ * @author Jeongho Nam - https://github.com/samchon
747
+ */
748
+ export function createAssertEquals(
749
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
750
+ ): never;
751
+
752
+ /**
753
+ * Creates a reusable {@link assertEquals} function.
754
+ *
755
+ * @template T Type of the input value
756
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
757
+ * @returns A reusable `assertEquals` function
758
+ *
759
+ * @author Jeongho Nam - https://github.com/samchon
760
+ */
761
+ export function createAssertEquals<T>(
762
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
763
+ ): (input: unknown) => T;
764
+
765
+ /**
766
+ * @internal
767
+ */
768
+ export function createAssertEquals<T>(): (input: unknown) => T {
769
+ halt("createAssertEquals");
770
+ }
771
+
772
+ /**
773
+ * Creates a reusable {@link assertGuardEquals} function.
774
+ *
775
+ * Note that, you've to declare the variable type of the factory function caller
776
+ * like below. If you don't declare the variable type, compilation error be thrown.
777
+ * This is the special rule of the TypeScript compiler.
778
+ *
779
+ * ```typescript
780
+ * // MUST DECLARE THE VARIABLE TYPE
781
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
782
+ *
783
+ * // IF NOT, COMPILATION ERROR BE OCCURED
784
+ * const func = typia.createAssertGuardEquals<number>();
785
+ * ```
786
+ *
787
+ * > *Assertions require every name in the call target to be declared with an*
788
+ * > *explicit type annotation.*
789
+ *
790
+ * @danger You must configure the generic argument `T`
791
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
792
+ * @returns Nothing until you configure the generic argument `T`
793
+ * @throws compile error
794
+ *
795
+ * @author Jeongho Nam - https://github.com/samchon
796
+ */
797
+ export function createAssertGuardEquals(
798
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
799
+ ): never;
800
+
801
+ /**
802
+ * Creates a reusable {@link assertGuardEquals} function.
803
+ *
804
+ * Note that, you've to declare the variable type of the factory function caller
805
+ * like below. If you don't declare the variable type, compilation error be thrown.
806
+ * This is the special rule of the TypeScript compiler.
807
+ *
808
+ * ```typescript
809
+ * // MUST DECLARE THE VARIABLE TYPE
810
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
811
+ *
812
+ * // IF NOT, COMPILATION ERROR BE OCCURED
813
+ * const func = typia.createAssertGuardEquals<number>();
814
+ * ```
815
+ *
816
+ * > *Assertions require every name in the call target to be declared with an*
817
+ * > *explicit type annotation.*
818
+ *
819
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
820
+ * @returns Nothing until you configure the generic argument `T`
821
+ * @throws compile error
822
+ *
823
+ * @author Jeongho Nam - https://github.com/samchon
824
+ */
825
+ export function createAssertGuardEquals<T>(
826
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
827
+ ): (input: unknown) => AssertionGuard<T>;
828
+
829
+ /**
830
+ * @internal
831
+ */
832
+ export function createAssertGuardEquals<T>(): (
833
+ input: unknown,
834
+ ) => AssertionGuard<T> {
835
+ halt("createAssertGuardEquals");
836
+ }
837
+
838
+ /**
839
+ * Creates a reusable {@link equals} function.
840
+ *
841
+ * @danger You must configure the generic argument `T`
842
+ * @returns Nothing until you configure the generic argument `T`
843
+ * @throws compile error
844
+ *
845
+ * @author Jeongho Nam - https://github.com/samchon
846
+ */
847
+ export function createEquals(): never;
848
+
849
+ /**
850
+ * Creates a reusable {@link equals} function.
851
+ *
852
+ * @template T Type of the input value
853
+ * @returns A reusable `equals` function
854
+ *
855
+ * @author Jeongho Nam - https://github.com/samchon
856
+ */
857
+ export function createEquals<T>(): (input: unknown) => input is T;
858
+
859
+ /**
860
+ * @internal
861
+ */
862
+ export function createEquals<T>(): (input: unknown) => input is T {
863
+ halt("createEquals");
864
+ }
865
+
866
+ /**
867
+ * Creates a reusable {@link validateEquals} function.
868
+ *
869
+ * @danger You must configure the generic argument `T`
870
+ * @returns Nothing until you configure the generic argument `T`
871
+ * @throws compile error
872
+ *
873
+ * @author Jeongho Nam - https://github.com/samchon
874
+ */
875
+ export function createValidateEquals(): never;
876
+
877
+ /**
878
+ * Creates a reusable {@link validateEquals} function.
879
+ *
880
+ * @template T Type of the input value
881
+ * @returns A reusable `validateEquals` function
882
+ *
883
+ * @author Jeongho Nam - https://github.com/samchon
884
+ */
885
+ export function createValidateEquals<T>(): (input: unknown) => IValidation<T>;
886
+
887
+ /**
888
+ * @internal
889
+ */
890
+ export function createValidateEquals(): (input: unknown) => IValidation {
891
+ halt("createValidateEquals");
892
+ }
893
+
894
+ /**
895
+ * Creates a reusable {@link random} function.
896
+ *
897
+ * @danger You must configure the generic argument `T`
898
+ * @param generator Random data generator
899
+ * @returns Nothing until you configure the generic argument `T`
900
+ * @throws compile error
901
+ *
902
+ * @author Jeongho Nam - https://github.com/samchon
903
+ */
904
+ export function createRandom(generator?: Partial<IRandomGenerator>): never;
905
+
906
+ /**
907
+ * Creates a resuable {@link random} function.
908
+ *
909
+ * @template T Type of the input value
910
+ * @param generator Random data generator
911
+ * @returns A reusable `random` function
912
+ *
913
+ * @author Jeongho Nam - https://github.com/samchon
914
+ */
915
+ export function createRandom<T>(
916
+ generator?: Partial<IRandomGenerator>,
917
+ ): () => Resolved<T>;
918
+
919
+ /**
920
+ * @internal
921
+ */
922
+ export function createRandom(): never {
923
+ halt("createRandom");
924
+ }
925
+
926
+ /**
927
+ * @internal
928
+ */
929
+ function halt(name: string): never {
930
+ throw new Error(
931
+ `Error on typia.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
932
+ );
933
+ }