typia 5.3.0-dev.20231120 → 5.3.0-dev.20231126

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