typia 6.0.0-dev.20240122 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (853) hide show
  1. package/README.md +2 -1
  2. package/lib/CamelCase.d.ts +2 -2
  3. package/lib/IRandomGenerator.d.ts +19 -5
  4. package/lib/PascalCase.d.ts +2 -2
  5. package/lib/Resolved.d.ts +1 -1
  6. package/lib/SnakeCase.d.ts +1 -1
  7. package/lib/TypeGuardError.js +4 -1
  8. package/lib/TypeGuardError.js.map +1 -1
  9. package/lib/executable/TypiaGenerateWizard.js +24 -23
  10. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  11. package/lib/executable/TypiaPatchWizard.js +9 -9
  12. package/lib/executable/TypiaPatchWizard.js.map +1 -1
  13. package/lib/executable/TypiaSetupWizard.js +31 -22
  14. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  15. package/lib/executable/setup/ArgumentParser.js +5 -5
  16. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  17. package/lib/executable/setup/PackageManager.js +8 -8
  18. package/lib/executable/setup/PackageManager.js.map +1 -1
  19. package/lib/executable/setup/PluginConfigurator.js +5 -4
  20. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  21. package/lib/executable/typia.js +21 -21
  22. package/lib/executable/typia.js.map +1 -1
  23. package/lib/factories/CommentFactory.js +2 -0
  24. package/lib/factories/CommentFactory.js.map +1 -1
  25. package/lib/factories/IdentifierFactory.d.ts +1 -1
  26. package/lib/factories/IdentifierFactory.js +2 -0
  27. package/lib/factories/IdentifierFactory.js.map +1 -1
  28. package/lib/factories/LiteralFactory.js +1 -0
  29. package/lib/factories/LiteralFactory.js.map +1 -1
  30. package/lib/factories/MetadataCollection.js +19 -1
  31. package/lib/factories/MetadataCollection.js.map +1 -1
  32. package/lib/factories/MetadataCommentTagFactory.js +79 -39
  33. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  34. package/lib/factories/MetadataFactory.js +9 -1
  35. package/lib/factories/MetadataFactory.js.map +1 -1
  36. package/lib/factories/MetadataTypeTagFactory.js +61 -17
  37. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  38. package/lib/factories/MetadataTypeTagSchemaFactory.d.ts +4 -0
  39. package/lib/factories/MetadataTypeTagSchemaFactory.js +84 -0
  40. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -0
  41. package/lib/factories/ProtobufFactory.js +46 -1
  42. package/lib/factories/ProtobufFactory.js.map +1 -1
  43. package/lib/factories/TypeFactory.js +9 -0
  44. package/lib/factories/TypeFactory.js.map +1 -1
  45. package/lib/factories/internal/metadata/MetadataHelper.js +7 -1
  46. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  47. package/lib/factories/internal/metadata/emend_metadata_atomics.js +15 -5
  48. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  49. package/lib/factories/internal/metadata/emplace_metadata_alias.js +2 -0
  50. package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
  51. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +2 -0
  52. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  53. package/lib/factories/internal/metadata/emplace_metadata_object.js +18 -2
  54. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  55. package/lib/factories/internal/metadata/emplace_metadata_tuple.js +4 -0
  56. package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
  57. package/lib/factories/internal/metadata/explore_metadata.js +2 -0
  58. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  59. package/lib/factories/internal/metadata/iterate_metadata.js +4 -2
  60. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_alias.js +1 -0
  62. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  63. package/lib/factories/internal/metadata/iterate_metadata_array.js +54 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +2 -0
  66. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  67. package/lib/factories/internal/metadata/iterate_metadata_constant.js +9 -2
  68. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  69. package/lib/factories/internal/metadata/{iterate_metadata_resolve.d.ts → iterate_metadata_escape.d.ts} +1 -1
  70. package/lib/factories/internal/metadata/{iterate_metadata_resolve.js → iterate_metadata_escape.js} +4 -4
  71. package/lib/factories/internal/metadata/iterate_metadata_escape.js.map +1 -0
  72. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +49 -138
  73. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_native.js +20 -21
  75. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  76. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_sort.js +49 -23
  78. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_template.js +2 -0
  80. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  81. package/lib/functional/$FormDataReader/$FormDataReader.d.ts +7 -0
  82. package/lib/functional/$FormDataReader/$FormDataReader.js +86 -0
  83. package/lib/functional/$FormDataReader/$FormDataReader.js.map +1 -0
  84. package/lib/functional/$FormDataReader/index.d.ts +1 -0
  85. package/lib/functional/$FormDataReader/index.js +28 -0
  86. package/lib/functional/$FormDataReader/index.js.map +1 -0
  87. package/lib/functional/$HeadersReader/$HeadersReader.d.ts +4 -0
  88. package/lib/functional/$HeadersReader/$HeadersReader.js +36 -0
  89. package/lib/functional/$HeadersReader/$HeadersReader.js.map +1 -0
  90. package/lib/functional/$HeadersReader/index.d.ts +1 -0
  91. package/lib/functional/$HeadersReader/index.js +28 -0
  92. package/lib/functional/$HeadersReader/index.js.map +1 -0
  93. package/lib/functional/$ParameterReader/$ParameterReader.d.ts +4 -0
  94. package/lib/functional/$ParameterReader/$ParameterReader.js +36 -0
  95. package/lib/functional/$ParameterReader/$ParameterReader.js.map +1 -0
  96. package/lib/functional/$ParameterReader/index.d.ts +1 -0
  97. package/lib/functional/$ParameterReader/index.js +28 -0
  98. package/lib/functional/$ParameterReader/index.js.map +1 -0
  99. package/lib/functional/$ProtobufReader.d.ts +35 -1
  100. package/lib/functional/$ProtobufReader.js +13 -11
  101. package/lib/functional/$ProtobufReader.js.map +1 -1
  102. package/lib/functional/$ProtobufSizer.d.ts +36 -1
  103. package/lib/functional/$ProtobufSizer.js +28 -13
  104. package/lib/functional/$ProtobufSizer.js.map +1 -1
  105. package/lib/functional/$ProtobufWriter.d.ts +45 -1
  106. package/lib/functional/$ProtobufWriter.js +11 -9
  107. package/lib/functional/$ProtobufWriter.js.map +1 -1
  108. package/lib/functional/$QueryReader/$QueryReader.d.ts +6 -0
  109. package/lib/functional/$QueryReader/$QueryReader.js +55 -0
  110. package/lib/functional/$QueryReader/$QueryReader.js.map +1 -0
  111. package/lib/functional/$QueryReader/index.d.ts +1 -0
  112. package/lib/functional/$QueryReader/index.js +28 -0
  113. package/lib/functional/$QueryReader/index.js.map +1 -0
  114. package/lib/functional/$any.d.ts +1 -0
  115. package/lib/functional/$any.js +9 -0
  116. package/lib/functional/$any.js.map +1 -0
  117. package/lib/functional/$clone.d.ts +2 -1
  118. package/lib/functional/$clone.js +1 -1
  119. package/lib/functional/$clone.js.map +1 -1
  120. package/lib/functional/$convention.d.ts +1 -1
  121. package/lib/functional/$convention.js.map +1 -1
  122. package/lib/functional/$dictionary.d.ts +2 -0
  123. package/lib/functional/$dictionary.js +18 -0
  124. package/lib/functional/$dictionary.js.map +1 -0
  125. package/lib/functional/$every.d.ts +2 -0
  126. package/lib/functional/$every.js +12 -0
  127. package/lib/functional/$every.js.map +1 -0
  128. package/lib/functional/$guard.js +5 -2
  129. package/lib/functional/$guard.js.map +1 -1
  130. package/lib/functional/$is_between.d.ts +1 -1
  131. package/lib/functional/$is_between.js.map +1 -1
  132. package/lib/functional/$join.d.ts +1 -1
  133. package/lib/functional/$join.js.map +1 -1
  134. package/lib/functional/$number.d.ts +1 -1
  135. package/lib/functional/$number.js.map +1 -1
  136. package/lib/functional/$report.d.ts +2 -1
  137. package/lib/functional/$report.js.map +1 -1
  138. package/lib/functional/$rest.d.ts +1 -1
  139. package/lib/functional/$rest.js.map +1 -1
  140. package/lib/functional/$stoll.d.ts +1 -1
  141. package/lib/functional/$stoll.js.map +1 -1
  142. package/lib/functional/$string.js +20 -9
  143. package/lib/functional/$string.js.map +1 -1
  144. package/lib/functional/$strlen.d.ts +1 -1
  145. package/lib/functional/$strlen.js.map +1 -1
  146. package/lib/functional/$tail.js +3 -0
  147. package/lib/functional/$tail.js.map +1 -1
  148. package/lib/functional/$throws.d.ts +2 -1
  149. package/lib/functional/$throws.js.map +1 -1
  150. package/lib/functional/$varint.d.ts +6 -0
  151. package/lib/functional/$varint.js +100 -0
  152. package/lib/functional/$varint.js.map +1 -0
  153. package/lib/functional/$zigzag.d.ts +4 -0
  154. package/lib/functional/$zigzag.js +36 -0
  155. package/lib/functional/$zigzag.js.map +1 -0
  156. package/lib/functional/IProtobufWriter.d.ts +15 -1
  157. package/lib/functional/Namespace/functional.d.ts +4 -0
  158. package/lib/functional/Namespace/functional.js +9 -0
  159. package/lib/functional/Namespace/functional.js.map +1 -0
  160. package/lib/functional/Namespace/http.d.ts +8 -0
  161. package/lib/functional/Namespace/http.js +16 -0
  162. package/lib/functional/Namespace/http.js.map +1 -0
  163. package/lib/functional/Namespace/index.d.ts +30 -0
  164. package/lib/functional/Namespace/index.js +85 -0
  165. package/lib/functional/Namespace/index.js.map +1 -0
  166. package/lib/functional/Namespace/json.d.ts +9 -0
  167. package/lib/functional/Namespace/json.js +23 -0
  168. package/lib/functional/Namespace/json.js.map +1 -0
  169. package/lib/functional/Namespace/misc.d.ts +11 -0
  170. package/lib/functional/Namespace/misc.js +22 -0
  171. package/lib/functional/Namespace/misc.js.map +1 -0
  172. package/lib/functional/Namespace/notations.d.ts +18 -0
  173. package/lib/functional/Namespace/notations.js +26 -0
  174. package/lib/functional/Namespace/notations.js.map +1 -0
  175. package/lib/functional/Namespace/protobuf.d.ts +17 -0
  176. package/lib/functional/Namespace/protobuf.js +25 -0
  177. package/lib/functional/Namespace/protobuf.js.map +1 -0
  178. package/lib/functional/is.js +14 -0
  179. package/lib/functional/is.js.map +1 -0
  180. package/lib/functional.d.ts +526 -0
  181. package/lib/functional.js +195 -0
  182. package/lib/functional.js.map +1 -0
  183. package/lib/http.d.ts +265 -369
  184. package/lib/http.js +226 -19
  185. package/lib/http.js.map +1 -1
  186. package/lib/json.d.ts +81 -58
  187. package/lib/json.js +109 -14
  188. package/lib/json.js.map +1 -1
  189. package/lib/misc.d.ts +81 -38
  190. package/lib/misc.js +133 -16
  191. package/lib/misc.js.map +1 -1
  192. package/lib/module.d.ts +91 -38
  193. package/lib/module.js +102 -21
  194. package/lib/module.js.map +1 -1
  195. package/lib/notations.d.ts +106 -45
  196. package/lib/notations.js +188 -24
  197. package/lib/notations.js.map +1 -1
  198. package/lib/programmers/AssertProgrammer.d.ts +6 -1
  199. package/lib/programmers/AssertProgrammer.js +48 -5
  200. package/lib/programmers/AssertProgrammer.js.map +1 -1
  201. package/lib/programmers/CheckerProgrammer.js +57 -2
  202. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  203. package/lib/programmers/FeatureProgrammer.js +11 -0
  204. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  205. package/lib/programmers/IsProgrammer.js +10 -1
  206. package/lib/programmers/IsProgrammer.js.map +1 -1
  207. package/lib/programmers/RandomProgrammer.js +49 -4
  208. package/lib/programmers/RandomProgrammer.js.map +1 -1
  209. package/lib/programmers/TypiaProgrammer.js +41 -44
  210. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  211. package/lib/programmers/ValidateProgrammer.js +5 -5
  212. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  213. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.d.ts +14 -0
  214. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +81 -0
  215. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -0
  216. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.d.ts +7 -0
  217. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +75 -0
  218. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -0
  219. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.d.ts +10 -0
  220. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js +46 -0
  221. package/lib/programmers/functional/FunctionalAssertReturnProgrammer.js.map +1 -0
  222. package/lib/programmers/functional/FunctionalIsFunctionProgrammer.d.ts +7 -0
  223. package/lib/programmers/functional/FunctionalIsFunctionProgrammer.js +68 -0
  224. package/lib/programmers/functional/FunctionalIsFunctionProgrammer.js.map +1 -0
  225. package/lib/programmers/functional/FunctionalIsParametersProgrammer.d.ts +7 -0
  226. package/lib/programmers/functional/FunctionalIsParametersProgrammer.js +72 -0
  227. package/lib/programmers/functional/FunctionalIsParametersProgrammer.js.map +1 -0
  228. package/lib/programmers/functional/FunctionalIsReturnProgrammer.d.ts +10 -0
  229. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js +46 -0
  230. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js.map +1 -0
  231. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.d.ts +11 -0
  232. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js +74 -0
  233. package/lib/programmers/functional/FunctionalValidateFunctionProgrammer.js.map +1 -0
  234. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.d.ts +7 -0
  235. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +98 -0
  236. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -0
  237. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.d.ts +10 -0
  238. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +53 -0
  239. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -0
  240. package/lib/programmers/functional/internal/FunctionalGeneralProgrammer.d.ts +9 -0
  241. package/lib/programmers/functional/internal/FunctionalGeneralProgrammer.js +25 -0
  242. package/lib/programmers/functional/internal/FunctionalGeneralProgrammer.js.map +1 -0
  243. package/lib/programmers/helpers/AtomicPredicator.js +2 -3
  244. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  245. package/lib/programmers/helpers/FunctionImporeter.d.ts +1 -0
  246. package/lib/programmers/helpers/FunctionImporeter.js +18 -0
  247. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -0
  248. package/lib/programmers/helpers/FunctionImporter.d.ts +2 -2
  249. package/lib/programmers/helpers/FunctionImporter.js +8 -24
  250. package/lib/programmers/helpers/FunctionImporter.js.map +1 -1
  251. package/lib/programmers/helpers/ProtobufUtil.js +2 -2
  252. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  253. package/lib/programmers/helpers/PruneJoiner.js +9 -5
  254. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  255. package/lib/programmers/helpers/RandomJoiner.js +2 -0
  256. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  257. package/lib/programmers/helpers/RandomRanger.js +8 -0
  258. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  259. package/lib/programmers/helpers/StringifyJoinder.js +5 -1
  260. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  261. package/lib/programmers/helpers/UnionExplorer.js +10 -0
  262. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  263. package/lib/programmers/helpers/UnionPredicator.js +5 -0
  264. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  265. package/lib/programmers/helpers/disable_function_importer_declare.js +2 -4
  266. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
  267. package/lib/programmers/http/HttpAssertFormDataProgrammer.d.ts +6 -0
  268. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +47 -0
  269. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -0
  270. package/lib/programmers/http/HttpAssertHeadersProgrammer.d.ts +1 -1
  271. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +9 -3
  272. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  273. package/lib/programmers/http/HttpAssertQueryProgrammer.d.ts +1 -1
  274. package/lib/programmers/http/HttpAssertQueryProgrammer.js +9 -3
  275. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  276. package/lib/programmers/http/HttpFormDataProgrammer.d.ts +9 -0
  277. package/lib/programmers/http/HttpFormDataProgrammer.js +193 -0
  278. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -0
  279. package/lib/programmers/http/HttpHeadersProgrammer.js +27 -9
  280. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  281. package/lib/programmers/http/HttpIsFormDataProgrammer.d.ts +6 -0
  282. package/lib/programmers/http/HttpIsFormDataProgrammer.js +47 -0
  283. package/lib/programmers/http/HttpIsFormDataProgrammer.js.map +1 -0
  284. package/lib/programmers/http/HttpIsHeadersProgrammer.js +5 -3
  285. package/lib/programmers/http/HttpIsHeadersProgrammer.js.map +1 -1
  286. package/lib/programmers/http/HttpIsQueryProgrammer.js +5 -3
  287. package/lib/programmers/http/HttpIsQueryProgrammer.js.map +1 -1
  288. package/lib/programmers/http/HttpParameterProgrammer.js +4 -2
  289. package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
  290. package/lib/programmers/http/HttpQueryProgrammer.js +20 -5
  291. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  292. package/lib/programmers/http/HttpValidateFormDataProgrammer.d.ts +6 -0
  293. package/lib/programmers/http/HttpValidateFormDataProgrammer.js +41 -0
  294. package/lib/programmers/http/HttpValidateFormDataProgrammer.js.map +1 -0
  295. package/lib/programmers/http/HttpValidateHeadersProgrammer.js +2 -2
  296. package/lib/programmers/http/HttpValidateHeadersProgrammer.js.map +1 -1
  297. package/lib/programmers/http/HttpValidateQueryProgrammer.js +2 -2
  298. package/lib/programmers/http/HttpValidateQueryProgrammer.js.map +1 -1
  299. package/lib/programmers/internal/application_array.js +10 -99
  300. package/lib/programmers/internal/application_array.js.map +1 -1
  301. package/lib/programmers/internal/application_boolean.js +8 -32
  302. package/lib/programmers/internal/application_boolean.js.map +1 -1
  303. package/lib/programmers/internal/application_escaped.d.ts +1 -4
  304. package/lib/programmers/internal/application_escaped.js +29 -22
  305. package/lib/programmers/internal/application_escaped.js.map +1 -1
  306. package/lib/programmers/internal/application_number.js +8 -137
  307. package/lib/programmers/internal/application_number.js.map +1 -1
  308. package/lib/programmers/internal/application_plugin.js +55 -0
  309. package/lib/programmers/internal/application_plugin.js.map +1 -0
  310. package/lib/programmers/internal/application_string.js +8 -107
  311. package/lib/programmers/internal/application_string.js.map +1 -1
  312. package/lib/programmers/internal/application_templates.js +7 -8
  313. package/lib/programmers/internal/application_templates.js.map +1 -1
  314. package/lib/programmers/internal/application_v30_alias.js +44 -0
  315. package/lib/programmers/internal/application_v30_alias.js.map +1 -0
  316. package/lib/programmers/internal/application_v30_constant.js +13 -0
  317. package/lib/programmers/internal/application_v30_constant.js.map +1 -0
  318. package/lib/programmers/internal/application_v30_native.js +34 -0
  319. package/lib/programmers/internal/application_v30_native.js.map +1 -0
  320. package/lib/programmers/internal/application_v30_object.js +154 -0
  321. package/lib/programmers/internal/application_v30_object.js.map +1 -0
  322. package/lib/programmers/internal/application_v30_schema.js +228 -0
  323. package/lib/programmers/internal/application_v30_schema.js.map +1 -0
  324. package/lib/programmers/internal/application_v30_tuple.js +33 -0
  325. package/lib/programmers/internal/application_v30_tuple.js.map +1 -0
  326. package/lib/programmers/internal/application_v31_alias.js +38 -0
  327. package/lib/programmers/internal/application_v31_alias.js.map +1 -0
  328. package/lib/programmers/internal/application_v31_constant.js +19 -0
  329. package/lib/programmers/internal/application_v31_constant.js.map +1 -0
  330. package/lib/programmers/internal/application_v31_native.js +29 -0
  331. package/lib/programmers/internal/application_v31_native.js.map +1 -0
  332. package/lib/programmers/internal/application_v31_object.js +146 -0
  333. package/lib/programmers/internal/application_v31_object.js.map +1 -0
  334. package/lib/programmers/internal/application_v31_schema.js +224 -0
  335. package/lib/programmers/internal/application_v31_schema.js.map +1 -0
  336. package/lib/programmers/internal/application_v31_tuple.js +22 -0
  337. package/lib/programmers/internal/application_v31_tuple.js.map +1 -0
  338. package/lib/programmers/internal/check_array_length.js +3 -0
  339. package/lib/programmers/internal/check_array_length.js.map +1 -1
  340. package/lib/programmers/internal/check_bigint.js +6 -0
  341. package/lib/programmers/internal/check_bigint.js.map +1 -1
  342. package/lib/programmers/internal/check_dynamic_key.js +7 -1
  343. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  344. package/lib/programmers/internal/check_dynamic_properties.js +29 -4
  345. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  346. package/lib/programmers/internal/check_everything.js +3 -0
  347. package/lib/programmers/internal/check_everything.js.map +1 -1
  348. package/lib/programmers/internal/check_native.js +3 -0
  349. package/lib/programmers/internal/check_native.js.map +1 -1
  350. package/lib/programmers/internal/check_number.js +8 -1
  351. package/lib/programmers/internal/check_number.js.map +1 -1
  352. package/lib/programmers/internal/check_object.js +9 -0
  353. package/lib/programmers/internal/check_object.js.map +1 -1
  354. package/lib/programmers/internal/check_string.js +6 -0
  355. package/lib/programmers/internal/check_string.js.map +1 -1
  356. package/lib/programmers/internal/check_template.js +7 -1
  357. package/lib/programmers/internal/check_template.js.map +1 -1
  358. package/lib/programmers/internal/check_union_array_like.js +4 -0
  359. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  360. package/lib/programmers/internal/decode_union_object.js +52 -10
  361. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  362. package/lib/programmers/internal/feature_object_entries.js +3 -0
  363. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  364. package/lib/programmers/internal/metadata_to_pattern.js +10 -4
  365. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  366. package/lib/programmers/internal/prune_object_properties.js +3 -0
  367. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  368. package/lib/programmers/internal/random_custom.js +3 -0
  369. package/lib/programmers/internal/random_custom.js.map +1 -1
  370. package/lib/programmers/internal/stringify_dynamic_properties.js +11 -0
  371. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  372. package/lib/programmers/internal/stringify_native.js +3 -0
  373. package/lib/programmers/internal/stringify_native.js.map +1 -1
  374. package/lib/programmers/internal/stringify_regular_properties.js +7 -0
  375. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  376. package/lib/programmers/internal/template_to_pattern.js +3 -0
  377. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  378. package/lib/programmers/json/JsonApplicationProgrammer.d.ts +2 -5
  379. package/lib/programmers/json/JsonApplicationProgrammer.js +85 -34
  380. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  381. package/lib/programmers/json/JsonAssertParseProgrammer.d.ts +1 -1
  382. package/lib/programmers/json/JsonAssertParseProgrammer.js +11 -3
  383. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  384. package/lib/programmers/json/JsonAssertStringifyProgrammer.d.ts +1 -1
  385. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +9 -3
  386. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  387. package/lib/programmers/json/JsonIsParseProgrammer.js +3 -1
  388. package/lib/programmers/json/JsonIsParseProgrammer.js.map +1 -1
  389. package/lib/programmers/json/JsonStringifyProgrammer.js +43 -4
  390. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  391. package/lib/programmers/misc/MiscAssertCloneProgrammer.d.ts +1 -1
  392. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +11 -3
  393. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  394. package/lib/programmers/misc/MiscAssertPruneProgrammer.d.ts +1 -1
  395. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +9 -3
  396. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  397. package/lib/programmers/misc/MiscCloneProgrammer.js +30 -4
  398. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  399. package/lib/programmers/misc/MiscIsCloneProgrammer.js +3 -1
  400. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  401. package/lib/programmers/misc/MiscLiteralsProgrammer.js +1 -2
  402. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  403. package/lib/programmers/misc/MiscPruneProgrammer.js +21 -1
  404. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  405. package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +1 -1
  406. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +9 -3
  407. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  408. package/lib/programmers/notations/NotationGeneralProgrammer.js +189 -175
  409. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  410. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.d.ts +1 -1
  411. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +9 -3
  412. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  413. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.d.ts +1 -1
  414. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +9 -3
  415. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  416. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +16 -4
  417. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  418. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +39 -19
  419. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  420. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +3 -1
  421. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  422. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +7 -1
  423. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  424. package/lib/protobuf.d.ts +72 -31
  425. package/lib/protobuf.js +136 -16
  426. package/lib/protobuf.js.map +1 -1
  427. package/lib/reflect.d.ts +4 -2
  428. package/lib/reflect.js +8 -1
  429. package/lib/reflect.js.map +1 -1
  430. package/lib/schemas/json/IJsonApplication.d.ts +13 -7
  431. package/lib/schemas/metadata/IMetadataConstant.d.ts +2 -1
  432. package/lib/schemas/metadata/IMetadataConstantValue.d.ts +6 -0
  433. package/lib/schemas/metadata/IMetadataConstantValue.js +3 -0
  434. package/lib/schemas/metadata/IMetadataConstantValue.js.map +1 -0
  435. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +1 -0
  436. package/lib/schemas/metadata/Metadata.d.ts +1 -1
  437. package/lib/schemas/metadata/Metadata.js +84 -8
  438. package/lib/schemas/metadata/Metadata.js.map +1 -1
  439. package/lib/schemas/metadata/MetadataAlias.js +13 -1
  440. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  441. package/lib/schemas/metadata/MetadataApplication.js +7 -1
  442. package/lib/schemas/metadata/MetadataApplication.js.map +1 -1
  443. package/lib/schemas/metadata/MetadataArray.js +4 -1
  444. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  445. package/lib/schemas/metadata/MetadataArrayType.js +10 -1
  446. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -1
  447. package/lib/schemas/metadata/MetadataAtomic.js +20 -17
  448. package/lib/schemas/metadata/MetadataAtomic.js.map +1 -1
  449. package/lib/schemas/metadata/MetadataComponents.js +4 -1
  450. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  451. package/lib/schemas/metadata/MetadataConstant.d.ts +2 -1
  452. package/lib/schemas/metadata/MetadataConstant.js +5 -9
  453. package/lib/schemas/metadata/MetadataConstant.js.map +1 -1
  454. package/lib/schemas/metadata/MetadataConstantValue.d.ts +13 -0
  455. package/lib/schemas/metadata/MetadataConstantValue.js +44 -0
  456. package/lib/schemas/metadata/MetadataConstantValue.js.map +1 -0
  457. package/lib/schemas/metadata/MetadataEscaped.js +10 -1
  458. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -1
  459. package/lib/schemas/metadata/MetadataObject.js +28 -1
  460. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  461. package/lib/schemas/metadata/MetadataProperty.js +13 -1
  462. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  463. package/lib/schemas/metadata/MetadataTuple.js +7 -1
  464. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  465. package/lib/schemas/metadata/MetadataTupleType.js +7 -1
  466. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -1
  467. package/lib/tags/Constant.d.ts +10 -0
  468. package/lib/{schemas/json/IJsonSchema.js → tags/Constant.js} +1 -1
  469. package/lib/tags/Constant.js.map +1 -0
  470. package/lib/tags/ContentMediaType.d.ts +9 -0
  471. package/lib/{schemas/json/IJsonComponents.js → tags/ContentMediaType.js} +1 -1
  472. package/lib/tags/ContentMediaType.js.map +1 -0
  473. package/lib/tags/Default.d.ts +3 -0
  474. package/lib/tags/ExclusiveMaximum.d.ts +4 -0
  475. package/lib/tags/ExclusiveMinimum.d.ts +4 -0
  476. package/lib/tags/Format.d.ts +10 -3
  477. package/lib/tags/JsonSchemaPlugin.d.ts +7 -0
  478. package/lib/tags/JsonSchemaPlugin.js +3 -0
  479. package/lib/tags/JsonSchemaPlugin.js.map +1 -0
  480. package/lib/tags/MaxItems.d.ts +3 -0
  481. package/lib/tags/MaxLength.d.ts +3 -0
  482. package/lib/tags/Maximum.d.ts +3 -0
  483. package/lib/tags/MinItems.d.ts +3 -0
  484. package/lib/tags/MinLength.d.ts +3 -0
  485. package/lib/tags/Minimum.d.ts +3 -0
  486. package/lib/tags/MultipleOf.d.ts +3 -0
  487. package/lib/tags/Pattern.d.ts +3 -0
  488. package/lib/tags/TagBase.d.ts +6 -2
  489. package/lib/tags/Type.d.ts +3 -0
  490. package/lib/tags/index.d.ts +3 -0
  491. package/lib/tags/index.js +3 -0
  492. package/lib/tags/index.js.map +1 -1
  493. package/lib/tags/internal/FormatCheatSheet.d.ts +27 -0
  494. package/lib/tags/internal/FormatCheatSheet.js +38 -0
  495. package/lib/tags/internal/FormatCheatSheet.js.map +1 -0
  496. package/lib/transformers/CallExpressionTransformer.js +195 -1
  497. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  498. package/lib/transformers/FileTransformer.js +2 -0
  499. package/lib/transformers/FileTransformer.js.map +1 -1
  500. package/lib/transformers/TransformerError.js +2 -1
  501. package/lib/transformers/TransformerError.js.map +1 -1
  502. package/lib/transformers/features/AssertTransformer.js.map +1 -1
  503. package/lib/transformers/features/CreateAssertTransformer.js.map +1 -1
  504. package/lib/transformers/features/CreateRandomTransformer.js +3 -0
  505. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  506. package/lib/transformers/features/RandomTransformer.js +3 -0
  507. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  508. package/lib/transformers/features/functional/FunctionalGenericTransformer.d.ts +10 -0
  509. package/lib/transformers/features/functional/FunctionalGenericTransformer.js +39 -0
  510. package/lib/transformers/features/functional/FunctionalGenericTransformer.js.map +1 -0
  511. package/lib/transformers/features/http/CreateHttpAssertFormDataTransformer.d.ts +4 -0
  512. package/lib/transformers/features/http/CreateHttpAssertFormDataTransformer.js +12 -0
  513. package/lib/transformers/features/http/CreateHttpAssertFormDataTransformer.js.map +1 -0
  514. package/lib/transformers/features/http/CreateHttpFormDataTransformer.d.ts +4 -0
  515. package/lib/transformers/features/http/CreateHttpFormDataTransformer.js +10 -0
  516. package/lib/transformers/features/http/CreateHttpFormDataTransformer.js.map +1 -0
  517. package/lib/transformers/features/http/CreateHttpIsFormDataTransformer.d.ts +4 -0
  518. package/lib/transformers/features/http/CreateHttpIsFormDataTransformer.js +10 -0
  519. package/lib/transformers/features/http/CreateHttpIsFormDataTransformer.js.map +1 -0
  520. package/lib/transformers/features/http/CreateHttpValidateFormDataTransformer.d.ts +4 -0
  521. package/lib/transformers/features/http/CreateHttpValidateFormDataTransformer.js +12 -0
  522. package/lib/transformers/features/http/CreateHttpValidateFormDataTransformer.js.map +1 -0
  523. package/lib/transformers/features/http/HttpAssertFormDataTransformer.d.ts +4 -0
  524. package/lib/transformers/features/http/HttpAssertFormDataTransformer.js +12 -0
  525. package/lib/transformers/features/http/HttpAssertFormDataTransformer.js.map +1 -0
  526. package/lib/transformers/features/http/HttpFormDataTransformer.d.ts +4 -0
  527. package/lib/transformers/features/http/HttpFormDataTransformer.js +10 -0
  528. package/lib/transformers/features/http/HttpFormDataTransformer.js.map +1 -0
  529. package/lib/transformers/features/http/HttpIsFormDataTransformer.d.ts +4 -0
  530. package/lib/transformers/features/http/HttpIsFormDataTransformer.js +10 -0
  531. package/lib/transformers/features/http/HttpIsFormDataTransformer.js.map +1 -0
  532. package/lib/transformers/features/http/HttpValidateFormDataTransformer.d.ts +4 -0
  533. package/lib/transformers/features/http/HttpValidateFormDataTransformer.js +12 -0
  534. package/lib/transformers/features/http/HttpValidateFormDataTransformer.js.map +1 -0
  535. package/lib/transformers/features/json/JsonApplicationTransformer.js +20 -17
  536. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  537. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +3 -0
  538. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  539. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +3 -0
  540. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  541. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +4 -0
  542. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  543. package/lib/transformers/internal/GenericTransformer.d.ts +1 -1
  544. package/lib/transformers/internal/GenericTransformer.js +9 -3
  545. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  546. package/lib/utils/ArrayUtil.d.ts +0 -1
  547. package/lib/utils/ArrayUtil.js +0 -29
  548. package/lib/utils/ArrayUtil.js.map +1 -1
  549. package/lib/utils/NamingConvention/NamingConvention.d.ts +3 -0
  550. package/lib/utils/{NamingConvention.js → NamingConvention/NamingConvention.js} +55 -51
  551. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -0
  552. package/lib/utils/NamingConvention/index.d.ts +1 -0
  553. package/lib/utils/NamingConvention/index.js +28 -0
  554. package/lib/utils/NamingConvention/index.js.map +1 -0
  555. package/lib/utils/PatternUtil.js +3 -3
  556. package/lib/utils/PatternUtil.js.map +1 -1
  557. package/lib/utils/RandomGenerator/RandomGenerator.d.ts +31 -0
  558. package/lib/utils/RandomGenerator/RandomGenerator.js +167 -0
  559. package/lib/utils/RandomGenerator/RandomGenerator.js.map +1 -0
  560. package/lib/utils/RandomGenerator/index.d.ts +1 -0
  561. package/lib/utils/RandomGenerator/index.js +28 -0
  562. package/lib/utils/RandomGenerator/index.js.map +1 -0
  563. package/lib/utils/Singleton.js +1 -1
  564. package/lib/utils/StringUtil/StringUtil.d.ts +2 -0
  565. package/lib/utils/StringUtil/StringUtil.js +14 -0
  566. package/lib/utils/StringUtil/StringUtil.js.map +1 -0
  567. package/lib/utils/StringUtil/index.d.ts +1 -0
  568. package/lib/utils/StringUtil/index.js +28 -0
  569. package/lib/utils/StringUtil/index.js.map +1 -0
  570. package/package.json +14 -10
  571. package/src/CamelCase.ts +68 -61
  572. package/src/IRandomGenerator.ts +30 -5
  573. package/src/PascalCase.ts +68 -61
  574. package/src/Primitive.ts +48 -47
  575. package/src/Resolved.ts +61 -58
  576. package/src/SnakeCase.ts +67 -62
  577. package/src/executable/TypiaSetupWizard.ts +5 -5
  578. package/src/factories/IdentifierFactory.ts +1 -1
  579. package/src/factories/MetadataCommentTagFactory.ts +72 -157
  580. package/src/factories/MetadataFactory.ts +6 -1
  581. package/src/factories/MetadataTypeTagFactory.ts +38 -15
  582. package/src/factories/MetadataTypeTagSchemaFactory.ts +59 -0
  583. package/src/factories/ProtobufFactory.ts +9 -1
  584. package/src/factories/TypeFactory.ts +14 -14
  585. package/src/factories/internal/metadata/MetadataHelper.ts +7 -1
  586. package/src/factories/internal/metadata/emend_metadata_atomics.ts +15 -7
  587. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -1
  588. package/src/factories/internal/metadata/iterate_metadata.ts +2 -2
  589. package/src/factories/internal/metadata/iterate_metadata_array.ts +34 -1
  590. package/src/factories/internal/metadata/iterate_metadata_constant.ts +17 -2
  591. package/src/factories/internal/metadata/{iterate_metadata_resolve.ts → iterate_metadata_escape.ts} +1 -1
  592. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +51 -97
  593. package/src/factories/internal/metadata/iterate_metadata_native.ts +21 -20
  594. package/src/factories/internal/metadata/iterate_metadata_object.ts +0 -10
  595. package/src/factories/internal/metadata/iterate_metadata_sort.ts +15 -2
  596. package/src/functional/$FormDataReader/$FormDataReader.ts +83 -0
  597. package/src/functional/$FormDataReader/index.ts +1 -0
  598. package/src/functional/$HeadersReader/$HeadersReader.ts +26 -0
  599. package/src/functional/$HeadersReader/index.ts +1 -0
  600. package/src/functional/$ParameterReader/$ParameterReader.ts +29 -0
  601. package/src/functional/$ParameterReader/index.ts +1 -0
  602. package/src/functional/$ProtobufReader.ts +5 -19
  603. package/src/functional/$ProtobufSizer.ts +11 -21
  604. package/src/functional/$ProtobufWriter.ts +8 -33
  605. package/src/functional/$QueryReader/$QueryReader.ts +46 -0
  606. package/src/functional/$QueryReader/index.ts +1 -0
  607. package/src/functional/$any.ts +4 -0
  608. package/src/functional/$clone.ts +1 -4
  609. package/src/functional/$convention.ts +0 -3
  610. package/src/functional/$dictionary.ts +22 -0
  611. package/src/functional/$every.ts +11 -0
  612. package/src/functional/$guard.ts +6 -20
  613. package/src/functional/$is_between.ts +0 -3
  614. package/src/functional/$join.ts +0 -12
  615. package/src/functional/$number.ts +0 -3
  616. package/src/functional/$report.ts +0 -3
  617. package/src/functional/$rest.ts +0 -3
  618. package/src/functional/$stoll.ts +0 -3
  619. package/src/functional/$string.ts +3 -10
  620. package/src/functional/$strlen.ts +0 -3
  621. package/src/functional/$throws.ts +0 -3
  622. package/src/functional/$varint.ts +130 -0
  623. package/src/functional/$zigzag.ts +39 -0
  624. package/src/functional/IProtobufWriter.ts +0 -3
  625. package/src/functional/Namespace/functional.ts +5 -0
  626. package/src/functional/Namespace/http.ts +9 -0
  627. package/src/functional/Namespace/index.ts +76 -0
  628. package/src/functional/Namespace/json.ts +15 -0
  629. package/src/functional/Namespace/misc.ts +14 -0
  630. package/src/functional/Namespace/notations.ts +23 -0
  631. package/src/functional/Namespace/protobuf.ts +20 -0
  632. package/src/functional/is.ts +10 -0
  633. package/src/functional.ts +872 -0
  634. package/src/http.ts +566 -412
  635. package/src/json.ts +181 -80
  636. package/src/misc.ts +190 -60
  637. package/src/module.ts +205 -60
  638. package/src/notations.ts +312 -76
  639. package/src/programmers/AssertProgrammer.ts +90 -46
  640. package/src/programmers/CheckerProgrammer.ts +57 -3
  641. package/src/programmers/FeatureProgrammer.ts +27 -27
  642. package/src/programmers/IsProgrammer.ts +1 -1
  643. package/src/programmers/RandomProgrammer.ts +85 -22
  644. package/src/programmers/TypiaProgrammer.ts +10 -18
  645. package/src/programmers/ValidateProgrammer.ts +47 -48
  646. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +130 -0
  647. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +81 -0
  648. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +77 -0
  649. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +61 -0
  650. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +73 -0
  651. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +84 -0
  652. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +113 -0
  653. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +203 -0
  654. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +107 -0
  655. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +32 -0
  656. package/src/programmers/helpers/AtomicPredicator.ts +1 -2
  657. package/src/programmers/helpers/FunctionImporeter.ts +1 -0
  658. package/src/programmers/helpers/FunctionImporter.ts +17 -58
  659. package/src/programmers/helpers/ProtobufUtil.ts +2 -2
  660. package/src/programmers/helpers/PruneJoiner.ts +8 -10
  661. package/src/programmers/helpers/StringifyJoinder.ts +3 -2
  662. package/src/programmers/helpers/disable_function_importer_declare.ts +4 -5
  663. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +87 -0
  664. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +18 -6
  665. package/src/programmers/http/HttpAssertQueryProgrammer.ts +18 -6
  666. package/src/programmers/http/HttpFormDataProgrammer.ts +256 -0
  667. package/src/programmers/http/HttpHeadersProgrammer.ts +36 -25
  668. package/src/programmers/http/HttpIsFormDataProgrammer.ts +90 -0
  669. package/src/programmers/http/HttpIsHeadersProgrammer.ts +14 -6
  670. package/src/programmers/http/HttpIsQueryProgrammer.ts +14 -6
  671. package/src/programmers/http/HttpParameterProgrammer.ts +4 -6
  672. package/src/programmers/http/HttpQueryProgrammer.ts +38 -30
  673. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +75 -0
  674. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +2 -2
  675. package/src/programmers/http/HttpValidateQueryProgrammer.ts +2 -2
  676. package/src/programmers/internal/application_array.ts +27 -50
  677. package/src/programmers/internal/application_boolean.ts +18 -28
  678. package/src/programmers/internal/application_escaped.ts +40 -18
  679. package/src/programmers/internal/application_number.ts +17 -89
  680. package/src/programmers/internal/application_plugin.ts +19 -0
  681. package/src/programmers/internal/application_string.ts +17 -53
  682. package/src/programmers/internal/application_templates.ts +17 -16
  683. package/src/programmers/internal/application_v30_alias.ts +51 -0
  684. package/src/programmers/internal/application_v30_constant.ts +18 -0
  685. package/src/programmers/internal/application_v30_native.ts +28 -0
  686. package/src/programmers/internal/application_v30_object.ts +148 -0
  687. package/src/programmers/internal/application_v30_schema.ts +155 -0
  688. package/src/programmers/internal/application_v30_tuple.ts +33 -0
  689. package/src/programmers/internal/application_v31_alias.ts +43 -0
  690. package/src/programmers/internal/application_v31_constant.ts +22 -0
  691. package/src/programmers/internal/application_v31_native.ts +24 -0
  692. package/src/programmers/internal/application_v31_object.ts +141 -0
  693. package/src/programmers/internal/application_v31_schema.ts +150 -0
  694. package/src/programmers/internal/application_v31_tuple.ts +22 -0
  695. package/src/programmers/internal/check_dynamic_key.ts +5 -6
  696. package/src/programmers/internal/check_dynamic_properties.ts +20 -7
  697. package/src/programmers/internal/check_number.ts +35 -34
  698. package/src/programmers/internal/check_object.ts +5 -4
  699. package/src/programmers/internal/check_template.ts +1 -1
  700. package/src/programmers/internal/decode_union_object.ts +37 -16
  701. package/src/programmers/internal/feature_object_entries.ts +8 -8
  702. package/src/programmers/internal/metadata_to_pattern.ts +7 -6
  703. package/src/programmers/json/JsonApplicationProgrammer.ts +70 -37
  704. package/src/programmers/json/JsonAssertParseProgrammer.ts +21 -7
  705. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +9 -3
  706. package/src/programmers/json/JsonIsParseProgrammer.ts +12 -4
  707. package/src/programmers/json/JsonStringifyProgrammer.ts +33 -26
  708. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +21 -7
  709. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +9 -3
  710. package/src/programmers/misc/MiscCloneProgrammer.ts +25 -19
  711. package/src/programmers/misc/MiscIsCloneProgrammer.ts +12 -4
  712. package/src/programmers/misc/MiscLiteralsProgrammer.ts +9 -11
  713. package/src/programmers/misc/MiscPruneProgrammer.ts +1 -1
  714. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +9 -3
  715. package/src/programmers/notations/NotationGeneralProgrammer.ts +12 -23
  716. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +18 -6
  717. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +9 -3
  718. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +52 -41
  719. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +55 -58
  720. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -4
  721. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +3 -3
  722. package/src/protobuf.ts +211 -51
  723. package/src/reflect.ts +9 -3
  724. package/src/schemas/json/IJsonApplication.ts +14 -7
  725. package/src/schemas/metadata/IMetadataConstant.ts +3 -1
  726. package/src/schemas/metadata/IMetadataConstantValue.ts +8 -0
  727. package/src/schemas/metadata/IMetadataTypeTag.ts +1 -0
  728. package/src/schemas/metadata/Metadata.ts +30 -13
  729. package/src/schemas/metadata/MetadataAtomic.ts +17 -15
  730. package/src/schemas/metadata/MetadataConstant.ts +5 -17
  731. package/src/schemas/metadata/MetadataConstantValue.ts +53 -0
  732. package/src/tags/Constant.ts +15 -0
  733. package/src/tags/ContentMediaType.ts +10 -0
  734. package/src/tags/Default.ts +7 -4
  735. package/src/tags/ExclusiveMaximum.ts +6 -0
  736. package/src/tags/ExclusiveMinimum.ts +6 -0
  737. package/src/tags/Format.ts +10 -24
  738. package/src/tags/JsonSchemaPlugin.ts +8 -0
  739. package/src/tags/MaxItems.ts +3 -0
  740. package/src/tags/MaxLength.ts +3 -0
  741. package/src/tags/Maximum.ts +5 -0
  742. package/src/tags/MinItems.ts +3 -0
  743. package/src/tags/MinLength.ts +3 -0
  744. package/src/tags/Minimum.ts +5 -0
  745. package/src/tags/MultipleOf.ts +5 -0
  746. package/src/tags/Pattern.ts +3 -0
  747. package/src/tags/TagBase.ts +9 -1
  748. package/src/tags/Type.ts +19 -14
  749. package/src/tags/index.ts +3 -0
  750. package/src/tags/internal/FormatCheatSheet.ts +71 -0
  751. package/src/transformers/CallExpressionTransformer.ts +146 -1
  752. package/src/transformers/features/AssertTransformer.ts +2 -2
  753. package/src/transformers/features/CreateAssertTransformer.ts +2 -2
  754. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -0
  755. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +12 -0
  756. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +9 -0
  757. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +9 -0
  758. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +12 -0
  759. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +10 -0
  760. package/src/transformers/features/http/HttpFormDataTransformer.ts +9 -0
  761. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +9 -0
  762. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +10 -0
  763. package/src/transformers/features/json/JsonApplicationTransformer.ts +8 -18
  764. package/src/transformers/internal/GenericTransformer.ts +12 -4
  765. package/src/utils/ArrayUtil.ts +0 -2
  766. package/src/utils/NamingConvention/NamingConvention.ts +86 -0
  767. package/src/utils/NamingConvention/index.ts +1 -0
  768. package/src/utils/RandomGenerator/RandomGenerator.ts +105 -0
  769. package/src/utils/RandomGenerator/index.ts +1 -0
  770. package/src/utils/StringUtil/StringUtil.ts +7 -0
  771. package/src/utils/StringUtil/index.ts +1 -0
  772. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +0 -1
  773. package/lib/functional/$HeadersReader.js +0 -35
  774. package/lib/functional/$HeadersReader.js.map +0 -1
  775. package/lib/functional/$ParameterReader.js +0 -35
  776. package/lib/functional/$ParameterReader.js.map +0 -1
  777. package/lib/functional/$QueryReader.js +0 -60
  778. package/lib/functional/$QueryReader.js.map +0 -1
  779. package/lib/functional/$camel.js +0 -7
  780. package/lib/functional/$camel.js.map +0 -1
  781. package/lib/functional/$generator.js +0 -6
  782. package/lib/functional/$generator.js.map +0 -1
  783. package/lib/functional/$pascal.js +0 -7
  784. package/lib/functional/$pascal.js.map +0 -1
  785. package/lib/functional/$snake.js +0 -7
  786. package/lib/functional/$snake.js.map +0 -1
  787. package/lib/programmers/internal/JSON_SCHEMA_PREFIX.d.ts +0 -1
  788. package/lib/programmers/internal/JSON_SCHEMA_PREFIX.js +0 -5
  789. package/lib/programmers/internal/JSON_SCHEMA_PREFIX.js.map +0 -1
  790. package/lib/programmers/internal/application_alias.d.ts +0 -5
  791. package/lib/programmers/internal/application_alias.js +0 -67
  792. package/lib/programmers/internal/application_alias.js.map +0 -1
  793. package/lib/programmers/internal/application_constant.js +0 -21
  794. package/lib/programmers/internal/application_constant.js.map +0 -1
  795. package/lib/programmers/internal/application_default.js +0 -40
  796. package/lib/programmers/internal/application_default.js.map +0 -1
  797. package/lib/programmers/internal/application_default_string.js +0 -63
  798. package/lib/programmers/internal/application_default_string.js.map +0 -1
  799. package/lib/programmers/internal/application_native.js +0 -33
  800. package/lib/programmers/internal/application_native.js.map +0 -1
  801. package/lib/programmers/internal/application_object.js +0 -202
  802. package/lib/programmers/internal/application_object.js.map +0 -1
  803. package/lib/programmers/internal/application_schema.js +0 -236
  804. package/lib/programmers/internal/application_schema.js.map +0 -1
  805. package/lib/programmers/internal/application_tuple.js +0 -46
  806. package/lib/programmers/internal/application_tuple.js.map +0 -1
  807. package/lib/schemas/json/IJsonComponents.d.ts +0 -18
  808. package/lib/schemas/json/IJsonComponents.js.map +0 -1
  809. package/lib/schemas/json/IJsonSchema.d.ts +0 -88
  810. package/lib/schemas/json/IJsonSchema.js.map +0 -1
  811. package/lib/utils/NamingConvention.d.ts +0 -5
  812. package/lib/utils/NamingConvention.js.map +0 -1
  813. package/lib/utils/RandomGenerator.d.ts +0 -1
  814. package/lib/utils/RandomGenerator.js +0 -66
  815. package/lib/utils/RandomGenerator.js.map +0 -1
  816. package/lib/utils/StringUtil.d.ts +0 -3
  817. package/lib/utils/StringUtil.js +0 -10
  818. package/lib/utils/StringUtil.js.map +0 -1
  819. package/src/functional/$HeadersReader.ts +0 -37
  820. package/src/functional/$ParameterReader.ts +0 -40
  821. package/src/functional/$QueryReader.ts +0 -65
  822. package/src/functional/$camel.ts +0 -8
  823. package/src/functional/$generator.ts +0 -6
  824. package/src/functional/$pascal.ts +0 -8
  825. package/src/functional/$snake.ts +0 -8
  826. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +0 -1
  827. package/src/programmers/internal/application_alias.ts +0 -74
  828. package/src/programmers/internal/application_constant.ts +0 -25
  829. package/src/programmers/internal/application_default.ts +0 -17
  830. package/src/programmers/internal/application_default_string.ts +0 -33
  831. package/src/programmers/internal/application_native.ts +0 -34
  832. package/src/programmers/internal/application_object.ts +0 -183
  833. package/src/programmers/internal/application_schema.ts +0 -165
  834. package/src/programmers/internal/application_tuple.ts +0 -54
  835. package/src/schemas/json/IJsonComponents.ts +0 -19
  836. package/src/schemas/json/IJsonSchema.ts +0 -122
  837. package/src/utils/NamingConvention.ts +0 -87
  838. package/src/utils/RandomGenerator.ts +0 -83
  839. package/src/utils/StringUtil.ts +0 -4
  840. /package/lib/functional/{$HeadersReader.d.ts → is.d.ts} +0 -0
  841. /package/lib/{functional/$ParameterReader.d.ts → programmers/internal/application_plugin.d.ts} +0 -0
  842. /package/lib/{functional/$QueryReader.d.ts → programmers/internal/application_v30_alias.d.ts} +0 -0
  843. /package/lib/{functional/$camel.d.ts → programmers/internal/application_v30_constant.d.ts} +0 -0
  844. /package/lib/{functional/$generator.d.ts → programmers/internal/application_v30_native.d.ts} +0 -0
  845. /package/lib/{functional/$pascal.d.ts → programmers/internal/application_v30_object.d.ts} +0 -0
  846. /package/lib/{functional/$snake.d.ts → programmers/internal/application_v30_schema.d.ts} +0 -0
  847. /package/lib/programmers/internal/{application_constant.d.ts → application_v30_tuple.d.ts} +0 -0
  848. /package/lib/programmers/internal/{application_default.d.ts → application_v31_alias.d.ts} +0 -0
  849. /package/lib/programmers/internal/{application_default_string.d.ts → application_v31_constant.d.ts} +0 -0
  850. /package/lib/programmers/internal/{application_native.d.ts → application_v31_native.d.ts} +0 -0
  851. /package/lib/programmers/internal/{application_object.d.ts → application_v31_object.d.ts} +0 -0
  852. /package/lib/programmers/internal/{application_schema.d.ts → application_v31_schema.d.ts} +0 -0
  853. /package/lib/programmers/internal/{application_tuple.d.ts → application_v31_tuple.d.ts} +0 -0
package/src/http.ts CHANGED
@@ -1,52 +1,212 @@
1
+ import * as Namespace from "./functional/Namespace";
2
+
1
3
  import { Atomic } from "./typings/Atomic";
2
4
 
3
5
  import { IValidation } from "./IValidation";
4
6
  import { Resolved } from "./Resolved";
7
+ import { TypeGuardError } from "./TypeGuardError";
5
8
 
6
9
  /* ===========================================================
7
10
  HTTP
11
+ - FORM-DATA
8
12
  - QUERY
9
13
  - HEADERS
10
14
  - PARAMETER
11
15
  - FACTORY FUNCTIONS
12
16
  ==============================================================
13
- QUERY
17
+ FORM-DATA
14
18
  ----------------------------------------------------------- */
15
19
  /**
16
- * > You must configure the generic argument `T`.
17
- *
18
- * URL query decoder.
20
+ * Form data decoder.
19
21
  *
20
- * `typia.http.query()` is a function decoding a query string or an `URLSearchParams`
21
- * instance, with automatic type casting to the expected type. When property type be
22
- * defined as `boolean` or `number` type, `typia.http.query()` will cast the value to
22
+ * `typia.http.formData()` is a function decoding `FormData` instance, with
23
+ * automatic type casting to the expected type. When roperty type be defined
24
+ * as `boolean` or `Blob` type, `typia.http.formData()` will cast the value to
23
25
  * the expected type when decoding.
24
26
  *
25
- * By the way, as URL query is not enough to express complex data structures,
26
- * `typia.http.query()` function has some limitations. If target type `T` is not
27
- * following those restrictions, compilation errors would be occured.
27
+ * By the way, as `FormData` is not enough to express complex data structures,
28
+ * `typia.http.formData()` function has some limitations. If target type `T` is
29
+ * not following those restrictions, compilation errors would be occured.
28
30
  *
29
- * 1. Type `T` must be an object type
30
- * 2. Do not allow dynamic property
31
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
32
- * 4. By the way, union type never be not allowed
31
+ * 1. Type `T` must be an object type
32
+ * 2. Do not allow dynamic property
33
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
34
+ * 4. By the way, union type never be not allowed
33
35
  *
34
- * Also, `typia.http.query()` function does not perform validation about the decoded
35
- * value. Therefore, if you can't sure that input data is following the `T` type,
36
- * it would better to call one of below functions intead.
36
+ * Also, `typia.http.formData()` function does not perform validation about the
37
+ * decoded value. Therefore, if you can't sure that input data is following the
38
+ * `T` type, it would better to call one of below functions intead.
37
39
  *
38
- * - {@link assertQuery}
39
- * - {@link isQuery}
40
- * - {@link validateQuery}
40
+ * @template T Expected type of decoded value
41
+ * @param input FormData instance
42
+ * @returns Decoded form FormData
43
+ *
44
+ * @author Jeongho Nam - https://github.com/samchon
45
+ */
46
+ function formData<T extends object>(input: FormData): Resolved<T>;
47
+
48
+ /**
49
+ * @internal
50
+ */
51
+ function formData(): never {
52
+ halt("formData");
53
+ }
54
+ const formDataPure = /** @__PURE__ */ Object.assign<typeof formData, {}>(
55
+ formData,
56
+ /** @__PURE__ */ Namespace.http.formData(),
57
+ );
58
+ export { formDataPure as formData };
59
+
60
+ /**
61
+ * Form data decoder with type assertion.
62
+ *
63
+ * `typia.http.assertFormData()` is a function decoding `FormData` instance, with
64
+ * automatic type casting to the expected type. When roperty type be defined
65
+ * as `boolean` or `Blob` type, `typia.http.assertFormData()` will cast the value
66
+ * to the expected type when decoding.
67
+ *
68
+ * Also, after decoding, `typia.http.assertFormData()` performs type assertion to
69
+ * the decoded value by combining with {@link assert} function. Therefore, when
70
+ * the decoded value is not following the `T` type, {@link TypeGuardError} or
71
+ * custom error generated by *errorFactory* would be thrown.
72
+ *
73
+ * By the way, as `FormData` is not enough to express complex data structures,
74
+ * `typia.http.assertFormData()` function has some limitations. If target type `T`
75
+ * is not following those restrictions, compilation errors would be occured.
76
+ *
77
+ * 1. Type `T` must be an object type
78
+ * 2. Do not allow dynamic property
79
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
80
+ * 4. By the way, union type never be not allowed
41
81
  *
42
82
  * @template T Expected type of decoded value
43
- * @param input Query string or URLSearchParams instance
44
- * @returns Decoded query object
83
+ * @param input FormData instance
84
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
85
+ * @returns Decoded form FormData
45
86
  *
46
87
  * @author Jeongho Nam - https://github.com/samchon
47
88
  */
48
- export function query(): never;
89
+ function assertFormData<T extends object>(
90
+ input: FormData,
91
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
92
+ ): Resolved<T>;
93
+
94
+ /**
95
+ * @internal
96
+ */
97
+ function assertFormData(): never {
98
+ halt("assertFormData");
99
+ }
100
+ const assertFormDataPure = /** @__PURE__ */ Object.assign<
101
+ typeof assertFormData,
102
+ {},
103
+ {}
104
+ >(
105
+ assertFormData,
106
+ /** @__PURE__ */ Namespace.http.formData(),
107
+ /** @__PURE__ */ Namespace.assert("http.assertFormData"),
108
+ );
109
+ export { assertFormDataPure as assertFormData };
49
110
 
111
+ /**
112
+ * Form data decoder with type checking.
113
+ *
114
+ * `typia.http.isFormData()` is a function decoding `FormData` instance, with
115
+ * automatic type casting to the expected type. When roperty type be defined
116
+ * as `boolean` or `Blob` type, `typia.http.isFormData()` will cast the value
117
+ * to the expected type when decoding.
118
+ *
119
+ * Also, after decoding, `typia.http.isFormData()` performs type checking to the
120
+ * decoded value by combining with {@link is} function. Therefore, when the
121
+ * decoded value is not following the `T` type, `null` value would be returned.
122
+ *
123
+ * By the way, as `FormData` is not enough to express complex data structures,
124
+ * `typia.http.isFormData()` function has some limitations. If target type `T` is
125
+ * not following those restrictions, compilation errors would be occured.
126
+ *
127
+ * 1. Type `T` must be an object type
128
+ * 2. Do not allow dynamic property
129
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
130
+ * 4. By the way, union type never be not allowed
131
+ *
132
+ * @template T Expected type of decoded value
133
+ * @param input FormData instance
134
+ * @returns Decoded form FormData or `null` value
135
+ *
136
+ * @author Jeongho Nam - https://github.com/samchon
137
+ */
138
+ function isFormData<T extends object>(input: FormData): Resolved<T> | null;
139
+
140
+ /**
141
+ * @internal
142
+ */
143
+ function isFormData(): never {
144
+ halt("isFormData");
145
+ }
146
+ const isFormDataPure = /** @__PURE__ */ Object.assign<
147
+ typeof isFormData,
148
+ {},
149
+ {}
150
+ >(
151
+ isFormData,
152
+ /** @__PURE__ */ Namespace.http.formData(),
153
+ /** @__PURE__ */ Namespace.is(),
154
+ );
155
+ export { isFormDataPure as isFormData };
156
+
157
+ /**
158
+ * Form data decoder with type validation.
159
+ *
160
+ * `typia.http.validateFormData()` is a function decoding `FormData` instance,
161
+ * with automatic type casting to the expected type. When roperty type be defined
162
+ * as `boolean` or `Blob` type, `typia.http.validateFormData()` will cast the
163
+ * value to the expected type when decoding.
164
+ *
165
+ * Also, after decoding, `typia.http.validateFormData()` performs type validation
166
+ * to the decoded value by combining with {@link validate} function. Therefore,
167
+ * when the decoded value is not following the `T` type,
168
+ * {@link IValidation.IFailure} would be returned. Otherwise,
169
+ * x@xxxx IValidation.ISuccess} would be returned.
170
+ *
171
+ * By the way, as `FormData` is not enough to express complex data structures,
172
+ * `typia.http.validateFormData()` function has some limitations. If target type
173
+ * `T` is not following those restrictions, compilation errors would be occured.
174
+ *
175
+ * 1. Type `T` must be an object type
176
+ * 2. Do not allow dynamic property
177
+ * 3. Only `boolean`, `bigint`, `number`, `string`, `Blob`, `File` or their array types are allowed
178
+ * 4. By the way, union type never be not allowed
179
+ *
180
+ * @template T Expected type of decoded value
181
+ * @param input FormData instance
182
+ * @returns Validation result with decoded form FormData
183
+ *
184
+ * @author Jeongho Nam - https://github.com/samchon
185
+ */
186
+ function validateFormData<T extends object>(
187
+ input: FormData,
188
+ ): IValidation<Resolved<T>>;
189
+
190
+ /**
191
+ * @internal
192
+ */
193
+ function validateFormData(): never {
194
+ halt("validateFormData");
195
+ }
196
+ const validateFormDataPure = /** @__PURE__ */ Object.assign<
197
+ typeof validateFormData,
198
+ {},
199
+ {}
200
+ >(
201
+ validateFormData,
202
+ /** @__PURE__ */ Namespace.http.formData(),
203
+ /** @__PURE__ */ Namespace.validate(),
204
+ );
205
+ export { validateFormDataPure as validateFormData };
206
+
207
+ /* -----------------------------------------------------------
208
+ QUERY
209
+ ----------------------------------------------------------- */
50
210
  /**
51
211
  * URL query decoder.
52
212
  *
@@ -78,48 +238,19 @@ export function query(): never;
78
238
  *
79
239
  * @author Jeongho Nam - https://github.com/samchon
80
240
  */
81
- export function query<T extends object>(
82
- input: string | URLSearchParams,
83
- ): Resolved<T>;
241
+ function query<T extends object>(input: string | URLSearchParams): Resolved<T>;
84
242
 
85
243
  /**
86
244
  * @internal
87
245
  */
88
- export function query(): never {
246
+ function query(): never {
89
247
  halt("query");
90
248
  }
91
-
92
- /**
93
- * > You must configure the generic argument `T`.
94
- *
95
- * URL query decoder with type assertion.
96
- *
97
- * `typia.http.assertQuery()` is a function decoding a query string or an
98
- * `URLSearchParams` instance, with automatic type casting to the expected type.
99
- * When property type be defined as `boolean` or `number` type,
100
- * `typia.http.assertQuery()` will cast the value to the expected type when decoding.
101
- *
102
- * Also, after decoding, `typia.http.assertQuery()` performs type assertion to the
103
- * decoded value by combining with {@link assert} function. Therefore, when the
104
- * decoded value is not following the `T` type, {@link TypeGuardError} would be
105
- * thrown.
106
- *
107
- * By the way, as URL query is not enough to express complex data structures,
108
- * `typia.http.assertQuery()` function has some limitations. If target type `T` is
109
- * notfollowing those restrictions, compilation errors would be occured.
110
- *
111
- * 1. Type `T` must be an object type
112
- * 2. Do not allow dynamic property
113
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
114
- * 4. By the way, union type never be not allowed
115
- *
116
- * @template T Expected type of decoded value
117
- * @param input Query string or URLSearchParams instance
118
- * @returns Decoded query object
119
- *
120
- * @author Jeongho Nam - https://github.com/samchon
121
- */
122
- export function assertQuery(): never;
249
+ const queryPure = /** @__PURE__ */ Object.assign<typeof query, {}>(
250
+ query,
251
+ /** @__PURE__ */ Namespace.http.query(),
252
+ );
253
+ export { queryPure as query };
123
254
 
124
255
  /**
125
256
  * URL query decoder with type assertion.
@@ -131,8 +262,8 @@ export function assertQuery(): never;
131
262
  *
132
263
  * Also, after decoding, `typia.http.assertQuery()` performs type assertion to the
133
264
  * decoded value by combining with {@link assert} function. Therefore, when the
134
- * decoded value is not following the `T` type, {@link TypeGuardError} would be
135
- * thrown.
265
+ * decoded value is not following the `T` type, {@link TypeGuardError} or custom
266
+ * error generated by *errorFactory* would be thrown.
136
267
  *
137
268
  * By the way, as URL query is not enough to express complex data structures,
138
269
  * `typia.http.assertQuery()` function has some limitations. If target type `T` is
@@ -145,24 +276,34 @@ export function assertQuery(): never;
145
276
  *
146
277
  * @template T Expected type of decoded value
147
278
  * @param input Query string or URLSearchParams instance
279
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
148
280
  * @returns Decoded query object
149
281
  *
150
282
  * @author Jeongho Nam - https://github.com/samchon
151
283
  */
152
- export function assertQuery<T extends object>(
284
+ function assertQuery<T extends object>(
153
285
  input: string | URLSearchParams,
286
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
154
287
  ): Resolved<T>;
155
288
 
156
289
  /**
157
290
  * @internal
158
291
  */
159
- export function assertQuery(): never {
292
+ function assertQuery(): never {
160
293
  halt("assertQuery");
161
294
  }
295
+ const assertQueryPure = /** @__PURE__ */ Object.assign<
296
+ typeof assertQuery,
297
+ {},
298
+ {}
299
+ >(
300
+ assertQuery,
301
+ /** @__PURE__ */ Namespace.http.query(),
302
+ /** @__PURE__ */ Namespace.assert("http.assertQuery"),
303
+ );
304
+ export { assertQueryPure as assertQuery };
162
305
 
163
306
  /**
164
- * > You must configure the generic argument `T`.
165
- *
166
307
  * URL query decoder with type checking.
167
308
  *
168
309
  * `typia.http.isQuery()` is a function decoding a query string or an
@@ -189,77 +330,23 @@ export function assertQuery(): never {
189
330
  *
190
331
  * @author Jeongho Nam - https://github.com/samchon
191
332
  */
192
- export function isQuery(): never;
193
-
194
- /**
195
- * URL query decoder with type checking.
196
- *
197
- * `typia.http.isQuery()` is a function decoding a query string or an
198
- * `URLSearchParams` instance, with automatic type casting to the expected type.
199
- * When property type be defined as `boolean` or `number` type,
200
- * `typia.http.isQuery()` will cast the value to the expected type when decoding.
201
- *
202
- * Also, after decoding, `typia.http.isQuery()` performs type checking to the
203
- * decoded value by combining with {@link is} function. Therefore, when the
204
- * decoded value is not following the `T` type, `null` value would be returned.
205
- *
206
- * By the way, as URL query is not enough to express complex data structures,
207
- * `typia.http.isQuery()` function has some limitations. If target type `T` is
208
- * notfollowing those restrictions, compilation errors would be occured.
209
- *
210
- * 1. Type `T` must be an object type
211
- * 2. Do not allow dynamic property
212
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
213
- * 4. By the way, union type never be not allowed
214
- *
215
- * @template T Expected type of decoded value
216
- * @param input Query string or URLSearchParams instance
217
- * @returns Decoded query object or `null` value
218
- *
219
- * @author Jeongho Nam - https://github.com/samchon
220
- */
221
- export function isQuery<T extends object>(
333
+ function isQuery<T extends object>(
222
334
  input: string | URLSearchParams,
223
335
  ): Resolved<T> | null;
224
336
 
225
337
  /**
226
338
  * @internal
227
339
  */
228
- export function isQuery(): never {
340
+ function isQuery(): never {
229
341
  halt("isQuery");
230
342
  }
231
343
 
232
- /**
233
- * > You must configure the generic argument `T`.
234
- *
235
- * URL query decoder with type validation.
236
- *
237
- * `typia.http.validateQuery()` is a function decoding a query string or an
238
- * `URLSearchParams` instance, with automatic type casting to the expected type.
239
- * When property type be defined as `boolean` or `number` type,
240
- * `typia.http.validateQuery()` will cast the value to the expected type when decoding.
241
- *
242
- * Also, after decoding, `typia.http.validateQuery()` performs type validation to the
243
- * decoded value by combining with {@link validate} function. Therefore, when the
244
- * decoded value is not following the `T` type, {@link IValidation.IFailure} would
245
- * be returned. Otherwise, {@link IValidation.ISuccess} would be returned.
246
- *
247
- * By the way, as URL query is not enough to express complex data structures,
248
- * `typia.http.validateQuery()` function has some limitations. If target type `T` is
249
- * notfollowing those restrictions, compilation errors would be occured.
250
- *
251
- * 1. Type `T` must be an object type
252
- * 2. Do not allow dynamic property
253
- * 3. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
254
- * 4. By the way, union type never be not allowed
255
- *
256
- * @template T Expected type of decoded value
257
- * @param input Query string or URLSearchParams instance
258
- * @returns Validation result with decoded query object
259
- *
260
- * @author Jeongho Nam - https://github.com/samchon
261
- */
262
- export function validateQuery(): never;
344
+ const isQueryPure = /** @__PURE__ */ Object.assign<typeof isQuery, {}, {}>(
345
+ isQuery,
346
+ /** @__PURE__ */ Namespace.http.query(),
347
+ /** @__PURE__ */ Namespace.is(),
348
+ );
349
+ export { isQueryPure as isQuery };
263
350
 
264
351
  /**
265
352
  * URL query decoder with type validation.
@@ -289,76 +376,30 @@ export function validateQuery(): never;
289
376
  *
290
377
  * @author Jeongho Nam - https://github.com/samchon
291
378
  */
292
- export function validateQuery<T extends object>(
379
+ function validateQuery<T extends object>(
293
380
  input: string | URLSearchParams,
294
381
  ): IValidation<Resolved<T>>;
295
382
 
296
383
  /**
297
384
  * @internal
298
385
  */
299
- export function validateQuery(): never {
386
+ function validateQuery(): never {
300
387
  halt("validateQuery");
301
388
  }
389
+ const validateQueryPure = /** @__PURE__ */ Object.assign<
390
+ typeof validateQuery,
391
+ {},
392
+ {}
393
+ >(
394
+ validateQuery,
395
+ /** @__PURE__ */ Namespace.http.query(),
396
+ /** @__PURE__ */ Namespace.validate(),
397
+ );
398
+ export { validateQueryPure as validateQuery };
302
399
 
303
400
  /* -----------------------------------------------------------
304
401
  HEADERS
305
402
  ----------------------------------------------------------- */
306
- /**
307
- * > You must configure the generic argument `T`.
308
- *
309
- * Headers decoder (for express and fastify).
310
- *
311
- * `typia.http.headers()` is a function decoding an header instance, with automatic
312
- * type casting to the expected type. When property type be defined as `boolean` or
313
- * `number` type, `typia.http.headers()` will cast the value to the expected type.
314
- *
315
- * By the way, as HTTP headers are not enough to express complex data structures,
316
- * `typia.http.headers()` function has some limitations. If target type `T` is not
317
- * following those restrictions, compilation errors would be occured.
318
- *
319
- * 1. Type `T` must be an object type
320
- * 2. Do not allow dynamic property
321
- * 3. Property key must be lower case
322
- * 4. Property value cannot be `null`, but `undefined` is possible
323
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
324
- * 6. By the way, union type never be not allowed
325
- * 7. Property `set-cookie` must be array type
326
- * 8. Those properties cannot be array type
327
- * - age
328
- * - authorization
329
- * - content-length
330
- * - content-type
331
- * - etag
332
- * - expires
333
- * - from
334
- * - host
335
- * - if-modified-since
336
- * - if-unmodified-since
337
- * - last-modified
338
- * - location
339
- * - max-forwards
340
- * - proxy-authorization
341
- * - referer
342
- * - retry-after
343
- * - server
344
- * - user-agent
345
- *
346
- * Also, `typia.http.headers()` function does not perform validation about the decoded
347
- * value. Therefore, if you can't sure that input data is following the `T` type,
348
- * it would better to call one of below functions intead.
349
- *
350
- * - {@link assertHeaders}
351
- * - {@link isHeaders}
352
- * - {@link validateHeaders}
353
- *
354
- * @template T Expected type of decoded value
355
- * @param input Query string or URLSearchParams instance
356
- * @returns Decoded headers object
357
- *
358
- * @author Jeongho Nam - https://github.com/samchon
359
- */
360
- export function headers(): never;
361
-
362
403
  /**
363
404
  * Headers decoder (for express and fastify).
364
405
  *
@@ -411,70 +452,22 @@ export function headers(): never;
411
452
  *
412
453
  * @author Jeongho Nam - https://github.com/samchon
413
454
  */
414
- export function headers<T extends object>(
455
+ function headers<T extends object>(
415
456
  input: Record<string, string | string[] | undefined>,
416
457
  ): Resolved<T>;
417
458
 
418
459
  /**
419
460
  * @internal
420
461
  */
421
- export function headers(): never {
462
+ function headers(): never {
422
463
  halt("headers");
423
464
  }
424
465
 
425
- /**
426
- * > You must configure the generic argument `T`.
427
- *
428
- * Headers decoder with type assertion (for express and fastify).
429
- *
430
- * `typia.http.assertHeaders()` is a function decoding an header instance, with
431
- * automatic type casting to the expected type. When property type be defined as
432
- * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
433
- * expected type.
434
- *
435
- * Also, after decoding, `typia.http.assertHeaders()` performs type assertion to the
436
- * decoded value by combining with {@link assert} function. Therefore, when the
437
- * decoded value is not following the `T` type, {@link TypeGuardError} would be
438
- * thrown.
439
- *
440
- * By the way, as HTTP headers are not enough to express complex data structures,
441
- * `typia.http.headers()` function has some limitations. If target type `T` is not
442
- * following those restrictions, compilation errors would be occured.
443
- *
444
- * 1. Type `T` must be an object type
445
- * 2. Do not allow dynamic property
446
- * 3. Property key must be lower case
447
- * 4. Property value cannot be `null`, but `undefined` is possible
448
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
449
- * 6. By the way, union type never be not allowed
450
- * 7. Property `set-cookie` must be array type
451
- * 8. Those properties cannot be array type
452
- * - age
453
- * - authorization
454
- * - content-length
455
- * - content-type
456
- * - etag
457
- * - expires
458
- * - from
459
- * - host
460
- * - if-modified-since
461
- * - if-unmodified-since
462
- * - last-modified
463
- * - location
464
- * - max-forwards
465
- * - proxy-authorization
466
- * - referer
467
- * - retry-after
468
- * - server
469
- * - user-agent
470
- *
471
- * @template T Expected type of decoded value
472
- * @param input Query string or URLSearchParams instance
473
- * @returns Decoded headers object
474
- *
475
- * @author Jeongho Nam - https://github.com/samchon
476
- */
477
- export function assertHeaders(): never;
466
+ const headersPure = /** @__PURE__ */ Object.assign<typeof headers, {}>(
467
+ headers,
468
+ /** @__PURE__ */ Namespace.http.headers(),
469
+ );
470
+ export { headersPure as headers };
478
471
 
479
472
  /**
480
473
  * Headers decoder with type assertion (for express and fastify).
@@ -486,8 +479,8 @@ export function assertHeaders(): never;
486
479
  *
487
480
  * Also, after decoding, `typia.http.assertHeaders()` performs type assertion to the
488
481
  * decoded value by combining with {@link assert} function. Therefore, when the
489
- * decoded value is not following the `T` type, {@link TypeGuardError} would be
490
- * thrown.
482
+ * decoded value is not following the `T` type, {@link TypeGuardError} or custom
483
+ * error generated by *errorFactory* would be thrown.
491
484
  *
492
485
  * By the way, as HTTP headers are not enough to express complex data structures,
493
486
  * `typia.http.headers()` function has some limitations. If target type `T` is not
@@ -522,73 +515,33 @@ export function assertHeaders(): never;
522
515
  *
523
516
  * @template T Expected type of decoded value
524
517
  * @param input Query string or URLSearchParams instance
518
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
525
519
  * @returns Decoded headers object
526
520
  *
527
521
  * @author Jeongho Nam - https://github.com/samchon
528
522
  */
529
- export function assertHeaders<T extends object>(
523
+ function assertHeaders<T extends object>(
530
524
  input: Record<string, string | string[] | undefined>,
525
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
531
526
  ): Resolved<T>;
532
527
 
533
528
  /**
534
529
  * @internal
535
530
  */
536
- export function assertHeaders(): never {
531
+ function assertHeaders(): never {
537
532
  halt("assertHeaders");
538
533
  }
539
534
 
540
- /**
541
- * > You must configure the generic argument `T`.
542
- *
543
- * Headers decoder with type checking (for express and fastify).
544
- *
545
- * `typia.http.isHeaders()` is a function decoding an header instance, with
546
- * automatic type casting to the expected type. When property type be defined as
547
- * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
548
- * expected type.
549
- *
550
- * Also, after decoding, `typia.http.isHeaders()` performs type checking to the
551
- * decoded value by combining with {@link is} function. Therefore, when the
552
- * decoded value is not following the `T` type, `null` value would be returned.
553
- *
554
- * By the way, as HTTP headers are not enough to express complex data structures,
555
- * `typia.http.headers()` function has some limitations. If target type `T` is not
556
- * following those restrictions, compilation errors would be occured.
557
- *
558
- * 1. Type `T` must be an object type
559
- * 2. Do not allow dynamic property
560
- * 3. Property key must be lower case
561
- * 4. Property value cannot be `null`, but `undefined` is possible
562
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
563
- * 6. By the way, union type never be not allowed
564
- * 7. Property `set-cookie` must be array type
565
- * 8. Those properties cannot be array type
566
- * - age
567
- * - authorization
568
- * - content-length
569
- * - content-type
570
- * - etag
571
- * - expires
572
- * - from
573
- * - host
574
- * - if-modified-since
575
- * - if-unmodified-since
576
- * - last-modified
577
- * - location
578
- * - max-forwards
579
- * - proxy-authorization
580
- * - referer
581
- * - retry-after
582
- * - server
583
- * - user-agent
584
- *
585
- * @template T Expected type of decoded value
586
- * @param input Query string or URLSearchParams instance
587
- * @returns Decoded headers object or `null` value
588
- *
589
- * @author Jeongho Nam - https://github.com/samchon
590
- */
591
- export function isHeaders(): never;
535
+ const assertHeadersPure = /** @__PURE__ */ Object.assign<
536
+ typeof assertHeaders,
537
+ {},
538
+ {}
539
+ >(
540
+ assertHeaders,
541
+ /** @__PURE__ */ Namespace.http.headers(),
542
+ /** @__PURE__ */ Namespace.assert("http.assertHeaders"),
543
+ );
544
+ export { assertHeadersPure as assertHeaders };
592
545
 
593
546
  /**
594
547
  * > You must configure the generic argument `T`.
@@ -641,20 +594,24 @@ export function isHeaders(): never;
641
594
  *
642
595
  * @author Jeongho Nam - https://github.com/samchon
643
596
  */
644
- export function isHeaders<T extends object>(
597
+ function isHeaders<T extends object>(
645
598
  input: Record<string, string | string[] | undefined>,
646
599
  ): Resolved<T> | null;
647
600
 
648
601
  /**
649
602
  * @internal
650
603
  */
651
- export function isHeaders(): never {
604
+ function isHeaders(): never {
652
605
  halt("isHeaders");
653
606
  }
607
+ const isHeadersPure = /** @__PURE__ */ Object.assign<typeof isHeaders, {}, {}>(
608
+ isHeaders,
609
+ /** @__PURE__ */ Namespace.http.headers(),
610
+ /** @__PURE__ */ Namespace.is(),
611
+ );
612
+ export { isHeadersPure as isHeaders };
654
613
 
655
614
  /**
656
- * > You must configure the generic argument `T`.
657
- *
658
615
  * Headers decoder with type validation (for express and fastify).
659
616
  *
660
617
  * `typia.http.validateHeaders()` is a function decoding an header instance, with
@@ -704,75 +661,32 @@ export function isHeaders(): never {
704
661
  *
705
662
  * @author Jeongho Nam - https://github.com/samchon
706
663
  */
707
- export function validateHeaders(): never;
708
-
709
- /**
710
- * Headers decoder with type validation (for express and fastify).
711
- *
712
- * `typia.http.validateHeaders()` is a function decoding an header instance, with
713
- * automatic type casting to the expected type. When property type be defined as
714
- * `boolean` or `number` type, `typia.http.headers()` will cast the value to the
715
- * expected type.
716
- *
717
- * Also, after decoding, `typia.http.validateHeaders()` performs type assertion to the
718
- * decoded value by combining with {@link validate} function. Therefore, when the
719
- * decoded value is not following the `T` type, {@link IValidation.IError} would be
720
- * returned. Otherwise, {@link IValidation.ISuccess} be returned.
721
- *
722
- * By the way, as HTTP headers are not enough to express complex data structures,
723
- * `typia.http.headers()` function has some limitations. If target type `T` is not
724
- * following those restrictions, compilation errors would be occured.
725
- *
726
- * 1. Type `T` must be an object type
727
- * 2. Do not allow dynamic property
728
- * 3. Property key must be lower case
729
- * 4. Property value cannot be `null`, but `undefined` is possible
730
- * 5. Only `boolean`, `bigint`, `number`, `string` or their array types are allowed
731
- * 6. By the way, union type never be not allowed
732
- * 7. Property `set-cookie` must be array type
733
- * 8. Those properties cannot be array type
734
- * - age
735
- * - authorization
736
- * - content-length
737
- * - content-type
738
- * - etag
739
- * - expires
740
- * - from
741
- * - host
742
- * - if-modified-since
743
- * - if-unmodified-since
744
- * - last-modified
745
- * - location
746
- * - max-forwards
747
- * - proxy-authorization
748
- * - referer
749
- * - retry-after
750
- * - server
751
- * - user-agent
752
- *
753
- * @template T Expected type of decoded value
754
- * @param input Query string or URLSearchParams instance
755
- * @returns Decoded headers object
756
- *
757
- * @author Jeongho Nam - https://github.com/samchon
758
- */
759
- export function validateHeaders<T extends object>(
664
+ function validateHeaders<T extends object>(
760
665
  input: Record<string, string | string[] | undefined>,
761
666
  ): IValidation<Resolved<T>>;
762
667
 
763
668
  /**
764
669
  * @internal
765
670
  */
766
- export function validateHeaders(): never {
671
+ function validateHeaders(): never {
767
672
  halt("validateHeaders");
768
673
  }
769
674
 
675
+ const validateHeadersPure = /** @__PURE__ */ Object.assign<
676
+ typeof validateHeaders,
677
+ {},
678
+ {}
679
+ >(
680
+ validateHeaders,
681
+ /** @__PURE__ */ Namespace.http.headers(),
682
+ /** @__PURE__ */ Namespace.validate(),
683
+ );
684
+ export { validateHeadersPure as validateHeaders };
685
+
770
686
  /* -----------------------------------------------------------
771
687
  PARAMETER
772
688
  ----------------------------------------------------------- */
773
689
  /**
774
- * > You must configure the generic argument `T`.
775
- *
776
690
  * URL path parameter decoder.
777
691
  *
778
692
  * `typia.http.parameter()` is a function decoding a path parameter, with automatic
@@ -787,37 +701,186 @@ export function validateHeaders(): never {
787
701
  * @param input Path parameter string
788
702
  * @returns Decoded path parameter value
789
703
  */
790
- export function parameter(): never;
704
+ function parameter<T extends Atomic.Type | null>(input: string): Resolved<T>;
791
705
 
792
706
  /**
793
- * URL path parameter decoder.
707
+ * @internal
708
+ */
709
+ function parameter(): never {
710
+ halt("parameter");
711
+ }
712
+
713
+ const parameterPure = /** @__PURE__ */ Object.assign<typeof parameter, {}, {}>(
714
+ parameter,
715
+ /** @__PURE__ */ Namespace.http.parameter(),
716
+ /** @__PURE__ */ Namespace.assert("http.parameter"),
717
+ );
718
+ export { parameterPure as parameter };
719
+
720
+ /* -----------------------------------------------------------
721
+ FACTORY FUNCTIONS
722
+ ----------------------------------------------------------- */
723
+ /**
724
+ * Creates a reusable {@link formdata} function.
794
725
  *
795
- * `typia.http.parameter()` is a function decoding a path parameter, with automatic
796
- * type casting to the expected type. When type `T` has beeen defined as `boolean` or
797
- * `number` type, `typia.http.parameter()` will cast the value to the expected type.
726
+ * @danger You must configure the generic argument `T`
727
+ * @template T The type of the formdata object
728
+ * @throws compile error
798
729
  *
799
- * Also, `typia.http.parameter()` performs type assertion to the decoded value by
800
- * combining with {@link assert} function. Therefore, when the decoded value is not
801
- * following the `T` type, {@link TypeGuardError} would be thrown.
730
+ * @author Jeongho Nam - https://github.com/samchon
731
+ */
732
+ function createFormData(): never;
733
+
734
+ /**
735
+ * Creates a reusable {@link formdata} function.
802
736
  *
803
- * @template T Expected type of decoded value
804
- * @param input Path parameter string
805
- * @returns Decoded path parameter value
737
+ * @template T The type of the formdata object
738
+ * @returns A reusable `formdata` function
739
+ *
740
+ * @author Jeongho Nam - https://github.com/samchon
806
741
  */
807
- export function parameter<T extends Atomic.Type | null>(
808
- input: string,
809
- ): Resolved<T>;
742
+ function createFormData<T extends object>(): (input: FormData) => T;
810
743
 
811
744
  /**
812
745
  * @internal
813
746
  */
814
- export function parameter(): never {
815
- halt("parameter");
747
+ function createFormData<T>(): (input: FormData) => T {
748
+ halt("createFormData");
816
749
  }
817
750
 
818
- /* -----------------------------------------------------------
819
- FACTORY FUNCTIONS
820
- ----------------------------------------------------------- */
751
+ const createFormDataPure = /** @__PURE__ */ Object.assign<
752
+ typeof createFormData,
753
+ {}
754
+ >(createFormData, /** @__PURE__ */ Namespace.http.formData());
755
+ export { createFormDataPure as createFormData };
756
+
757
+ /**
758
+ * Creates a reusable {@link assertFormData} function.
759
+ *
760
+ * @danger You must configure the generic argument `T`
761
+ * @template T The type of the formdata object
762
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
763
+ * @throws compile error
764
+ *
765
+ * @author Jeongho Nam - https://github.com/samchon
766
+ */
767
+ function createAssertFormData(
768
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
769
+ ): never;
770
+
771
+ /**
772
+ * Creates a reusable {@link assertFormData} function.
773
+ *
774
+ * @template T The type of the formdata object
775
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
776
+ * @returns A reusable `assertFormData` function
777
+ *
778
+ * @author Jeongho Nam - https://github.com/samchon
779
+ */
780
+ function createAssertFormData<T extends object>(
781
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
782
+ ): (input: FormData) => T;
783
+
784
+ /**
785
+ * @internal
786
+ */
787
+ function createAssertFormData<T>(): (input: FormData) => T {
788
+ halt("createAssertFormData");
789
+ }
790
+
791
+ const createAssertFormDataPure = /** @__PURE__ */ Object.assign<
792
+ typeof createAssertFormData,
793
+ {},
794
+ {}
795
+ >(
796
+ createAssertFormData,
797
+ /** @__PURE__ */ Namespace.http.formData(),
798
+ /** @__PURE__ */ Namespace.assert("http.createAssertFormData"),
799
+ );
800
+ export { createAssertFormDataPure as createAssertFormData };
801
+
802
+ /**
803
+ * Creates a reusable {@link isFormData} function.
804
+ *
805
+ * @danger You must configure the generic argument `T`
806
+ * @template T The type of the formdata object
807
+ * @throws compile error
808
+ *
809
+ * @author Jeongho Nam - https://github.com/samchon
810
+ */
811
+ function createIsFormData(): never;
812
+
813
+ /**
814
+ * Creates a reusable {@link isFormData} function.
815
+ *
816
+ * @template T The type of the formdata object
817
+ * @returns A reusable `isFormData` function
818
+ *
819
+ * @author Jeongho Nam - https://github.com/samchon
820
+ */
821
+ function createIsFormData<T extends object>(): (input: FormData) => T | null;
822
+
823
+ /**
824
+ * @internal
825
+ */
826
+ function createIsFormData<T>(): (input: FormData) => T | null {
827
+ halt("createIsFormData");
828
+ }
829
+
830
+ const createIsFormDataPure = /** @__PURE__ */ Object.assign<
831
+ typeof createIsFormData,
832
+ {},
833
+ {}
834
+ >(
835
+ createIsFormData,
836
+ /** @__PURE__ */ Namespace.http.formData(),
837
+ /** @__PURE__ */ Namespace.is(),
838
+ );
839
+ export { createIsFormDataPure as createIsFormData };
840
+
841
+ /**
842
+ * Creates a reusable {@link validateFormData} function.
843
+ *
844
+ * @danger You must configure the generic argument `T`
845
+ * @template T The type of the formdata object
846
+ * @throws compile error
847
+ *
848
+ * @author Jeongho Nam - https://github.com/samchon
849
+ */
850
+ function createValidateFormData(): never;
851
+
852
+ /**
853
+ * Creates a reusable {@link validateFormData} function.
854
+ *
855
+ * @template T The type of the formdata object
856
+ * @returns A reusable `validateFormData` function
857
+ *
858
+ * @author Jeongho Nam - https://github.com/samchon
859
+ */
860
+ function createValidateFormData<T extends object>(): (
861
+ input: FormData,
862
+ ) => IValidation<Resolved<T>>;
863
+
864
+ /**
865
+ * @internal
866
+ */
867
+ function createValidateFormData<T>(): (
868
+ input: FormData,
869
+ ) => IValidation<Resolved<T>> {
870
+ halt("createValidateFormData");
871
+ }
872
+
873
+ const createValidateFormDataPure = /** @__PURE__ */ Object.assign<
874
+ typeof createValidateFormData,
875
+ {},
876
+ {}
877
+ >(
878
+ createValidateFormData,
879
+ /** @__PURE__ */ Namespace.http.formData(),
880
+ /** @__PURE__ */ Namespace.validate(),
881
+ );
882
+ export { createValidateFormDataPure as createValidateFormData };
883
+
821
884
  /**
822
885
  * Creates a reusable {@link query} function.
823
886
  *
@@ -827,7 +890,7 @@ export function parameter(): never {
827
890
  *
828
891
  * @author Jeongho Nam - https://github.com/samchon
829
892
  */
830
- export function createQuery(): never;
893
+ function createQuery(): never;
831
894
 
832
895
  /**
833
896
  * Creates a reusable {@link query} function.
@@ -837,47 +900,68 @@ export function createQuery(): never;
837
900
  *
838
901
  * @author Jeongho Nam - https://github.com/samchon
839
902
  */
840
- export function createQuery<T extends object>(): (
903
+ function createQuery<T extends object>(): (
841
904
  input: string | URLSearchParams,
842
905
  ) => T;
843
906
 
844
907
  /**
845
908
  * @internal
846
909
  */
847
- export function createQuery<T>(): (input: string | URLSearchParams) => T {
910
+ function createQuery<T>(): (input: string | URLSearchParams) => T {
848
911
  halt("createQuery");
849
912
  }
850
913
 
914
+ const createQueryPure = /** @__PURE__ */ Object.assign<typeof createQuery, {}>(
915
+ createQuery,
916
+ /** @__PURE__ */ Namespace.http.query(),
917
+ );
918
+ export { createQueryPure as createQuery };
919
+
851
920
  /**
852
921
  * Creates a reusable {@link assertQuery} function.
853
922
  *
854
923
  * @danger You must configure the generic argument `T`
855
924
  * @template T The type of the query object
925
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
856
926
  * @throws compile error
857
927
  *
858
928
  * @author Jeongho Nam - https://github.com/samchon
859
929
  */
860
- export function createAssertQuery(): never;
930
+ function createAssertQuery(
931
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
932
+ ): never;
861
933
 
862
934
  /**
863
935
  * Creates a reusable {@link assertQuery} function.
864
936
  *
865
937
  * @template T The type of the query object
938
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
866
939
  * @returns A reusable `assertQuery` function
867
940
  *
868
941
  * @author Jeongho Nam - https://github.com/samchon
869
942
  */
870
- export function createAssertQuery<T extends object>(): (
871
- input: string | URLSearchParams,
872
- ) => T;
943
+ function createAssertQuery<T extends object>(
944
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
945
+ ): (input: string | URLSearchParams) => T;
873
946
 
874
947
  /**
875
948
  * @internal
876
949
  */
877
- export function createAssertQuery<T>(): (input: string | URLSearchParams) => T {
950
+ function createAssertQuery<T>(): (input: string | URLSearchParams) => T {
878
951
  halt("createAssertQuery");
879
952
  }
880
953
 
954
+ const createAssertQueryPure = /** @__PURE__ */ Object.assign<
955
+ typeof createAssertQuery,
956
+ {},
957
+ {}
958
+ >(
959
+ createAssertQuery,
960
+ /** @__PURE__ */ Namespace.http.query(),
961
+ /** @__PURE__ */ Namespace.assert("http.createAssertQuery"),
962
+ );
963
+ export { createAssertQueryPure as createAssertQuery };
964
+
881
965
  /**
882
966
  * Creates a reusable {@link isQuery} function.
883
967
  *
@@ -887,7 +971,7 @@ export function createAssertQuery<T>(): (input: string | URLSearchParams) => T {
887
971
  *
888
972
  * @author Jeongho Nam - https://github.com/samchon
889
973
  */
890
- export function createIsQuery(): never;
974
+ function createIsQuery(): never;
891
975
 
892
976
  /**
893
977
  * Creates a reusable {@link isQuery} function.
@@ -897,19 +981,28 @@ export function createIsQuery(): never;
897
981
  *
898
982
  * @author Jeongho Nam - https://github.com/samchon
899
983
  */
900
- export function createIsQuery<T extends object>(): (
984
+ function createIsQuery<T extends object>(): (
901
985
  input: string | URLSearchParams,
902
986
  ) => T | null;
903
987
 
904
988
  /**
905
989
  * @internal
906
990
  */
907
- export function createIsQuery<T>(): (
908
- input: string | URLSearchParams,
909
- ) => T | null {
991
+ function createIsQuery<T>(): (input: string | URLSearchParams) => T | null {
910
992
  halt("createIsQuery");
911
993
  }
912
994
 
995
+ const createIsQueryPure = /** @__PURE__ */ Object.assign<
996
+ typeof createIsQuery,
997
+ {},
998
+ {}
999
+ >(
1000
+ createIsQuery,
1001
+ /** @__PURE__ */ Namespace.http.query(),
1002
+ /** @__PURE__ */ Namespace.is(),
1003
+ );
1004
+ export { createIsQueryPure as createIsQuery };
1005
+
913
1006
  /**
914
1007
  * Creates a reusable {@link validateQuery} function.
915
1008
  *
@@ -919,7 +1012,7 @@ export function createIsQuery<T>(): (
919
1012
  *
920
1013
  * @author Jeongho Nam - https://github.com/samchon
921
1014
  */
922
- export function createValidateQuery(): never;
1015
+ function createValidateQuery(): never;
923
1016
 
924
1017
  /**
925
1018
  * Creates a reusable {@link validateQuery} function.
@@ -929,19 +1022,30 @@ export function createValidateQuery(): never;
929
1022
  *
930
1023
  * @author Jeongho Nam - https://github.com/samchon
931
1024
  */
932
- export function createValidateQuery<T extends object>(): (
1025
+ function createValidateQuery<T extends object>(): (
933
1026
  input: string | URLSearchParams,
934
1027
  ) => IValidation<Resolved<T>>;
935
1028
 
936
1029
  /**
937
1030
  * @internal
938
1031
  */
939
- export function createValidateQuery<T>(): (
1032
+ function createValidateQuery<T>(): (
940
1033
  input: string | URLSearchParams,
941
1034
  ) => IValidation<Resolved<T>> {
942
1035
  halt("createValidateQuery");
943
1036
  }
944
1037
 
1038
+ const createValidateQueryPure = /** @__PURE__ */ Object.assign<
1039
+ typeof createValidateQuery,
1040
+ {},
1041
+ {}
1042
+ >(
1043
+ createValidateQuery,
1044
+ /** @__PURE__ */ Namespace.http.query(),
1045
+ /** @__PURE__ */ Namespace.validate(),
1046
+ );
1047
+ export { createValidateQueryPure as createValidateQuery };
1048
+
945
1049
  /**
946
1050
  * Creates a reusable {@link headers} function.
947
1051
  *
@@ -951,7 +1055,7 @@ export function createValidateQuery<T>(): (
951
1055
  *
952
1056
  * @author Jeongho Nam - https://github.com/samchon
953
1057
  */
954
- export function createHeaders(): never;
1058
+ function createHeaders(): never;
955
1059
 
956
1060
  /**
957
1061
  * Creates a reusable {@link headers} function.
@@ -961,51 +1065,72 @@ export function createHeaders(): never;
961
1065
  *
962
1066
  * @author Jeongho Nam - https://github.com/samchon
963
1067
  */
964
- export function createHeaders<T extends object>(): (
1068
+ function createHeaders<T extends object>(): (
965
1069
  input: Record<string, string | string[] | undefined>,
966
1070
  ) => T;
967
1071
 
968
1072
  /**
969
1073
  * @internal
970
1074
  */
971
- export function createHeaders<T>(): (
1075
+ function createHeaders<T>(): (
972
1076
  input: Record<string, string | string[] | undefined>,
973
1077
  ) => T {
974
1078
  halt("createHeaders");
975
1079
  }
976
1080
 
1081
+ const createHeadersPure = /** @__PURE__ */ Object.assign<
1082
+ typeof createHeaders,
1083
+ {}
1084
+ >(createHeaders, /** @__PURE__ */ Namespace.http.headers());
1085
+ export { createHeadersPure as createHeaders };
1086
+
977
1087
  /**
978
1088
  * Creates a reusable {@link assertHeaders} function.
979
1089
  *
980
1090
  * @danger You must configure the generic argument `T`
981
1091
  * @template T The type of the headers object
1092
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
982
1093
  * @throws compile error
983
1094
  *
984
1095
  * @author Jeongho Nam - https://github.com/samchon
985
1096
  */
986
- export function createAssertHeaders(): never;
1097
+ function createAssertHeaders(
1098
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
1099
+ ): never;
987
1100
 
988
1101
  /**
989
1102
  * Creates a reusable {@link assertHeaders} function.
990
1103
  *
991
1104
  * @template T The type of the headers object
1105
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
992
1106
  * @returns A reusable `assertHeaders` function
993
1107
  *
994
1108
  * @author Jeongho Nam - https://github.com/samchon
995
1109
  */
996
- export function createAssertHeaders<T extends object>(): (
997
- input: Record<string, string | string[] | undefined>,
998
- ) => T;
1110
+ function createAssertHeaders<T extends object>(
1111
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
1112
+ ): (input: Record<string, string | string[] | undefined>) => T;
999
1113
 
1000
1114
  /**
1001
1115
  * @internal
1002
1116
  */
1003
- export function createAssertHeaders<T>(): (
1117
+ function createAssertHeaders<T>(): (
1004
1118
  input: Record<string, string | string[] | undefined>,
1005
1119
  ) => T {
1006
1120
  halt("createAssertHeaders");
1007
1121
  }
1008
1122
 
1123
+ const createAssertHeadersPure = /** @__PURE__ */ Object.assign<
1124
+ typeof createAssertHeaders,
1125
+ {},
1126
+ {}
1127
+ >(
1128
+ createAssertHeaders,
1129
+ /** @__PURE__ */ Namespace.http.headers(),
1130
+ /** @__PURE__ */ Namespace.assert("http.createAssertHeaders"),
1131
+ );
1132
+ export { createAssertHeadersPure as createAssertHeaders };
1133
+
1009
1134
  /**
1010
1135
  * Creates a reusable {@link isHeaders} function.
1011
1136
  *
@@ -1015,7 +1140,7 @@ export function createAssertHeaders<T>(): (
1015
1140
  *
1016
1141
  * @author Jeongho Nam - https://github.com/samchon
1017
1142
  */
1018
- export function createIsHeaders(): never;
1143
+ function createIsHeaders(): never;
1019
1144
 
1020
1145
  /**
1021
1146
  * Creates a reusable {@link isHeaders} function.
@@ -1025,19 +1150,30 @@ export function createIsHeaders(): never;
1025
1150
  *
1026
1151
  * @author Jeongho Nam - https://github.com/samchon
1027
1152
  */
1028
- export function createIsHeaders<T extends object>(): (
1153
+ function createIsHeaders<T extends object>(): (
1029
1154
  input: Record<string, string | string[] | undefined>,
1030
1155
  ) => T | null;
1031
1156
 
1032
1157
  /**
1033
1158
  * @internal
1034
1159
  */
1035
- export function createIsHeaders<T>(): (
1160
+ function createIsHeaders<T>(): (
1036
1161
  input: Record<string, string | string[] | undefined>,
1037
1162
  ) => T | null {
1038
1163
  halt("createIsHeaders");
1039
1164
  }
1040
1165
 
1166
+ const createIsHeadersPure = /** @__PURE__ */ Object.assign<
1167
+ typeof createIsHeaders,
1168
+ {},
1169
+ {}
1170
+ >(
1171
+ createIsHeaders,
1172
+ /** @__PURE__ */ Namespace.http.headers(),
1173
+ /** @__PURE__ */ Namespace.is(),
1174
+ );
1175
+ export { createIsHeadersPure as createIsHeaders };
1176
+
1041
1177
  /**
1042
1178
  * Creates a reusable {@link validateHeaders} function.
1043
1179
  *
@@ -1047,7 +1183,7 @@ export function createIsHeaders<T>(): (
1047
1183
  *
1048
1184
  * @author Jeongho Nam - https://github.com/samchon
1049
1185
  */
1050
- export function createValidateHeaders(): never;
1186
+ function createValidateHeaders(): never;
1051
1187
 
1052
1188
  /**
1053
1189
  * Creates a reusable {@link validateHeaders} function.
@@ -1057,19 +1193,30 @@ export function createValidateHeaders(): never;
1057
1193
  *
1058
1194
  * @author Jeongho Nam - https://github.com/samchon
1059
1195
  */
1060
- export function createValidateHeaders<T extends object>(): (
1196
+ function createValidateHeaders<T extends object>(): (
1061
1197
  input: Record<string, string | string[] | undefined>,
1062
1198
  ) => IValidation<Resolved<T>>;
1063
1199
 
1064
1200
  /**
1065
1201
  * @internal
1066
1202
  */
1067
- export function createValidateHeaders<T>(): (
1203
+ function createValidateHeaders<T>(): (
1068
1204
  input: Record<string, string | string[] | undefined>,
1069
1205
  ) => IValidation<Resolved<T>> {
1070
1206
  halt("createValidateHeaders");
1071
1207
  }
1072
1208
 
1209
+ const createValidateHeadersPure = /** @__PURE__ */ Object.assign<
1210
+ typeof createValidateHeaders,
1211
+ {},
1212
+ {}
1213
+ >(
1214
+ createValidateHeaders,
1215
+ /** @__PURE__ */ Namespace.http.headers(),
1216
+ /** @__PURE__ */ Namespace.validate(),
1217
+ );
1218
+ export { createValidateHeadersPure as createValidateHeaders };
1219
+
1073
1220
  /**
1074
1221
  * Creates a reusable {@link parameter} function.
1075
1222
  *
@@ -1079,7 +1226,7 @@ export function createValidateHeaders<T>(): (
1079
1226
  *
1080
1227
  * @author Jeongho Nam - https://github.com/samchon
1081
1228
  */
1082
- export function createParameter(): never;
1229
+ function createParameter(): never;
1083
1230
 
1084
1231
  /**
1085
1232
  * Creates a reusable {@link parameter} function.
@@ -1089,19 +1236,26 @@ export function createParameter(): never;
1089
1236
  *
1090
1237
  * @author Jeongho Nam - https://github.com/samchon
1091
1238
  */
1092
- export function createParameter<T extends Atomic.Type | null>(): (
1093
- input: string,
1094
- ) => T;
1239
+ function createParameter<T extends Atomic.Type | null>(): (input: string) => T;
1095
1240
 
1096
1241
  /**
1097
1242
  * @internal
1098
1243
  */
1099
- export function createParameter<T extends Atomic.Type | null>(): (
1100
- input: string,
1101
- ) => T {
1244
+ function createParameter<T extends Atomic.Type | null>(): (input: string) => T {
1102
1245
  halt("createParameter");
1103
1246
  }
1104
1247
 
1248
+ const createParameterPure = /** @__PURE__ */ Object.assign<
1249
+ typeof createParameter,
1250
+ {},
1251
+ {}
1252
+ >(
1253
+ createParameter,
1254
+ /** @__PURE__ */ Namespace.http.parameter(),
1255
+ /** @__PURE__ */ Namespace.assert("http.createParameter"),
1256
+ );
1257
+ export { createParameterPure as createParameter };
1258
+
1105
1259
  /**
1106
1260
  * @internal
1107
1261
  */