typia 9.1.1 → 9.3.0-dev.20250511

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