typia 7.0.2 → 7.1.0-dev.20241209

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 (476) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +123 -123
  3. package/lib/executable/typia.js +0 -0
  4. package/lib/factories/LiteralFactory.js +4 -0
  5. package/lib/factories/LiteralFactory.js.map +1 -1
  6. package/lib/factories/internal/metadata/iterate_metadata_function.js +1 -0
  7. package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -1
  8. package/lib/index.mjs +18 -1
  9. package/lib/index.mjs.map +1 -1
  10. package/lib/llm.d.ts +121 -2
  11. package/lib/llm.js +7 -0
  12. package/lib/llm.js.map +1 -1
  13. package/lib/module.d.ts +2 -0
  14. package/lib/module.js +2 -0
  15. package/lib/module.js.map +1 -1
  16. package/lib/programmers/llm/LlmApplicationOfValidateProgrammer.d.ts +15 -0
  17. package/lib/programmers/llm/LlmApplicationOfValidateProgrammer.js +37 -0
  18. package/lib/programmers/llm/LlmApplicationOfValidateProgrammer.js.map +1 -0
  19. package/lib/schemas/llm/ILlmApplicationOfValidate.d.ts +52 -0
  20. package/lib/schemas/llm/ILlmApplicationOfValidate.js +7 -0
  21. package/lib/schemas/llm/ILlmApplicationOfValidate.js.map +1 -0
  22. package/lib/schemas/llm/ILlmFunctionOfValidate.d.ts +36 -0
  23. package/lib/schemas/llm/ILlmFunctionOfValidate.js +7 -0
  24. package/lib/schemas/llm/ILlmFunctionOfValidate.js.map +1 -0
  25. package/lib/schemas/metadata/MetadataParameter.d.ts +2 -0
  26. package/lib/schemas/metadata/MetadataParameter.js +1 -0
  27. package/lib/schemas/metadata/MetadataParameter.js.map +1 -1
  28. package/lib/transformers/CallExpressionTransformer.js +2 -0
  29. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  30. package/lib/transformers/features/llm/LlmApplicationOfValidateTransformer.d.ts +5 -0
  31. package/lib/transformers/features/llm/LlmApplicationOfValidateTransformer.js +94 -0
  32. package/lib/transformers/features/llm/LlmApplicationOfValidateTransformer.js.map +1 -0
  33. package/lib/transformers/features/llm/LlmApplicationTransformer.js +3 -3
  34. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/IRandomGenerator.ts +49 -49
  37. package/src/IReadableURLSearchParams.ts +9 -9
  38. package/src/IValidation.ts +20 -20
  39. package/src/executable/TypiaGenerateWizard.ts +83 -83
  40. package/src/executable/TypiaPatchWizard.ts +45 -45
  41. package/src/executable/TypiaSetupWizard.ts +179 -179
  42. package/src/executable/setup/ArgumentParser.ts +42 -42
  43. package/src/executable/setup/FileRetriever.ts +19 -19
  44. package/src/executable/setup/PackageManager.ts +87 -87
  45. package/src/factories/ExpressionFactory.ts +216 -216
  46. package/src/factories/IdentifierFactory.ts +89 -89
  47. package/src/factories/JsonMetadataFactory.ts +76 -76
  48. package/src/factories/LiteralFactory.ts +52 -50
  49. package/src/factories/MetadataCollection.ts +278 -278
  50. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  51. package/src/factories/MetadataFactory.ts +404 -404
  52. package/src/factories/MetadataTypeTagFactory.ts +411 -411
  53. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  54. package/src/factories/NumericRangeFactory.ts +72 -72
  55. package/src/factories/ProtobufFactory.ts +875 -875
  56. package/src/factories/StatementFactory.ts +90 -90
  57. package/src/factories/TemplateFactory.ts +64 -64
  58. package/src/factories/TypeFactory.ts +140 -140
  59. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  60. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  61. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  62. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  63. package/src/factories/internal/metadata/emplace_metadata_object.ts +208 -208
  64. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  65. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  66. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  67. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  68. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  69. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  70. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  71. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  72. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  73. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  74. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  75. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -90
  76. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -213
  77. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  78. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  79. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  80. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  81. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  82. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  83. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  84. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  85. package/src/functional.ts +750 -750
  86. package/src/http.ts +1047 -1047
  87. package/src/internal/_IProtobufWriter.ts +18 -18
  88. package/src/internal/_ProtobufReader.ts +194 -194
  89. package/src/internal/_ProtobufSizer.ts +145 -145
  90. package/src/internal/_ProtobufWriter.ts +145 -145
  91. package/src/internal/_accessExpressionAsString.ts +46 -46
  92. package/src/internal/_assertGuard.ts +13 -13
  93. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  94. package/src/internal/_httpFormDataReadArray.ts +4 -4
  95. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  96. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  97. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  98. package/src/internal/_httpFormDataReadFile.ts +10 -10
  99. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  100. package/src/internal/_httpFormDataReadString.ts +10 -10
  101. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  102. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  103. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  104. package/src/internal/_httpParameterReadBigint.ts +10 -10
  105. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  106. package/src/internal/_httpParameterReadNumber.ts +7 -7
  107. package/src/internal/_httpParameterReadString.ts +2 -2
  108. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  109. package/src/internal/_httpQueryReadArray.ts +4 -4
  110. package/src/internal/_httpQueryReadBigint.ts +12 -12
  111. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  112. package/src/internal/_httpQueryReadNumber.ts +9 -9
  113. package/src/internal/_httpQueryReadString.ts +4 -4
  114. package/src/internal/_isBetween.ts +2 -2
  115. package/src/internal/_isBigintString.ts +8 -8
  116. package/src/internal/_isFormatByte.ts +7 -7
  117. package/src/internal/_isFormatDate.ts +3 -3
  118. package/src/internal/_isFormatDateTime.ts +4 -4
  119. package/src/internal/_isFormatDuration.ts +4 -4
  120. package/src/internal/_isFormatEmail.ts +4 -4
  121. package/src/internal/_isFormatHostname.ts +4 -4
  122. package/src/internal/_isFormatIdnEmail.ts +4 -4
  123. package/src/internal/_isFormatIdnHostname.ts +4 -4
  124. package/src/internal/_isFormatIpv4.ts +4 -4
  125. package/src/internal/_isFormatIpv6.ts +4 -4
  126. package/src/internal/_isFormatIri.ts +3 -3
  127. package/src/internal/_isFormatIriReference.ts +4 -4
  128. package/src/internal/_isFormatJsonPointer.ts +3 -3
  129. package/src/internal/_isFormatPassword.ts +1 -1
  130. package/src/internal/_isFormatRegex.ts +8 -8
  131. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  132. package/src/internal/_isFormatTime.ts +4 -4
  133. package/src/internal/_isFormatUri.ts +6 -6
  134. package/src/internal/_isFormatUriReference.ts +5 -5
  135. package/src/internal/_isFormatUriTemplate.ts +4 -4
  136. package/src/internal/_isFormatUrl.ts +4 -4
  137. package/src/internal/_isFormatUuid.ts +3 -3
  138. package/src/internal/_isTypeFloat.ts +5 -5
  139. package/src/internal/_isTypeInt32.ts +5 -5
  140. package/src/internal/_isTypeInt64.ts +5 -5
  141. package/src/internal/_isTypeUint32.ts +5 -5
  142. package/src/internal/_isTypeUint64.ts +5 -5
  143. package/src/internal/_isUniqueItems.ts +159 -159
  144. package/src/internal/_jsonStringifyNumber.ts +12 -12
  145. package/src/internal/_jsonStringifyRest.ts +3 -3
  146. package/src/internal/_jsonStringifyString.ts +42 -42
  147. package/src/internal/_jsonStringifyTail.ts +2 -2
  148. package/src/internal/_llmApplicationFinalize.ts +20 -20
  149. package/src/internal/_miscCloneAny.ts +46 -46
  150. package/src/internal/_notationAny.ts +37 -37
  151. package/src/internal/_notationCamel.ts +13 -13
  152. package/src/internal/_notationPascal.ts +8 -8
  153. package/src/internal/_notationSnake.ts +43 -43
  154. package/src/internal/_randomArray.ts +21 -21
  155. package/src/internal/_randomBigint.ts +6 -6
  156. package/src/internal/_randomBoolean.ts +1 -1
  157. package/src/internal/_randomFormatByte.ts +3 -3
  158. package/src/internal/_randomFormatDate.ts +18 -18
  159. package/src/internal/_randomFormatDatetime.ts +16 -16
  160. package/src/internal/_randomFormatDuration.ts +27 -27
  161. package/src/internal/_randomFormatEmail.ts +11 -11
  162. package/src/internal/_randomFormatHostname.ts +6 -6
  163. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  164. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  165. package/src/internal/_randomFormatIpv4.ts +11 -11
  166. package/src/internal/_randomFormatIpv6.ts +11 -11
  167. package/src/internal/_randomFormatIri.ts +3 -3
  168. package/src/internal/_randomFormatIriReference.ts +3 -3
  169. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  170. package/src/internal/_randomFormatPassword.ts +8 -8
  171. package/src/internal/_randomFormatRegex.ts +4 -4
  172. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  173. package/src/internal/_randomFormatTime.ts +14 -14
  174. package/src/internal/_randomFormatUri.ts +3 -3
  175. package/src/internal/_randomFormatUriReference.ts +3 -3
  176. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  177. package/src/internal/_randomFormatUrl.ts +11 -11
  178. package/src/internal/_randomFormatUuid.ts +6 -6
  179. package/src/internal/_randomInteger.ts +47 -47
  180. package/src/internal/_randomNumber.ts +74 -74
  181. package/src/internal/_randomPattern.ts +10 -10
  182. package/src/internal/_randomPick.ts +9 -9
  183. package/src/internal/_randomString.ts +24 -24
  184. package/src/internal/_throwTypeGuardError.ts +5 -5
  185. package/src/internal/_validateReport.ts +13 -13
  186. package/src/internal/private/__notationCapitalize.ts +2 -2
  187. package/src/internal/private/__notationUnsnake.ts +24 -24
  188. package/src/json.ts +752 -752
  189. package/src/llm.ts +481 -342
  190. package/src/misc.ts +658 -658
  191. package/src/module.ts +937 -935
  192. package/src/notations.ts +827 -827
  193. package/src/programmers/AssertProgrammer.ts +454 -454
  194. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  195. package/src/programmers/FeatureProgrammer.ts +622 -622
  196. package/src/programmers/ImportProgrammer.ts +185 -185
  197. package/src/programmers/IsProgrammer.ts +273 -273
  198. package/src/programmers/RandomProgrammer.ts +1190 -1190
  199. package/src/programmers/TypiaProgrammer.ts +174 -174
  200. package/src/programmers/ValidateProgrammer.ts +434 -434
  201. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  202. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  203. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  204. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  205. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  206. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  207. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  208. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  209. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  210. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  211. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  212. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  213. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  214. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  215. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  216. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  217. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  218. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  219. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  220. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  221. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  222. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  223. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  224. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  225. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  226. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  227. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  228. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  229. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  230. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  231. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  232. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  233. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  234. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  235. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  236. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  237. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  238. package/src/programmers/internal/check_array_length.ts +47 -47
  239. package/src/programmers/internal/check_bigint.ts +50 -50
  240. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  241. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  242. package/src/programmers/internal/check_everything.ts +23 -23
  243. package/src/programmers/internal/check_native.ts +27 -27
  244. package/src/programmers/internal/check_number.ts +112 -112
  245. package/src/programmers/internal/check_object.ts +75 -75
  246. package/src/programmers/internal/check_string.ts +50 -50
  247. package/src/programmers/internal/check_template.ts +48 -48
  248. package/src/programmers/internal/check_union_array_like.ts +335 -335
  249. package/src/programmers/internal/decode_union_object.ts +116 -116
  250. package/src/programmers/internal/feature_object_entries.ts +61 -61
  251. package/src/programmers/internal/json_schema_alias.ts +47 -47
  252. package/src/programmers/internal/json_schema_array.ts +45 -45
  253. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  254. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  255. package/src/programmers/internal/json_schema_constant.ts +26 -26
  256. package/src/programmers/internal/json_schema_description.ts +12 -12
  257. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  258. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  259. package/src/programmers/internal/json_schema_native.ts +33 -33
  260. package/src/programmers/internal/json_schema_number.ts +15 -15
  261. package/src/programmers/internal/json_schema_object.ts +158 -158
  262. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  263. package/src/programmers/internal/json_schema_station.ts +182 -182
  264. package/src/programmers/internal/json_schema_string.ts +15 -15
  265. package/src/programmers/internal/json_schema_template.ts +55 -55
  266. package/src/programmers/internal/json_schema_title.ts +20 -20
  267. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  268. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  269. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  270. package/src/programmers/internal/prune_object_properties.ts +71 -71
  271. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  272. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  273. package/src/programmers/internal/template_to_pattern.ts +23 -23
  274. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  275. package/src/programmers/json/JsonApplicationProgrammer.ts +276 -276
  276. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  277. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  278. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  279. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  280. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  281. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  282. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  283. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  284. package/src/programmers/llm/LlmApplicationOfValidateProgrammer.ts +81 -0
  285. package/src/programmers/llm/LlmApplicationProgrammer.ts +276 -276
  286. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  287. package/src/programmers/llm/LlmParametersProgrammer.ts +90 -90
  288. package/src/programmers/llm/LlmSchemaProgrammer.ts +143 -143
  289. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  290. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  291. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  292. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  293. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  294. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  295. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  296. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  297. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  298. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  299. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  300. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  301. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  302. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  303. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  304. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  305. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  306. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  307. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  308. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  309. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  310. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  311. package/src/protobuf.ts +868 -868
  312. package/src/reflect.ts +57 -57
  313. package/src/schemas/json/IJsonApplication.ts +73 -73
  314. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  315. package/src/schemas/json/__IJsonApplication.ts +63 -63
  316. package/src/schemas/llm/ILlmApplicationOfValidate.ts +55 -0
  317. package/src/schemas/llm/ILlmFunctionOfValidate.ts +39 -0
  318. package/src/schemas/metadata/IMetadata.ts +35 -35
  319. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  320. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  321. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  322. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  323. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  324. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  325. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  326. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  327. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  328. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  329. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  330. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  331. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  332. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  333. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  334. package/src/schemas/metadata/Metadata.ts +669 -669
  335. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  336. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  337. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  338. package/src/schemas/metadata/MetadataArray.ts +49 -49
  339. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  340. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  341. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  342. package/src/schemas/metadata/MetadataMap.ts +48 -48
  343. package/src/schemas/metadata/MetadataNative.ts +44 -44
  344. package/src/schemas/metadata/MetadataObject.ts +48 -48
  345. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  346. package/src/schemas/metadata/MetadataParameter.ts +4 -0
  347. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  348. package/src/schemas/metadata/MetadataSet.ts +45 -45
  349. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  350. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  351. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  352. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  353. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  354. package/src/tags/Example.ts +24 -24
  355. package/src/tags/Examples.ts +16 -16
  356. package/src/tags/Format.ts +50 -50
  357. package/src/tags/JsonSchemaPlugin.ts +8 -8
  358. package/src/tags/Sequence.ts +10 -10
  359. package/src/tags/TagBase.ts +82 -82
  360. package/src/tags/Type.ts +32 -32
  361. package/src/tags/UniqueItems.ts +14 -14
  362. package/src/tags/index.ts +21 -21
  363. package/src/transform.ts +35 -35
  364. package/src/transformers/CallExpressionTransformer.ts +547 -545
  365. package/src/transformers/FileTransformer.ts +136 -136
  366. package/src/transformers/IProgrammerProps.ts +11 -11
  367. package/src/transformers/ITransformOptions.ts +62 -62
  368. package/src/transformers/ITransformProps.ts +9 -9
  369. package/src/transformers/ITypiaContext.ts +18 -18
  370. package/src/transformers/ImportTransformer.ts +81 -81
  371. package/src/transformers/NodeTransformer.ts +17 -17
  372. package/src/transformers/TransformerError.ts +60 -60
  373. package/src/transformers/features/AssertTransformer.ts +24 -24
  374. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  375. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  376. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  377. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  378. package/src/transformers/features/IsTransformer.ts +18 -18
  379. package/src/transformers/features/RandomTransformer.ts +41 -41
  380. package/src/transformers/features/ValidateTransformer.ts +18 -18
  381. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  382. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  383. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  384. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  385. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  386. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  387. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  388. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  389. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  390. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  391. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  392. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  393. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  394. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  395. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  396. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  397. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  398. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  399. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  400. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  401. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  402. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  403. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  404. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  405. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  406. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  407. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  408. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  409. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  410. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  411. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  412. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  413. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  414. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  415. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  416. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  417. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  418. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  419. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  420. package/src/transformers/features/json/JsonSchemasTransformer.ts +143 -143
  421. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  422. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  423. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  424. package/src/transformers/features/llm/LlmApplicationOfValidateTransformer.ts +115 -0
  425. package/src/transformers/features/llm/LlmApplicationTransformer.ts +113 -113
  426. package/src/transformers/features/llm/LlmParametersTransformer.ts +89 -89
  427. package/src/transformers/features/llm/LlmSchemaTransformer.ts +130 -130
  428. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  429. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  430. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  431. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  432. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  433. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  434. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  435. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  436. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  437. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  438. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  439. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  440. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  441. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  442. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  443. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  444. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  445. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  446. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  447. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  448. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  449. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  450. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  451. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  452. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  453. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  454. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  455. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  456. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  457. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  458. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  459. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  460. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  461. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  462. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  463. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  464. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  465. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  466. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  467. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  468. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  469. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  470. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  471. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  472. package/src/transformers/internal/GenericTransformer.ts +101 -101
  473. package/src/utils/MapUtil.ts +14 -14
  474. package/src/utils/NamingConvention.ts +94 -94
  475. package/src/utils/ProtobufNameEncoder.ts +32 -32
  476. package/src/utils/StringUtil.ts +16 -16
package/src/http.ts CHANGED
@@ -1,1047 +1,1047 @@
1
- import { Atomic } from "./typings/Atomic";
2
-
3
- import { IReadableURLSearchParams } from "./IReadableURLSearchParams";
4
- import { IValidation } from "./IValidation";
5
- import { Resolved } from "./Resolved";
6
- import { TypeGuardError } from "./TypeGuardError";
7
-
8
- /* ===========================================================
9
- HTTP
10
- - FORM-DATA
11
- - QUERY
12
- - HEADERS
13
- - PARAMETER
14
- - FACTORY FUNCTIONS
15
- ==============================================================
16
- FORM-DATA
17
- ----------------------------------------------------------- */
18
- /**
19
- * Form data decoder.
20
- *
21
- * `typia.http.formData()` is a function decoding `FormData` instance, with
22
- * automatic type casting to the expected type. When roperty type be defined
23
- * as `boolean` or `Blob` type, `typia.http.formData()` will cast the value to
24
- * the expected type when decoding.
25
- *
26
- * By the way, as `FormData` is not enough to express complex data structures,
27
- * `typia.http.formData()` function has some limitations. If target type `T` is
28
- * not following those restrictions, compilation errors would be occured.
29
- *
30
- * 1. Type `T` must be an object type
31
- * 2. Do not allow dynamic property
32
- * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
33
- * 4. By the way, union type never be not allowed
34
- *
35
- * Also, `typia.http.formData()` function does not perform validation about the
36
- * decoded value. Therefore, if you can't sure that input data is following the
37
- * `T` type, it would better to call one of below functions intead.
38
- *
39
- * @template T Expected type of decoded value
40
- * @param input FormData instance
41
- * @returns Decoded form FormData
42
- *
43
- * @author Jeongho Nam - https://github.com/samchon
44
- */
45
- export function formData<T extends object>(input: FormData): Resolved<T>;
46
-
47
- /**
48
- * @internal
49
- */
50
- export function formData(): never {
51
- halt("formData");
52
- }
53
-
54
- /**
55
- * Form data decoder with type assertion.
56
- *
57
- * `typia.http.assertFormData()` is a function decoding `FormData` instance, with
58
- * automatic type casting to the expected type. When roperty type be defined
59
- * as `boolean` or `Blob` type, `typia.http.assertFormData()` will cast the value
60
- * to the expected type when decoding.
61
- *
62
- * Also, after decoding, `typia.http.assertFormData()` performs type assertion to
63
- * the decoded value by combining with {@link assert} function. Therefore, when
64
- * the decoded value is not following the `T` type, {@link TypeGuardError} or
65
- * custom error generated by *errorFactory* would be thrown.
66
- *
67
- * By the way, as `FormData` is not enough to express complex data structures,
68
- * `typia.http.assertFormData()` function has some limitations. If target type `T`
69
- * is not following those restrictions, compilation errors would be occured.
70
- *
71
- * 1. Type `T` must be an object type
72
- * 2. Do not allow dynamic property
73
- * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
74
- * 4. By the way, union type never be not allowed
75
- *
76
- * @template T Expected type of decoded value
77
- * @param input FormData instance
78
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
79
- * @returns Decoded form FormData
80
- *
81
- * @author Jeongho Nam - https://github.com/samchon
82
- */
83
- export function assertFormData<T extends object>(
84
- input: FormData,
85
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
86
- ): Resolved<T>;
87
-
88
- /**
89
- * @internal
90
- */
91
- export function assertFormData(): never {
92
- halt("assertFormData");
93
- }
94
-
95
- /**
96
- * Form data decoder with type checking.
97
- *
98
- * `typia.http.isFormData()` is a function decoding `FormData` instance, with
99
- * automatic type casting to the expected type. When roperty type be defined
100
- * as `boolean` or `Blob` type, `typia.http.isFormData()` will cast the value
101
- * to the expected type when decoding.
102
- *
103
- * Also, after decoding, `typia.http.isFormData()` performs type checking to the
104
- * decoded value by combining with {@link is} function. Therefore, when the
105
- * decoded value is not following the `T` type, `null` value would be returned.
106
- *
107
- * By the way, as `FormData` is not enough to express complex data structures,
108
- * `typia.http.isFormData()` function has some limitations. If target type `T` is
109
- * not following those restrictions, compilation errors would be occured.
110
- *
111
- * 1. Type `T` must be an object type
112
- * 2. Do not allow dynamic property
113
- * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
114
- * 4. By the way, union type never be not allowed
115
- *
116
- * @template T Expected type of decoded value
117
- * @param input FormData instance
118
- * @returns Decoded form FormData or `null` value
119
- *
120
- * @author Jeongho Nam - https://github.com/samchon
121
- */
122
- export function isFormData<T extends object>(
123
- input: FormData,
124
- ): Resolved<T> | null;
125
-
126
- /**
127
- * @internal
128
- */
129
- export function isFormData(): never {
130
- halt("isFormData");
131
- }
132
-
133
- /**
134
- * Form data decoder with type validation.
135
- *
136
- * `typia.http.validateFormData()` is a function decoding `FormData` instance,
137
- * with automatic type casting to the expected type. When roperty type be defined
138
- * as `boolean` or `Blob` type, `typia.http.validateFormData()` will cast the
139
- * value to the expected type when decoding.
140
- *
141
- * Also, after decoding, `typia.http.validateFormData()` performs type validation
142
- * to the decoded value by combining with {@link validate} function. Therefore,
143
- * when the decoded value is not following the `T` type,
144
- * {@link IValidation.IFailure} would be returned. Otherwise,
145
- * x@xxxx IValidation.ISuccess} would be returned.
146
- *
147
- * By the way, as `FormData` is not enough to express complex data structures,
148
- * `typia.http.validateFormData()` function has some limitations. If target type
149
- * `T` is not following those restrictions, compilation errors would be occured.
150
- *
151
- * 1. Type `T` must be an object type
152
- * 2. Do not allow dynamic property
153
- * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
154
- * 4. By the way, union type never be not allowed
155
- *
156
- * @template T Expected type of decoded value
157
- * @param input FormData instance
158
- * @returns Validation result with decoded form FormData
159
- *
160
- * @author Jeongho Nam - https://github.com/samchon
161
- */
162
- export function validateFormData<T extends object>(
163
- input: FormData,
164
- ): IValidation<Resolved<T>>;
165
-
166
- /**
167
- * @internal
168
- */
169
- export function validateFormData(): never {
170
- halt("validateFormData");
171
- }
172
-
173
- /* -----------------------------------------------------------
174
- QUERY
175
- ----------------------------------------------------------- */
176
- /**
177
- * URL query decoder.
178
- *
179
- * `typia.http.query()` is a function decoding a query string or an `URLSearchParams`
180
- * instance, with automatic type casting to the expected type. When property type be
181
- * defined as `boolean` or `number` type, `typia.http.query()` will cast the value to
182
- * the expected type when decoding.
183
- *
184
- * By the way, as URL query is not enough to express complex data structures,
185
- * `typia.http.query()` function has some limitations. If target type `T` is not
186
- * following those restrictions, compilation errors would be occured.
187
- *
188
- * 1. Type `T` must be an object type
189
- * 2. Do not allow dynamic property
190
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
191
- * 4. By the way, union type never be not allowed
192
- *
193
- * Also, `typia.http.query()` function does not perform validation about the decoded
194
- * value. Therefore, if you can't sure that input data is following the `T` type,
195
- * it would better to call one of below functions intead.
196
- *
197
- * - {@link assertQuery}
198
- * - {@link isQuery}
199
- * - {@link validateQuery}
200
- *
201
- * @template T Expected type of decoded value
202
- * @param input Query string or URLSearchParams instance
203
- * @returns Decoded query object
204
- *
205
- * @author Jeongho Nam - https://github.com/samchon
206
- */
207
- export function query<T extends object>(
208
- input: string | IReadableURLSearchParams,
209
- ): Resolved<T>;
210
-
211
- /**
212
- * @internal
213
- */
214
- export function query(): never {
215
- halt("query");
216
- }
217
-
218
- /**
219
- * URL query decoder with type assertion.
220
- *
221
- * `typia.http.assertQuery()` is a function decoding a query string or an
222
- * `URLSearchParams` instance, with automatic type casting to the expected type.
223
- * When property type be defined as `boolean` or `number` type,
224
- * `typia.http.assertQuery()` will cast the value to the expected type when decoding.
225
- *
226
- * Also, after decoding, `typia.http.assertQuery()` performs type assertion to the
227
- * decoded value by combining with {@link assert} function. Therefore, when the
228
- * decoded value is not following the `T` type, {@link TypeGuardError} or custom
229
- * error generated by *errorFactory* would be thrown.
230
- *
231
- * By the way, as URL query is not enough to express complex data structures,
232
- * `typia.http.assertQuery()` function has some limitations. If target type `T` is
233
- * notfollowing those restrictions, compilation errors would be occured.
234
- *
235
- * 1. Type `T` must be an object type
236
- * 2. Do not allow dynamic property
237
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
238
- * 4. By the way, union type never be not allowed
239
- *
240
- * @template T Expected type of decoded value
241
- * @param input Query string or URLSearchParams instance
242
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
243
- * @returns Decoded query object
244
- *
245
- * @author Jeongho Nam - https://github.com/samchon
246
- */
247
- export function assertQuery<T extends object>(
248
- input: string | IReadableURLSearchParams,
249
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
250
- ): Resolved<T>;
251
-
252
- /**
253
- * @internal
254
- */
255
- export function assertQuery(): never {
256
- halt("assertQuery");
257
- }
258
-
259
- /**
260
- * URL query decoder with type checking.
261
- *
262
- * `typia.http.isQuery()` is a function decoding a query string or an
263
- * `URLSearchParams` instance, with automatic type casting to the expected type.
264
- * When property type be defined as `boolean` or `number` type,
265
- * `typia.http.isQuery()` will cast the value to the expected type when decoding.
266
- *
267
- * Also, after decoding, `typia.http.isQuery()` performs type checking to the
268
- * decoded value by combining with {@link is} function. Therefore, when the
269
- * decoded value is not following the `T` type, `null` value would be returned.
270
- *
271
- * By the way, as URL query is not enough to express complex data structures,
272
- * `typia.http.isQuery()` function has some limitations. If target type `T` is
273
- * notfollowing those restrictions, compilation errors would be occured.
274
- *
275
- * 1. Type `T` must be an object type
276
- * 2. Do not allow dynamic property
277
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
278
- * 4. By the way, union type never be not allowed
279
- *
280
- * @template T Expected type of decoded value
281
- * @param input Query string or URLSearchParams instance
282
- * @returns Decoded query object or `null` value
283
- *
284
- * @author Jeongho Nam - https://github.com/samchon
285
- */
286
- export function isQuery<T extends object>(
287
- input: string | IReadableURLSearchParams,
288
- ): Resolved<T> | null;
289
-
290
- /**
291
- * @internal
292
- */
293
- export function isQuery(): never {
294
- halt("isQuery");
295
- }
296
-
297
- /**
298
- * URL query decoder with type validation.
299
- *
300
- * `typia.http.validateQuery()` is a function decoding a query string or an
301
- * `URLSearchParams` instance, with automatic type casting to the expected type.
302
- * When property type be defined as `boolean` or `number` type,
303
- * `typia.http.validateQuery()` will cast the value to the expected type when decoding.
304
- *
305
- * Also, after decoding, `typia.http.validateQuery()` performs type validation to the
306
- * decoded value by combining with {@link validate} function. Therefore, when the
307
- * decoded value is not following the `T` type, {@link IValidation.IFailure} would
308
- * be returned. Otherwise, {@link IValidation.ISuccess} would be returned.
309
- *
310
- * By the way, as URL query is not enough to express complex data structures,
311
- * `typia.http.validateQuery()` function has some limitations. If target type `T` is
312
- * notfollowing those restrictions, compilation errors would be occured.
313
- *
314
- * 1. Type `T` must be an object type
315
- * 2. Do not allow dynamic property
316
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
317
- * 4. By the way, union type never be not allowed
318
- *
319
- * @template T Expected type of decoded value
320
- * @param input Query string or URLSearchParams instance
321
- * @returns Validation result with decoded query object
322
- *
323
- * @author Jeongho Nam - https://github.com/samchon
324
- */
325
- export function validateQuery<T extends object>(
326
- input: string | IReadableURLSearchParams,
327
- ): IValidation<Resolved<T>>;
328
-
329
- /**
330
- * @internal
331
- */
332
- export function validateQuery(): never {
333
- halt("validateQuery");
334
- }
335
-
336
- /* -----------------------------------------------------------
337
- HEADERS
338
- ----------------------------------------------------------- */
339
- /**
340
- * Headers decoder (for express and fastify).
341
- *
342
- * `typia.http.headers()` is a function decoding an header instance, with automatic
343
- * type casting to the expected type. When property type be defined as `boolean` or
344
- * `number` type, `typia.http.headers()` will cast the value to the expected type.
345
- *
346
- * By the way, as HTTP headers are not enough to express complex data structures,
347
- * `typia.http.headers()` function has some limitations. If target type `T` is not
348
- * following those restrictions, compilation errors would be occured.
349
- *
350
- * 1. Type `T` must be an object type
351
- * 2. Do not allow dynamic property
352
- * 3. Property key must be lower case
353
- * 4. Property value cannot be `null`, but `undefined` is possible
354
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
355
- * 6. By the way, union type never be not allowed
356
- * 7. Property `set-cookie` must be array type
357
- * 8. Those properties cannot be array type
358
- * - age
359
- * - authorization
360
- * - content-length
361
- * - content-type
362
- * - etag
363
- * - expires
364
- * - from
365
- * - host
366
- * - if-modified-since
367
- * - if-unmodified-since
368
- * - last-modified
369
- * - location
370
- * - max-forwards
371
- * - proxy-authorization
372
- * - referer
373
- * - retry-after
374
- * - server
375
- * - user-agent
376
- *
377
- * Also, `typia.http.headers()` function does not perform validation about the decoded
378
- * value. Therefore, if you can't sure that input data is following the `T` type,
379
- * it would better to call one of below functions intead.
380
- *
381
- * - {@link assertHeaders}
382
- * - {@link isHeaders}
383
- * - {@link validateHeaders}
384
- *
385
- * @template T Expected type of decoded value
386
- * @param input Query string or URLSearchParams instance
387
- * @returns Decoded headers object
388
- *
389
- * @author Jeongho Nam - https://github.com/samchon
390
- */
391
- export function headers<T extends object>(
392
- input: Record<string, string | string[] | undefined>,
393
- ): Resolved<T>;
394
-
395
- /**
396
- * @internal
397
- */
398
- export function headers(): never {
399
- halt("headers");
400
- }
401
-
402
- /**
403
- * Headers decoder with type assertion (for express and fastify).
404
- *
405
- * `typia.http.assertHeaders()` is a function decoding an header instance, with
406
- * automatic type casting to the expected type. When property type be defined as
407
- * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
408
- * expected type.
409
- *
410
- * Also, after decoding, `typia.http.assertHeaders()` performs type assertion to the
411
- * decoded value by combining with {@link assert} function. Therefore, when the
412
- * decoded value is not following the `T` type, {@link TypeGuardError} or custom
413
- * error generated by *errorFactory* would be thrown.
414
- *
415
- * By the way, as HTTP headers are not enough to express complex data structures,
416
- * `typia.http.headers()` function has some limitations. If target type `T` is not
417
- * following those restrictions, compilation errors would be occured.
418
- *
419
- * 1. Type `T` must be an object type
420
- * 2. Do not allow dynamic property
421
- * 3. Property key must be lower case
422
- * 4. Property value cannot be `null`, but `undefined` is possible
423
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
424
- * 6. By the way, union type never be not allowed
425
- * 7. Property `set-cookie` must be array type
426
- * 8. Those properties cannot be array type
427
- * - age
428
- * - authorization
429
- * - content-length
430
- * - content-type
431
- * - etag
432
- * - expires
433
- * - from
434
- * - host
435
- * - if-modified-since
436
- * - if-unmodified-since
437
- * - last-modified
438
- * - location
439
- * - max-forwards
440
- * - proxy-authorization
441
- * - referer
442
- * - retry-after
443
- * - server
444
- * - user-agent
445
- *
446
- * @template T Expected type of decoded value
447
- * @param input Query string or URLSearchParams instance
448
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
449
- * @returns Decoded headers object
450
- *
451
- * @author Jeongho Nam - https://github.com/samchon
452
- */
453
- export function assertHeaders<T extends object>(
454
- input: Record<string, string | string[] | undefined>,
455
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
456
- ): Resolved<T>;
457
-
458
- /**
459
- * @internal
460
- */
461
- export function assertHeaders(): never {
462
- halt("assertHeaders");
463
- }
464
-
465
- /**
466
- * > You must configure the generic argument `T`.
467
- *
468
- * Headers decoder with type checking (for express and fastify).
469
- *
470
- * `typia.http.isHeaders()` is a function decoding an header instance, with
471
- * automatic type casting to the expected type. When property type be defined as
472
- * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
473
- * expected type.
474
- *
475
- * Also, after decoding, `typia.http.isHeaders()` performs type checking to the
476
- * decoded value by combining with {@link is} function. Therefore, when the
477
- * decoded value is not following the `T` type, `null` value would be returned.
478
- *
479
- * By the way, as HTTP headers are not enough to express complex data structures,
480
- * `typia.http.headers()` function has some limitations. If target type `T` is not
481
- * following those restrictions, compilation errors would be occured.
482
- *
483
- * 1. Type `T` must be an object type
484
- * 2. Do not allow dynamic property
485
- * 3. Property key must be lower case
486
- * 4. Property value cannot be `null`, but `undefined` is possible
487
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
488
- * 6. By the way, union type never be not allowed
489
- * 7. Property `set-cookie` must be array type
490
- * 8. Those properties cannot be array type
491
- * - age
492
- * - authorization
493
- * - content-length
494
- * - content-type
495
- * - etag
496
- * - expires
497
- * - from
498
- * - host
499
- * - if-modified-since
500
- * - if-unmodified-since
501
- * - last-modified
502
- * - location
503
- * - max-forwards
504
- * - proxy-authorization
505
- * - referer
506
- * - retry-after
507
- * - server
508
- * - user-agent
509
- *
510
- * @template T Expected type of decoded value
511
- * @param input Query string or URLSearchParams instance
512
- * @returns Decoded headers object or `null` value
513
- *
514
- * @author Jeongho Nam - https://github.com/samchon
515
- */
516
- export function isHeaders<T extends object>(
517
- input: Record<string, string | string[] | undefined>,
518
- ): Resolved<T> | null;
519
-
520
- /**
521
- * @internal
522
- */
523
- export function isHeaders(): never {
524
- halt("isHeaders");
525
- }
526
-
527
- /**
528
- * Headers decoder with type validation (for express and fastify).
529
- *
530
- * `typia.http.validateHeaders()` is a function decoding an header instance, with
531
- * automatic type casting to the expected type. When property type be defined as
532
- * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
533
- * expected type.
534
- *
535
- * Also, after decoding, `typia.http.validateHeaders()` performs type assertion to the
536
- * decoded value by combining with {@link validate} function. Therefore, when the
537
- * decoded value is not following the `T` type, {@link IValidation.IError} would be
538
- * returned. Otherwise, {@link IValidation.ISuccess} be returned.
539
- *
540
- * By the way, as HTTP headers are not enough to express complex data structures,
541
- * `typia.http.headers()` function has some limitations. If target type `T` is not
542
- * following those restrictions, compilation errors would be occured.
543
- *
544
- * 1. Type `T` must be an object type
545
- * 2. Do not allow dynamic property
546
- * 3. Property key must be lower case
547
- * 4. Property value cannot be `null`, but `undefined` is possible
548
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
549
- * 6. By the way, union type never be not allowed
550
- * 7. Property `set-cookie` must be array type
551
- * 8. Those properties cannot be array type
552
- * - age
553
- * - authorization
554
- * - content-length
555
- * - content-type
556
- * - etag
557
- * - expires
558
- * - from
559
- * - host
560
- * - if-modified-since
561
- * - if-unmodified-since
562
- * - last-modified
563
- * - location
564
- * - max-forwards
565
- * - proxy-authorization
566
- * - referer
567
- * - retry-after
568
- * - server
569
- * - user-agent
570
- *
571
- * @template T Expected type of decoded value
572
- * @param input Query string or URLSearchParams instance
573
- * @returns Decoded headers object
574
- *
575
- * @author Jeongho Nam - https://github.com/samchon
576
- */
577
- export function validateHeaders<T extends object>(
578
- input: Record<string, string | string[] | undefined>,
579
- ): IValidation<Resolved<T>>;
580
-
581
- /**
582
- * @internal
583
- */
584
- export function validateHeaders(): never {
585
- halt("validateHeaders");
586
- }
587
-
588
- /* -----------------------------------------------------------
589
- PARAMETER
590
- ----------------------------------------------------------- */
591
- /**
592
- * URL path parameter decoder.
593
- *
594
- * `typia.http.parameter()` is a function decoding a path parameter, with automatic
595
- * type casting to the expected type. When type `T` has beeen defined as `boolean` or
596
- * `number` type, `typia.http.parameter()` will cast the value to the expected type.
597
- *
598
- * Also, `typia.http.parameter()` performs type assertion to the decoded value by
599
- * combining with {@link assert} function. Therefore, when the decoded value is not
600
- * following the `T` type, {@link TypeGuardError} would be thrown.
601
- *
602
- * @template T Expected type of decoded value
603
- * @param input Path parameter string
604
- * @returns Decoded path parameter value
605
- */
606
- export function parameter<T extends Atomic.Type | null>(
607
- input: string,
608
- ): Resolved<T>;
609
-
610
- /**
611
- * @internal
612
- */
613
- export function parameter(): never {
614
- halt("parameter");
615
- }
616
-
617
- /* -----------------------------------------------------------
618
- FACTORY FUNCTIONS
619
- ----------------------------------------------------------- */
620
- /**
621
- * Creates a reusable {@link formdata} function.
622
- *
623
- * @danger You must configure the generic argument `T`
624
- * @template T The type of the formdata object
625
- * @throws compile error
626
- *
627
- * @author Jeongho Nam - https://github.com/samchon
628
- */
629
- export function createFormData(): never;
630
-
631
- /**
632
- * Creates a reusable {@link formdata} function.
633
- *
634
- * @template T The type of the formdata object
635
- * @returns A reusable `formdata` function
636
- *
637
- * @author Jeongho Nam - https://github.com/samchon
638
- */
639
- export function createFormData<T extends object>(): (input: FormData) => T;
640
-
641
- /**
642
- * @internal
643
- */
644
- export function createFormData<T>(): (input: FormData) => T {
645
- halt("createFormData");
646
- }
647
-
648
- /**
649
- * Creates a reusable {@link assertFormData} function.
650
- *
651
- * @danger You must configure the generic argument `T`
652
- * @template T The type of the formdata object
653
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
654
- * @throws compile error
655
- *
656
- * @author Jeongho Nam - https://github.com/samchon
657
- */
658
- export function createAssertFormData(
659
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
660
- ): never;
661
-
662
- /**
663
- * Creates a reusable {@link assertFormData} function.
664
- *
665
- * @template T The type of the formdata object
666
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
667
- * @returns A reusable `assertFormData` function
668
- *
669
- * @author Jeongho Nam - https://github.com/samchon
670
- */
671
- export function createAssertFormData<T extends object>(
672
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
673
- ): (input: FormData) => T;
674
-
675
- /**
676
- * @internal
677
- */
678
- export function createAssertFormData<T>(): (input: FormData) => T {
679
- halt("createAssertFormData");
680
- }
681
-
682
- /**
683
- * Creates a reusable {@link isFormData} function.
684
- *
685
- * @danger You must configure the generic argument `T`
686
- * @template T The type of the formdata object
687
- * @throws compile error
688
- *
689
- * @author Jeongho Nam - https://github.com/samchon
690
- */
691
- export function createIsFormData(): never;
692
-
693
- /**
694
- * Creates a reusable {@link isFormData} function.
695
- *
696
- * @template T The type of the formdata object
697
- * @returns A reusable `isFormData` function
698
- *
699
- * @author Jeongho Nam - https://github.com/samchon
700
- */
701
- export function createIsFormData<T extends object>(): (
702
- input: FormData,
703
- ) => T | null;
704
-
705
- /**
706
- * @internal
707
- */
708
- export function createIsFormData<T>(): (input: FormData) => T | null {
709
- halt("createIsFormData");
710
- }
711
-
712
- /**
713
- * Creates a reusable {@link validateFormData} function.
714
- *
715
- * @danger You must configure the generic argument `T`
716
- * @template T The type of the formdata object
717
- * @throws compile error
718
- *
719
- * @author Jeongho Nam - https://github.com/samchon
720
- */
721
- export function createValidateFormData(): never;
722
-
723
- /**
724
- * Creates a reusable {@link validateFormData} function.
725
- *
726
- * @template T The type of the formdata object
727
- * @returns A reusable `validateFormData` function
728
- *
729
- * @author Jeongho Nam - https://github.com/samchon
730
- */
731
- export function createValidateFormData<T extends object>(): (
732
- input: FormData,
733
- ) => IValidation<Resolved<T>>;
734
-
735
- /**
736
- * @internal
737
- */
738
- export function createValidateFormData<T>(): (
739
- input: FormData,
740
- ) => IValidation<Resolved<T>> {
741
- halt("createValidateFormData");
742
- }
743
-
744
- /**
745
- * Creates a reusable {@link query} function.
746
- *
747
- * @danger You must configure the generic argument `T`
748
- * @template T The type of the query object
749
- * @throws compile error
750
- *
751
- * @author Jeongho Nam - https://github.com/samchon
752
- */
753
- export function createQuery(): never;
754
-
755
- /**
756
- * Creates a reusable {@link query} function.
757
- *
758
- * @template T The type of the query object
759
- * @returns A reusable `query` function
760
- *
761
- * @author Jeongho Nam - https://github.com/samchon
762
- */
763
- export function createQuery<T extends object>(): (
764
- input: string | IReadableURLSearchParams,
765
- ) => T;
766
-
767
- /**
768
- * @internal
769
- */
770
- export function createQuery<T>(): (
771
- input: string | IReadableURLSearchParams,
772
- ) => T {
773
- halt("createQuery");
774
- }
775
-
776
- /**
777
- * Creates a reusable {@link assertQuery} function.
778
- *
779
- * @danger You must configure the generic argument `T`
780
- * @template T The type of the query object
781
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
782
- * @throws compile error
783
- *
784
- * @author Jeongho Nam - https://github.com/samchon
785
- */
786
- export function createAssertQuery(
787
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
788
- ): never;
789
-
790
- /**
791
- * Creates a reusable {@link assertQuery} function.
792
- *
793
- * @template T The type of the query object
794
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
795
- * @returns A reusable `assertQuery` function
796
- *
797
- * @author Jeongho Nam - https://github.com/samchon
798
- */
799
- export function createAssertQuery<T extends object>(
800
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
801
- ): (input: string | IReadableURLSearchParams) => T;
802
-
803
- /**
804
- * @internal
805
- */
806
- export function createAssertQuery<T>(): (
807
- input: string | IReadableURLSearchParams,
808
- ) => T {
809
- halt("createAssertQuery");
810
- }
811
-
812
- /**
813
- * Creates a reusable {@link isQuery} function.
814
- *
815
- * @danger You must configure the generic argument `T`
816
- * @template T The type of the query object
817
- * @throws compile error
818
- *
819
- * @author Jeongho Nam - https://github.com/samchon
820
- */
821
- export function createIsQuery(): never;
822
-
823
- /**
824
- * Creates a reusable {@link isQuery} function.
825
- *
826
- * @template T The type of the query object
827
- * @returns A reusable `isQuery` function
828
- *
829
- * @author Jeongho Nam - https://github.com/samchon
830
- */
831
- export function createIsQuery<T extends object>(): (
832
- input: string | IReadableURLSearchParams,
833
- ) => T | null;
834
-
835
- /**
836
- * @internal
837
- */
838
- export function createIsQuery<T>(): (
839
- input: string | IReadableURLSearchParams,
840
- ) => T | null {
841
- halt("createIsQuery");
842
- }
843
-
844
- /**
845
- * Creates a reusable {@link validateQuery} function.
846
- *
847
- * @danger You must configure the generic argument `T`
848
- * @template T The type of the query object
849
- * @throws compile error
850
- *
851
- * @author Jeongho Nam - https://github.com/samchon
852
- */
853
- export function createValidateQuery(): never;
854
-
855
- /**
856
- * Creates a reusable {@link validateQuery} function.
857
- *
858
- * @template T The type of the query object
859
- * @returns A reusable `validateQuery` function
860
- *
861
- * @author Jeongho Nam - https://github.com/samchon
862
- */
863
- export function createValidateQuery<T extends object>(): (
864
- input: string | IReadableURLSearchParams,
865
- ) => IValidation<Resolved<T>>;
866
-
867
- /**
868
- * @internal
869
- */
870
- export function createValidateQuery<T>(): (
871
- input: string | IReadableURLSearchParams,
872
- ) => IValidation<Resolved<T>> {
873
- halt("createValidateQuery");
874
- }
875
-
876
- /**
877
- * Creates a reusable {@link headers} function.
878
- *
879
- * @danger You must configure the generic argument `T`
880
- * @template T The type of the headers object
881
- * @throws compile error
882
- *
883
- * @author Jeongho Nam - https://github.com/samchon
884
- */
885
- export function createHeaders(): never;
886
-
887
- /**
888
- * Creates a reusable {@link headers} function.
889
- *
890
- * @template T The type of the headers object
891
- * @returns A reusable `headers` function
892
- *
893
- * @author Jeongho Nam - https://github.com/samchon
894
- */
895
- export function createHeaders<T extends object>(): (
896
- input: Record<string, string | string[] | undefined>,
897
- ) => T;
898
-
899
- /**
900
- * @internal
901
- */
902
- export function createHeaders<T>(): (
903
- input: Record<string, string | string[] | undefined>,
904
- ) => T {
905
- halt("createHeaders");
906
- }
907
-
908
- /**
909
- * Creates a reusable {@link assertHeaders} function.
910
- *
911
- * @danger You must configure the generic argument `T`
912
- * @template T The type of the headers object
913
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
914
- * @throws compile error
915
- *
916
- * @author Jeongho Nam - https://github.com/samchon
917
- */
918
- export function createAssertHeaders(
919
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
920
- ): never;
921
-
922
- /**
923
- * Creates a reusable {@link assertHeaders} function.
924
- *
925
- * @template T The type of the headers object
926
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
927
- * @returns A reusable `assertHeaders` function
928
- *
929
- * @author Jeongho Nam - https://github.com/samchon
930
- */
931
- export function createAssertHeaders<T extends object>(
932
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
933
- ): (input: Record<string, string | string[] | undefined>) => T;
934
-
935
- /**
936
- * @internal
937
- */
938
- export function createAssertHeaders<T>(): (
939
- input: Record<string, string | string[] | undefined>,
940
- ) => T {
941
- halt("createAssertHeaders");
942
- }
943
-
944
- /**
945
- * Creates a reusable {@link isHeaders} function.
946
- *
947
- * @danger You must configure the generic argument `T`
948
- * @template T The type of the headers object
949
- * @throws compile error
950
- *
951
- * @author Jeongho Nam - https://github.com/samchon
952
- */
953
- export function createIsHeaders(): never;
954
-
955
- /**
956
- * Creates a reusable {@link isHeaders} function.
957
- *
958
- * @template T The type of the headers object
959
- * @returns A reusable `isHeaders` function
960
- *
961
- * @author Jeongho Nam - https://github.com/samchon
962
- */
963
- export function createIsHeaders<T extends object>(): (
964
- input: Record<string, string | string[] | undefined>,
965
- ) => T | null;
966
-
967
- /**
968
- * @internal
969
- */
970
- export function createIsHeaders<T>(): (
971
- input: Record<string, string | string[] | undefined>,
972
- ) => T | null {
973
- halt("createIsHeaders");
974
- }
975
-
976
- /**
977
- * Creates a reusable {@link validateHeaders} function.
978
- *
979
- * @danger You must configure the generic argument `T`
980
- * @template T The type of the headers object
981
- * @throws compile error
982
- *
983
- * @author Jeongho Nam - https://github.com/samchon
984
- */
985
- export function createValidateHeaders(): never;
986
-
987
- /**
988
- * Creates a reusable {@link validateHeaders} function.
989
- *
990
- * @template T The type of the headers object
991
- * @returns A reusable `validateHeaders` function
992
- *
993
- * @author Jeongho Nam - https://github.com/samchon
994
- */
995
- export function createValidateHeaders<T extends object>(): (
996
- input: Record<string, string | string[] | undefined>,
997
- ) => IValidation<Resolved<T>>;
998
-
999
- /**
1000
- * @internal
1001
- */
1002
- export function createValidateHeaders<T>(): (
1003
- input: Record<string, string | string[] | undefined>,
1004
- ) => IValidation<Resolved<T>> {
1005
- halt("createValidateHeaders");
1006
- }
1007
-
1008
- /**
1009
- * Creates a reusable {@link parameter} function.
1010
- *
1011
- * @danger You must configure the generic argument `T`
1012
- * @template T The type of the parameter value
1013
- * @throws compile error
1014
- *
1015
- * @author Jeongho Nam - https://github.com/samchon
1016
- */
1017
- export function createParameter(): never;
1018
-
1019
- /**
1020
- * Creates a reusable {@link parameter} function.
1021
- *
1022
- * @template T The type of the parameter value
1023
- * @returns A reusable `parameter` function
1024
- *
1025
- * @author Jeongho Nam - https://github.com/samchon
1026
- */
1027
- export function createParameter<T extends Atomic.Type | null>(): (
1028
- input: string,
1029
- ) => T;
1030
-
1031
- /**
1032
- * @internal
1033
- */
1034
- export function createParameter<T extends Atomic.Type | null>(): (
1035
- input: string,
1036
- ) => T {
1037
- halt("createParameter");
1038
- }
1039
-
1040
- /**
1041
- * @internal
1042
- */
1043
- function halt(name: string): never {
1044
- throw new Error(
1045
- `Error on typia.http.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
1046
- );
1047
- }
1
+ import { Atomic } from "./typings/Atomic";
2
+
3
+ import { IReadableURLSearchParams } from "./IReadableURLSearchParams";
4
+ import { IValidation } from "./IValidation";
5
+ import { Resolved } from "./Resolved";
6
+ import { TypeGuardError } from "./TypeGuardError";
7
+
8
+ /* ===========================================================
9
+ HTTP
10
+ - FORM-DATA
11
+ - QUERY
12
+ - HEADERS
13
+ - PARAMETER
14
+ - FACTORY FUNCTIONS
15
+ ==============================================================
16
+ FORM-DATA
17
+ ----------------------------------------------------------- */
18
+ /**
19
+ * Form data decoder.
20
+ *
21
+ * `typia.http.formData()` is a function decoding `FormData` instance, with
22
+ * automatic type casting to the expected type. When roperty type be defined
23
+ * as `boolean` or `Blob` type, `typia.http.formData()` will cast the value to
24
+ * the expected type when decoding.
25
+ *
26
+ * By the way, as `FormData` is not enough to express complex data structures,
27
+ * `typia.http.formData()` function has some limitations. If target type `T` is
28
+ * not following those restrictions, compilation errors would be occured.
29
+ *
30
+ * 1. Type `T` must be an object type
31
+ * 2. Do not allow dynamic property
32
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
33
+ * 4. By the way, union type never be not allowed
34
+ *
35
+ * Also, `typia.http.formData()` function does not perform validation about the
36
+ * decoded value. Therefore, if you can't sure that input data is following the
37
+ * `T` type, it would better to call one of below functions intead.
38
+ *
39
+ * @template T Expected type of decoded value
40
+ * @param input FormData instance
41
+ * @returns Decoded form FormData
42
+ *
43
+ * @author Jeongho Nam - https://github.com/samchon
44
+ */
45
+ export function formData<T extends object>(input: FormData): Resolved<T>;
46
+
47
+ /**
48
+ * @internal
49
+ */
50
+ export function formData(): never {
51
+ halt("formData");
52
+ }
53
+
54
+ /**
55
+ * Form data decoder with type assertion.
56
+ *
57
+ * `typia.http.assertFormData()` is a function decoding `FormData` instance, with
58
+ * automatic type casting to the expected type. When roperty type be defined
59
+ * as `boolean` or `Blob` type, `typia.http.assertFormData()` will cast the value
60
+ * to the expected type when decoding.
61
+ *
62
+ * Also, after decoding, `typia.http.assertFormData()` performs type assertion to
63
+ * the decoded value by combining with {@link assert} function. Therefore, when
64
+ * the decoded value is not following the `T` type, {@link TypeGuardError} or
65
+ * custom error generated by *errorFactory* would be thrown.
66
+ *
67
+ * By the way, as `FormData` is not enough to express complex data structures,
68
+ * `typia.http.assertFormData()` function has some limitations. If target type `T`
69
+ * is not following those restrictions, compilation errors would be occured.
70
+ *
71
+ * 1. Type `T` must be an object type
72
+ * 2. Do not allow dynamic property
73
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
74
+ * 4. By the way, union type never be not allowed
75
+ *
76
+ * @template T Expected type of decoded value
77
+ * @param input FormData instance
78
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
79
+ * @returns Decoded form FormData
80
+ *
81
+ * @author Jeongho Nam - https://github.com/samchon
82
+ */
83
+ export function assertFormData<T extends object>(
84
+ input: FormData,
85
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
86
+ ): Resolved<T>;
87
+
88
+ /**
89
+ * @internal
90
+ */
91
+ export function assertFormData(): never {
92
+ halt("assertFormData");
93
+ }
94
+
95
+ /**
96
+ * Form data decoder with type checking.
97
+ *
98
+ * `typia.http.isFormData()` is a function decoding `FormData` instance, with
99
+ * automatic type casting to the expected type. When roperty type be defined
100
+ * as `boolean` or `Blob` type, `typia.http.isFormData()` will cast the value
101
+ * to the expected type when decoding.
102
+ *
103
+ * Also, after decoding, `typia.http.isFormData()` performs type checking to the
104
+ * decoded value by combining with {@link is} function. Therefore, when the
105
+ * decoded value is not following the `T` type, `null` value would be returned.
106
+ *
107
+ * By the way, as `FormData` is not enough to express complex data structures,
108
+ * `typia.http.isFormData()` function has some limitations. If target type `T` is
109
+ * not following those restrictions, compilation errors would be occured.
110
+ *
111
+ * 1. Type `T` must be an object type
112
+ * 2. Do not allow dynamic property
113
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
114
+ * 4. By the way, union type never be not allowed
115
+ *
116
+ * @template T Expected type of decoded value
117
+ * @param input FormData instance
118
+ * @returns Decoded form FormData or `null` value
119
+ *
120
+ * @author Jeongho Nam - https://github.com/samchon
121
+ */
122
+ export function isFormData<T extends object>(
123
+ input: FormData,
124
+ ): Resolved<T> | null;
125
+
126
+ /**
127
+ * @internal
128
+ */
129
+ export function isFormData(): never {
130
+ halt("isFormData");
131
+ }
132
+
133
+ /**
134
+ * Form data decoder with type validation.
135
+ *
136
+ * `typia.http.validateFormData()` is a function decoding `FormData` instance,
137
+ * with automatic type casting to the expected type. When roperty type be defined
138
+ * as `boolean` or `Blob` type, `typia.http.validateFormData()` will cast the
139
+ * value to the expected type when decoding.
140
+ *
141
+ * Also, after decoding, `typia.http.validateFormData()` performs type validation
142
+ * to the decoded value by combining with {@link validate} function. Therefore,
143
+ * when the decoded value is not following the `T` type,
144
+ * {@link IValidation.IFailure} would be returned. Otherwise,
145
+ * x@xxxx IValidation.ISuccess} would be returned.
146
+ *
147
+ * By the way, as `FormData` is not enough to express complex data structures,
148
+ * `typia.http.validateFormData()` function has some limitations. If target type
149
+ * `T` is not following those restrictions, compilation errors would be occured.
150
+ *
151
+ * 1. Type `T` must be an object type
152
+ * 2. Do not allow dynamic property
153
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
154
+ * 4. By the way, union type never be not allowed
155
+ *
156
+ * @template T Expected type of decoded value
157
+ * @param input FormData instance
158
+ * @returns Validation result with decoded form FormData
159
+ *
160
+ * @author Jeongho Nam - https://github.com/samchon
161
+ */
162
+ export function validateFormData<T extends object>(
163
+ input: FormData,
164
+ ): IValidation<Resolved<T>>;
165
+
166
+ /**
167
+ * @internal
168
+ */
169
+ export function validateFormData(): never {
170
+ halt("validateFormData");
171
+ }
172
+
173
+ /* -----------------------------------------------------------
174
+ QUERY
175
+ ----------------------------------------------------------- */
176
+ /**
177
+ * URL query decoder.
178
+ *
179
+ * `typia.http.query()` is a function decoding a query string or an `URLSearchParams`
180
+ * instance, with automatic type casting to the expected type. When property type be
181
+ * defined as `boolean` or `number` type, `typia.http.query()` will cast the value to
182
+ * the expected type when decoding.
183
+ *
184
+ * By the way, as URL query is not enough to express complex data structures,
185
+ * `typia.http.query()` function has some limitations. If target type `T` is not
186
+ * following those restrictions, compilation errors would be occured.
187
+ *
188
+ * 1. Type `T` must be an object type
189
+ * 2. Do not allow dynamic property
190
+ * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
191
+ * 4. By the way, union type never be not allowed
192
+ *
193
+ * Also, `typia.http.query()` function does not perform validation about the decoded
194
+ * value. Therefore, if you can't sure that input data is following the `T` type,
195
+ * it would better to call one of below functions intead.
196
+ *
197
+ * - {@link assertQuery}
198
+ * - {@link isQuery}
199
+ * - {@link validateQuery}
200
+ *
201
+ * @template T Expected type of decoded value
202
+ * @param input Query string or URLSearchParams instance
203
+ * @returns Decoded query object
204
+ *
205
+ * @author Jeongho Nam - https://github.com/samchon
206
+ */
207
+ export function query<T extends object>(
208
+ input: string | IReadableURLSearchParams,
209
+ ): Resolved<T>;
210
+
211
+ /**
212
+ * @internal
213
+ */
214
+ export function query(): never {
215
+ halt("query");
216
+ }
217
+
218
+ /**
219
+ * URL query decoder with type assertion.
220
+ *
221
+ * `typia.http.assertQuery()` is a function decoding a query string or an
222
+ * `URLSearchParams` instance, with automatic type casting to the expected type.
223
+ * When property type be defined as `boolean` or `number` type,
224
+ * `typia.http.assertQuery()` will cast the value to the expected type when decoding.
225
+ *
226
+ * Also, after decoding, `typia.http.assertQuery()` performs type assertion to the
227
+ * decoded value by combining with {@link assert} function. Therefore, when the
228
+ * decoded value is not following the `T` type, {@link TypeGuardError} or custom
229
+ * error generated by *errorFactory* would be thrown.
230
+ *
231
+ * By the way, as URL query is not enough to express complex data structures,
232
+ * `typia.http.assertQuery()` function has some limitations. If target type `T` is
233
+ * notfollowing those restrictions, compilation errors would be occured.
234
+ *
235
+ * 1. Type `T` must be an object type
236
+ * 2. Do not allow dynamic property
237
+ * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
238
+ * 4. By the way, union type never be not allowed
239
+ *
240
+ * @template T Expected type of decoded value
241
+ * @param input Query string or URLSearchParams instance
242
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
243
+ * @returns Decoded query object
244
+ *
245
+ * @author Jeongho Nam - https://github.com/samchon
246
+ */
247
+ export function assertQuery<T extends object>(
248
+ input: string | IReadableURLSearchParams,
249
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
250
+ ): Resolved<T>;
251
+
252
+ /**
253
+ * @internal
254
+ */
255
+ export function assertQuery(): never {
256
+ halt("assertQuery");
257
+ }
258
+
259
+ /**
260
+ * URL query decoder with type checking.
261
+ *
262
+ * `typia.http.isQuery()` is a function decoding a query string or an
263
+ * `URLSearchParams` instance, with automatic type casting to the expected type.
264
+ * When property type be defined as `boolean` or `number` type,
265
+ * `typia.http.isQuery()` will cast the value to the expected type when decoding.
266
+ *
267
+ * Also, after decoding, `typia.http.isQuery()` performs type checking to the
268
+ * decoded value by combining with {@link is} function. Therefore, when the
269
+ * decoded value is not following the `T` type, `null` value would be returned.
270
+ *
271
+ * By the way, as URL query is not enough to express complex data structures,
272
+ * `typia.http.isQuery()` function has some limitations. If target type `T` is
273
+ * notfollowing those restrictions, compilation errors would be occured.
274
+ *
275
+ * 1. Type `T` must be an object type
276
+ * 2. Do not allow dynamic property
277
+ * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
278
+ * 4. By the way, union type never be not allowed
279
+ *
280
+ * @template T Expected type of decoded value
281
+ * @param input Query string or URLSearchParams instance
282
+ * @returns Decoded query object or `null` value
283
+ *
284
+ * @author Jeongho Nam - https://github.com/samchon
285
+ */
286
+ export function isQuery<T extends object>(
287
+ input: string | IReadableURLSearchParams,
288
+ ): Resolved<T> | null;
289
+
290
+ /**
291
+ * @internal
292
+ */
293
+ export function isQuery(): never {
294
+ halt("isQuery");
295
+ }
296
+
297
+ /**
298
+ * URL query decoder with type validation.
299
+ *
300
+ * `typia.http.validateQuery()` is a function decoding a query string or an
301
+ * `URLSearchParams` instance, with automatic type casting to the expected type.
302
+ * When property type be defined as `boolean` or `number` type,
303
+ * `typia.http.validateQuery()` will cast the value to the expected type when decoding.
304
+ *
305
+ * Also, after decoding, `typia.http.validateQuery()` performs type validation to the
306
+ * decoded value by combining with {@link validate} function. Therefore, when the
307
+ * decoded value is not following the `T` type, {@link IValidation.IFailure} would
308
+ * be returned. Otherwise, {@link IValidation.ISuccess} would be returned.
309
+ *
310
+ * By the way, as URL query is not enough to express complex data structures,
311
+ * `typia.http.validateQuery()` function has some limitations. If target type `T` is
312
+ * notfollowing those restrictions, compilation errors would be occured.
313
+ *
314
+ * 1. Type `T` must be an object type
315
+ * 2. Do not allow dynamic property
316
+ * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
317
+ * 4. By the way, union type never be not allowed
318
+ *
319
+ * @template T Expected type of decoded value
320
+ * @param input Query string or URLSearchParams instance
321
+ * @returns Validation result with decoded query object
322
+ *
323
+ * @author Jeongho Nam - https://github.com/samchon
324
+ */
325
+ export function validateQuery<T extends object>(
326
+ input: string | IReadableURLSearchParams,
327
+ ): IValidation<Resolved<T>>;
328
+
329
+ /**
330
+ * @internal
331
+ */
332
+ export function validateQuery(): never {
333
+ halt("validateQuery");
334
+ }
335
+
336
+ /* -----------------------------------------------------------
337
+ HEADERS
338
+ ----------------------------------------------------------- */
339
+ /**
340
+ * Headers decoder (for express and fastify).
341
+ *
342
+ * `typia.http.headers()` is a function decoding an header instance, with automatic
343
+ * type casting to the expected type. When property type be defined as `boolean` or
344
+ * `number` type, `typia.http.headers()` will cast the value to the expected type.
345
+ *
346
+ * By the way, as HTTP headers are not enough to express complex data structures,
347
+ * `typia.http.headers()` function has some limitations. If target type `T` is not
348
+ * following those restrictions, compilation errors would be occured.
349
+ *
350
+ * 1. Type `T` must be an object type
351
+ * 2. Do not allow dynamic property
352
+ * 3. Property key must be lower case
353
+ * 4. Property value cannot be `null`, but `undefined` is possible
354
+ * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
355
+ * 6. By the way, union type never be not allowed
356
+ * 7. Property `set-cookie` must be array type
357
+ * 8. Those properties cannot be array type
358
+ * - age
359
+ * - authorization
360
+ * - content-length
361
+ * - content-type
362
+ * - etag
363
+ * - expires
364
+ * - from
365
+ * - host
366
+ * - if-modified-since
367
+ * - if-unmodified-since
368
+ * - last-modified
369
+ * - location
370
+ * - max-forwards
371
+ * - proxy-authorization
372
+ * - referer
373
+ * - retry-after
374
+ * - server
375
+ * - user-agent
376
+ *
377
+ * Also, `typia.http.headers()` function does not perform validation about the decoded
378
+ * value. Therefore, if you can't sure that input data is following the `T` type,
379
+ * it would better to call one of below functions intead.
380
+ *
381
+ * - {@link assertHeaders}
382
+ * - {@link isHeaders}
383
+ * - {@link validateHeaders}
384
+ *
385
+ * @template T Expected type of decoded value
386
+ * @param input Query string or URLSearchParams instance
387
+ * @returns Decoded headers object
388
+ *
389
+ * @author Jeongho Nam - https://github.com/samchon
390
+ */
391
+ export function headers<T extends object>(
392
+ input: Record<string, string | string[] | undefined>,
393
+ ): Resolved<T>;
394
+
395
+ /**
396
+ * @internal
397
+ */
398
+ export function headers(): never {
399
+ halt("headers");
400
+ }
401
+
402
+ /**
403
+ * Headers decoder with type assertion (for express and fastify).
404
+ *
405
+ * `typia.http.assertHeaders()` is a function decoding an header instance, with
406
+ * automatic type casting to the expected type. When property type be defined as
407
+ * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
408
+ * expected type.
409
+ *
410
+ * Also, after decoding, `typia.http.assertHeaders()` performs type assertion to the
411
+ * decoded value by combining with {@link assert} function. Therefore, when the
412
+ * decoded value is not following the `T` type, {@link TypeGuardError} or custom
413
+ * error generated by *errorFactory* would be thrown.
414
+ *
415
+ * By the way, as HTTP headers are not enough to express complex data structures,
416
+ * `typia.http.headers()` function has some limitations. If target type `T` is not
417
+ * following those restrictions, compilation errors would be occured.
418
+ *
419
+ * 1. Type `T` must be an object type
420
+ * 2. Do not allow dynamic property
421
+ * 3. Property key must be lower case
422
+ * 4. Property value cannot be `null`, but `undefined` is possible
423
+ * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
424
+ * 6. By the way, union type never be not allowed
425
+ * 7. Property `set-cookie` must be array type
426
+ * 8. Those properties cannot be array type
427
+ * - age
428
+ * - authorization
429
+ * - content-length
430
+ * - content-type
431
+ * - etag
432
+ * - expires
433
+ * - from
434
+ * - host
435
+ * - if-modified-since
436
+ * - if-unmodified-since
437
+ * - last-modified
438
+ * - location
439
+ * - max-forwards
440
+ * - proxy-authorization
441
+ * - referer
442
+ * - retry-after
443
+ * - server
444
+ * - user-agent
445
+ *
446
+ * @template T Expected type of decoded value
447
+ * @param input Query string or URLSearchParams instance
448
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
449
+ * @returns Decoded headers object
450
+ *
451
+ * @author Jeongho Nam - https://github.com/samchon
452
+ */
453
+ export function assertHeaders<T extends object>(
454
+ input: Record<string, string | string[] | undefined>,
455
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
456
+ ): Resolved<T>;
457
+
458
+ /**
459
+ * @internal
460
+ */
461
+ export function assertHeaders(): never {
462
+ halt("assertHeaders");
463
+ }
464
+
465
+ /**
466
+ * > You must configure the generic argument `T`.
467
+ *
468
+ * Headers decoder with type checking (for express and fastify).
469
+ *
470
+ * `typia.http.isHeaders()` is a function decoding an header instance, with
471
+ * automatic type casting to the expected type. When property type be defined as
472
+ * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
473
+ * expected type.
474
+ *
475
+ * Also, after decoding, `typia.http.isHeaders()` performs type checking to the
476
+ * decoded value by combining with {@link is} function. Therefore, when the
477
+ * decoded value is not following the `T` type, `null` value would be returned.
478
+ *
479
+ * By the way, as HTTP headers are not enough to express complex data structures,
480
+ * `typia.http.headers()` function has some limitations. If target type `T` is not
481
+ * following those restrictions, compilation errors would be occured.
482
+ *
483
+ * 1. Type `T` must be an object type
484
+ * 2. Do not allow dynamic property
485
+ * 3. Property key must be lower case
486
+ * 4. Property value cannot be `null`, but `undefined` is possible
487
+ * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
488
+ * 6. By the way, union type never be not allowed
489
+ * 7. Property `set-cookie` must be array type
490
+ * 8. Those properties cannot be array type
491
+ * - age
492
+ * - authorization
493
+ * - content-length
494
+ * - content-type
495
+ * - etag
496
+ * - expires
497
+ * - from
498
+ * - host
499
+ * - if-modified-since
500
+ * - if-unmodified-since
501
+ * - last-modified
502
+ * - location
503
+ * - max-forwards
504
+ * - proxy-authorization
505
+ * - referer
506
+ * - retry-after
507
+ * - server
508
+ * - user-agent
509
+ *
510
+ * @template T Expected type of decoded value
511
+ * @param input Query string or URLSearchParams instance
512
+ * @returns Decoded headers object or `null` value
513
+ *
514
+ * @author Jeongho Nam - https://github.com/samchon
515
+ */
516
+ export function isHeaders<T extends object>(
517
+ input: Record<string, string | string[] | undefined>,
518
+ ): Resolved<T> | null;
519
+
520
+ /**
521
+ * @internal
522
+ */
523
+ export function isHeaders(): never {
524
+ halt("isHeaders");
525
+ }
526
+
527
+ /**
528
+ * Headers decoder with type validation (for express and fastify).
529
+ *
530
+ * `typia.http.validateHeaders()` is a function decoding an header instance, with
531
+ * automatic type casting to the expected type. When property type be defined as
532
+ * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
533
+ * expected type.
534
+ *
535
+ * Also, after decoding, `typia.http.validateHeaders()` performs type assertion to the
536
+ * decoded value by combining with {@link validate} function. Therefore, when the
537
+ * decoded value is not following the `T` type, {@link IValidation.IError} would be
538
+ * returned. Otherwise, {@link IValidation.ISuccess} be returned.
539
+ *
540
+ * By the way, as HTTP headers are not enough to express complex data structures,
541
+ * `typia.http.headers()` function has some limitations. If target type `T` is not
542
+ * following those restrictions, compilation errors would be occured.
543
+ *
544
+ * 1. Type `T` must be an object type
545
+ * 2. Do not allow dynamic property
546
+ * 3. Property key must be lower case
547
+ * 4. Property value cannot be `null`, but `undefined` is possible
548
+ * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
549
+ * 6. By the way, union type never be not allowed
550
+ * 7. Property `set-cookie` must be array type
551
+ * 8. Those properties cannot be array type
552
+ * - age
553
+ * - authorization
554
+ * - content-length
555
+ * - content-type
556
+ * - etag
557
+ * - expires
558
+ * - from
559
+ * - host
560
+ * - if-modified-since
561
+ * - if-unmodified-since
562
+ * - last-modified
563
+ * - location
564
+ * - max-forwards
565
+ * - proxy-authorization
566
+ * - referer
567
+ * - retry-after
568
+ * - server
569
+ * - user-agent
570
+ *
571
+ * @template T Expected type of decoded value
572
+ * @param input Query string or URLSearchParams instance
573
+ * @returns Decoded headers object
574
+ *
575
+ * @author Jeongho Nam - https://github.com/samchon
576
+ */
577
+ export function validateHeaders<T extends object>(
578
+ input: Record<string, string | string[] | undefined>,
579
+ ): IValidation<Resolved<T>>;
580
+
581
+ /**
582
+ * @internal
583
+ */
584
+ export function validateHeaders(): never {
585
+ halt("validateHeaders");
586
+ }
587
+
588
+ /* -----------------------------------------------------------
589
+ PARAMETER
590
+ ----------------------------------------------------------- */
591
+ /**
592
+ * URL path parameter decoder.
593
+ *
594
+ * `typia.http.parameter()` is a function decoding a path parameter, with automatic
595
+ * type casting to the expected type. When type `T` has beeen defined as `boolean` or
596
+ * `number` type, `typia.http.parameter()` will cast the value to the expected type.
597
+ *
598
+ * Also, `typia.http.parameter()` performs type assertion to the decoded value by
599
+ * combining with {@link assert} function. Therefore, when the decoded value is not
600
+ * following the `T` type, {@link TypeGuardError} would be thrown.
601
+ *
602
+ * @template T Expected type of decoded value
603
+ * @param input Path parameter string
604
+ * @returns Decoded path parameter value
605
+ */
606
+ export function parameter<T extends Atomic.Type | null>(
607
+ input: string,
608
+ ): Resolved<T>;
609
+
610
+ /**
611
+ * @internal
612
+ */
613
+ export function parameter(): never {
614
+ halt("parameter");
615
+ }
616
+
617
+ /* -----------------------------------------------------------
618
+ FACTORY FUNCTIONS
619
+ ----------------------------------------------------------- */
620
+ /**
621
+ * Creates a reusable {@link formdata} function.
622
+ *
623
+ * @danger You must configure the generic argument `T`
624
+ * @template T The type of the formdata object
625
+ * @throws compile error
626
+ *
627
+ * @author Jeongho Nam - https://github.com/samchon
628
+ */
629
+ export function createFormData(): never;
630
+
631
+ /**
632
+ * Creates a reusable {@link formdata} function.
633
+ *
634
+ * @template T The type of the formdata object
635
+ * @returns A reusable `formdata` function
636
+ *
637
+ * @author Jeongho Nam - https://github.com/samchon
638
+ */
639
+ export function createFormData<T extends object>(): (input: FormData) => T;
640
+
641
+ /**
642
+ * @internal
643
+ */
644
+ export function createFormData<T>(): (input: FormData) => T {
645
+ halt("createFormData");
646
+ }
647
+
648
+ /**
649
+ * Creates a reusable {@link assertFormData} function.
650
+ *
651
+ * @danger You must configure the generic argument `T`
652
+ * @template T The type of the formdata object
653
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
654
+ * @throws compile error
655
+ *
656
+ * @author Jeongho Nam - https://github.com/samchon
657
+ */
658
+ export function createAssertFormData(
659
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
660
+ ): never;
661
+
662
+ /**
663
+ * Creates a reusable {@link assertFormData} function.
664
+ *
665
+ * @template T The type of the formdata object
666
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
667
+ * @returns A reusable `assertFormData` function
668
+ *
669
+ * @author Jeongho Nam - https://github.com/samchon
670
+ */
671
+ export function createAssertFormData<T extends object>(
672
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
673
+ ): (input: FormData) => T;
674
+
675
+ /**
676
+ * @internal
677
+ */
678
+ export function createAssertFormData<T>(): (input: FormData) => T {
679
+ halt("createAssertFormData");
680
+ }
681
+
682
+ /**
683
+ * Creates a reusable {@link isFormData} function.
684
+ *
685
+ * @danger You must configure the generic argument `T`
686
+ * @template T The type of the formdata object
687
+ * @throws compile error
688
+ *
689
+ * @author Jeongho Nam - https://github.com/samchon
690
+ */
691
+ export function createIsFormData(): never;
692
+
693
+ /**
694
+ * Creates a reusable {@link isFormData} function.
695
+ *
696
+ * @template T The type of the formdata object
697
+ * @returns A reusable `isFormData` function
698
+ *
699
+ * @author Jeongho Nam - https://github.com/samchon
700
+ */
701
+ export function createIsFormData<T extends object>(): (
702
+ input: FormData,
703
+ ) => T | null;
704
+
705
+ /**
706
+ * @internal
707
+ */
708
+ export function createIsFormData<T>(): (input: FormData) => T | null {
709
+ halt("createIsFormData");
710
+ }
711
+
712
+ /**
713
+ * Creates a reusable {@link validateFormData} function.
714
+ *
715
+ * @danger You must configure the generic argument `T`
716
+ * @template T The type of the formdata object
717
+ * @throws compile error
718
+ *
719
+ * @author Jeongho Nam - https://github.com/samchon
720
+ */
721
+ export function createValidateFormData(): never;
722
+
723
+ /**
724
+ * Creates a reusable {@link validateFormData} function.
725
+ *
726
+ * @template T The type of the formdata object
727
+ * @returns A reusable `validateFormData` function
728
+ *
729
+ * @author Jeongho Nam - https://github.com/samchon
730
+ */
731
+ export function createValidateFormData<T extends object>(): (
732
+ input: FormData,
733
+ ) => IValidation<Resolved<T>>;
734
+
735
+ /**
736
+ * @internal
737
+ */
738
+ export function createValidateFormData<T>(): (
739
+ input: FormData,
740
+ ) => IValidation<Resolved<T>> {
741
+ halt("createValidateFormData");
742
+ }
743
+
744
+ /**
745
+ * Creates a reusable {@link query} function.
746
+ *
747
+ * @danger You must configure the generic argument `T`
748
+ * @template T The type of the query object
749
+ * @throws compile error
750
+ *
751
+ * @author Jeongho Nam - https://github.com/samchon
752
+ */
753
+ export function createQuery(): never;
754
+
755
+ /**
756
+ * Creates a reusable {@link query} function.
757
+ *
758
+ * @template T The type of the query object
759
+ * @returns A reusable `query` function
760
+ *
761
+ * @author Jeongho Nam - https://github.com/samchon
762
+ */
763
+ export function createQuery<T extends object>(): (
764
+ input: string | IReadableURLSearchParams,
765
+ ) => T;
766
+
767
+ /**
768
+ * @internal
769
+ */
770
+ export function createQuery<T>(): (
771
+ input: string | IReadableURLSearchParams,
772
+ ) => T {
773
+ halt("createQuery");
774
+ }
775
+
776
+ /**
777
+ * Creates a reusable {@link assertQuery} function.
778
+ *
779
+ * @danger You must configure the generic argument `T`
780
+ * @template T The type of the query object
781
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
782
+ * @throws compile error
783
+ *
784
+ * @author Jeongho Nam - https://github.com/samchon
785
+ */
786
+ export function createAssertQuery(
787
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
788
+ ): never;
789
+
790
+ /**
791
+ * Creates a reusable {@link assertQuery} function.
792
+ *
793
+ * @template T The type of the query object
794
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
795
+ * @returns A reusable `assertQuery` function
796
+ *
797
+ * @author Jeongho Nam - https://github.com/samchon
798
+ */
799
+ export function createAssertQuery<T extends object>(
800
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
801
+ ): (input: string | IReadableURLSearchParams) => T;
802
+
803
+ /**
804
+ * @internal
805
+ */
806
+ export function createAssertQuery<T>(): (
807
+ input: string | IReadableURLSearchParams,
808
+ ) => T {
809
+ halt("createAssertQuery");
810
+ }
811
+
812
+ /**
813
+ * Creates a reusable {@link isQuery} function.
814
+ *
815
+ * @danger You must configure the generic argument `T`
816
+ * @template T The type of the query object
817
+ * @throws compile error
818
+ *
819
+ * @author Jeongho Nam - https://github.com/samchon
820
+ */
821
+ export function createIsQuery(): never;
822
+
823
+ /**
824
+ * Creates a reusable {@link isQuery} function.
825
+ *
826
+ * @template T The type of the query object
827
+ * @returns A reusable `isQuery` function
828
+ *
829
+ * @author Jeongho Nam - https://github.com/samchon
830
+ */
831
+ export function createIsQuery<T extends object>(): (
832
+ input: string | IReadableURLSearchParams,
833
+ ) => T | null;
834
+
835
+ /**
836
+ * @internal
837
+ */
838
+ export function createIsQuery<T>(): (
839
+ input: string | IReadableURLSearchParams,
840
+ ) => T | null {
841
+ halt("createIsQuery");
842
+ }
843
+
844
+ /**
845
+ * Creates a reusable {@link validateQuery} function.
846
+ *
847
+ * @danger You must configure the generic argument `T`
848
+ * @template T The type of the query object
849
+ * @throws compile error
850
+ *
851
+ * @author Jeongho Nam - https://github.com/samchon
852
+ */
853
+ export function createValidateQuery(): never;
854
+
855
+ /**
856
+ * Creates a reusable {@link validateQuery} function.
857
+ *
858
+ * @template T The type of the query object
859
+ * @returns A reusable `validateQuery` function
860
+ *
861
+ * @author Jeongho Nam - https://github.com/samchon
862
+ */
863
+ export function createValidateQuery<T extends object>(): (
864
+ input: string | IReadableURLSearchParams,
865
+ ) => IValidation<Resolved<T>>;
866
+
867
+ /**
868
+ * @internal
869
+ */
870
+ export function createValidateQuery<T>(): (
871
+ input: string | IReadableURLSearchParams,
872
+ ) => IValidation<Resolved<T>> {
873
+ halt("createValidateQuery");
874
+ }
875
+
876
+ /**
877
+ * Creates a reusable {@link headers} function.
878
+ *
879
+ * @danger You must configure the generic argument `T`
880
+ * @template T The type of the headers object
881
+ * @throws compile error
882
+ *
883
+ * @author Jeongho Nam - https://github.com/samchon
884
+ */
885
+ export function createHeaders(): never;
886
+
887
+ /**
888
+ * Creates a reusable {@link headers} function.
889
+ *
890
+ * @template T The type of the headers object
891
+ * @returns A reusable `headers` function
892
+ *
893
+ * @author Jeongho Nam - https://github.com/samchon
894
+ */
895
+ export function createHeaders<T extends object>(): (
896
+ input: Record<string, string | string[] | undefined>,
897
+ ) => T;
898
+
899
+ /**
900
+ * @internal
901
+ */
902
+ export function createHeaders<T>(): (
903
+ input: Record<string, string | string[] | undefined>,
904
+ ) => T {
905
+ halt("createHeaders");
906
+ }
907
+
908
+ /**
909
+ * Creates a reusable {@link assertHeaders} function.
910
+ *
911
+ * @danger You must configure the generic argument `T`
912
+ * @template T The type of the headers object
913
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
914
+ * @throws compile error
915
+ *
916
+ * @author Jeongho Nam - https://github.com/samchon
917
+ */
918
+ export function createAssertHeaders(
919
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
920
+ ): never;
921
+
922
+ /**
923
+ * Creates a reusable {@link assertHeaders} function.
924
+ *
925
+ * @template T The type of the headers object
926
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
927
+ * @returns A reusable `assertHeaders` function
928
+ *
929
+ * @author Jeongho Nam - https://github.com/samchon
930
+ */
931
+ export function createAssertHeaders<T extends object>(
932
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
933
+ ): (input: Record<string, string | string[] | undefined>) => T;
934
+
935
+ /**
936
+ * @internal
937
+ */
938
+ export function createAssertHeaders<T>(): (
939
+ input: Record<string, string | string[] | undefined>,
940
+ ) => T {
941
+ halt("createAssertHeaders");
942
+ }
943
+
944
+ /**
945
+ * Creates a reusable {@link isHeaders} function.
946
+ *
947
+ * @danger You must configure the generic argument `T`
948
+ * @template T The type of the headers object
949
+ * @throws compile error
950
+ *
951
+ * @author Jeongho Nam - https://github.com/samchon
952
+ */
953
+ export function createIsHeaders(): never;
954
+
955
+ /**
956
+ * Creates a reusable {@link isHeaders} function.
957
+ *
958
+ * @template T The type of the headers object
959
+ * @returns A reusable `isHeaders` function
960
+ *
961
+ * @author Jeongho Nam - https://github.com/samchon
962
+ */
963
+ export function createIsHeaders<T extends object>(): (
964
+ input: Record<string, string | string[] | undefined>,
965
+ ) => T | null;
966
+
967
+ /**
968
+ * @internal
969
+ */
970
+ export function createIsHeaders<T>(): (
971
+ input: Record<string, string | string[] | undefined>,
972
+ ) => T | null {
973
+ halt("createIsHeaders");
974
+ }
975
+
976
+ /**
977
+ * Creates a reusable {@link validateHeaders} function.
978
+ *
979
+ * @danger You must configure the generic argument `T`
980
+ * @template T The type of the headers object
981
+ * @throws compile error
982
+ *
983
+ * @author Jeongho Nam - https://github.com/samchon
984
+ */
985
+ export function createValidateHeaders(): never;
986
+
987
+ /**
988
+ * Creates a reusable {@link validateHeaders} function.
989
+ *
990
+ * @template T The type of the headers object
991
+ * @returns A reusable `validateHeaders` function
992
+ *
993
+ * @author Jeongho Nam - https://github.com/samchon
994
+ */
995
+ export function createValidateHeaders<T extends object>(): (
996
+ input: Record<string, string | string[] | undefined>,
997
+ ) => IValidation<Resolved<T>>;
998
+
999
+ /**
1000
+ * @internal
1001
+ */
1002
+ export function createValidateHeaders<T>(): (
1003
+ input: Record<string, string | string[] | undefined>,
1004
+ ) => IValidation<Resolved<T>> {
1005
+ halt("createValidateHeaders");
1006
+ }
1007
+
1008
+ /**
1009
+ * Creates a reusable {@link parameter} function.
1010
+ *
1011
+ * @danger You must configure the generic argument `T`
1012
+ * @template T The type of the parameter value
1013
+ * @throws compile error
1014
+ *
1015
+ * @author Jeongho Nam - https://github.com/samchon
1016
+ */
1017
+ export function createParameter(): never;
1018
+
1019
+ /**
1020
+ * Creates a reusable {@link parameter} function.
1021
+ *
1022
+ * @template T The type of the parameter value
1023
+ * @returns A reusable `parameter` function
1024
+ *
1025
+ * @author Jeongho Nam - https://github.com/samchon
1026
+ */
1027
+ export function createParameter<T extends Atomic.Type | null>(): (
1028
+ input: string,
1029
+ ) => T;
1030
+
1031
+ /**
1032
+ * @internal
1033
+ */
1034
+ export function createParameter<T extends Atomic.Type | null>(): (
1035
+ input: string,
1036
+ ) => T {
1037
+ halt("createParameter");
1038
+ }
1039
+
1040
+ /**
1041
+ * @internal
1042
+ */
1043
+ function halt(name: string): never {
1044
+ throw new Error(
1045
+ `Error on typia.http.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
1046
+ );
1047
+ }