moonflower 1.1.1 → 1.3.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 (400) hide show
  1. package/README.md +2 -2
  2. package/dist/errors/UserFacingErrors.cjs +1 -1
  3. package/dist/errors/UserFacingErrors.cjs.map +1 -1
  4. package/dist/errors/UserFacingErrors.d.ts +39 -0
  5. package/dist/errors/UserFacingErrors.d.ts.map +1 -1
  6. package/dist/errors/UserFacingErrors.mjs +83 -8
  7. package/dist/errors/UserFacingErrors.mjs.map +1 -1
  8. package/dist/hooks/usePathParams.cjs +1 -1
  9. package/dist/hooks/usePathParams.cjs.map +1 -1
  10. package/dist/hooks/usePathParams.d.ts.map +1 -1
  11. package/dist/hooks/usePathParams.mjs +20 -27
  12. package/dist/hooks/usePathParams.mjs.map +1 -1
  13. package/dist/hooks/useQueryParams.cjs +1 -1
  14. package/dist/hooks/useQueryParams.cjs.map +1 -1
  15. package/dist/hooks/useQueryParams.d.ts +4 -3
  16. package/dist/hooks/useQueryParams.d.ts.map +1 -1
  17. package/dist/hooks/useQueryParams.mjs +24 -33
  18. package/dist/hooks/useQueryParams.mjs.map +1 -1
  19. package/dist/hooks/useRequestBody.cjs +1 -1
  20. package/dist/hooks/useRequestBody.cjs.map +1 -1
  21. package/dist/hooks/useRequestBody.d.ts +4 -3
  22. package/dist/hooks/useRequestBody.d.ts.map +1 -1
  23. package/dist/hooks/useRequestBody.mjs +23 -34
  24. package/dist/hooks/useRequestBody.mjs.map +1 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.mjs +66 -51
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/node_modules/zod/index.cjs +2 -0
  29. package/dist/node_modules/zod/index.cjs.map +1 -0
  30. package/dist/node_modules/zod/index.mjs +6 -0
  31. package/dist/node_modules/zod/index.mjs.map +1 -0
  32. package/dist/node_modules/zod/v4/classic/checks.cjs +2 -0
  33. package/dist/node_modules/zod/v4/classic/checks.cjs.map +1 -0
  34. package/dist/node_modules/zod/v4/classic/checks.mjs +34 -0
  35. package/dist/node_modules/zod/v4/classic/checks.mjs.map +1 -0
  36. package/dist/node_modules/zod/v4/classic/coerce.cjs +2 -0
  37. package/dist/node_modules/zod/v4/classic/coerce.cjs.map +1 -0
  38. package/dist/node_modules/zod/v4/classic/coerce.mjs +26 -0
  39. package/dist/node_modules/zod/v4/classic/coerce.mjs.map +1 -0
  40. package/dist/node_modules/zod/v4/classic/compat.cjs +2 -0
  41. package/dist/node_modules/zod/v4/classic/compat.cjs.map +1 -0
  42. package/dist/node_modules/zod/v4/classic/compat.mjs +35 -0
  43. package/dist/node_modules/zod/v4/classic/compat.mjs.map +1 -0
  44. package/dist/node_modules/zod/v4/classic/errors.cjs +2 -0
  45. package/dist/node_modules/zod/v4/classic/errors.cjs.map +1 -0
  46. package/dist/node_modules/zod/v4/classic/errors.mjs +41 -0
  47. package/dist/node_modules/zod/v4/classic/errors.mjs.map +1 -0
  48. package/dist/node_modules/zod/v4/classic/external.cjs +2 -0
  49. package/dist/node_modules/zod/v4/classic/external.cjs.map +1 -0
  50. package/dist/node_modules/zod/v4/classic/external.mjs +260 -0
  51. package/dist/node_modules/zod/v4/classic/external.mjs.map +1 -0
  52. package/dist/node_modules/zod/v4/classic/from-json-schema.cjs +2 -0
  53. package/dist/node_modules/zod/v4/classic/from-json-schema.cjs.map +1 -0
  54. package/dist/node_modules/zod/v4/classic/from-json-schema.mjs +287 -0
  55. package/dist/node_modules/zod/v4/classic/from-json-schema.mjs.map +1 -0
  56. package/dist/node_modules/zod/v4/classic/iso.cjs +2 -0
  57. package/dist/node_modules/zod/v4/classic/iso.cjs.map +1 -0
  58. package/dist/node_modules/zod/v4/classic/iso.mjs +40 -0
  59. package/dist/node_modules/zod/v4/classic/iso.mjs.map +1 -0
  60. package/dist/node_modules/zod/v4/classic/parse.cjs +2 -0
  61. package/dist/node_modules/zod/v4/classic/parse.cjs.map +1 -0
  62. package/dist/node_modules/zod/v4/classic/parse.mjs +19 -0
  63. package/dist/node_modules/zod/v4/classic/parse.mjs.map +1 -0
  64. package/dist/node_modules/zod/v4/classic/schemas.cjs +2 -0
  65. package/dist/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
  66. package/dist/node_modules/zod/v4/classic/schemas.mjs +912 -0
  67. package/dist/node_modules/zod/v4/classic/schemas.mjs.map +1 -0
  68. package/dist/node_modules/zod/v4/core/api.cjs +2 -0
  69. package/dist/node_modules/zod/v4/core/api.cjs.map +1 -0
  70. package/dist/node_modules/zod/v4/core/api.mjs +1110 -0
  71. package/dist/node_modules/zod/v4/core/api.mjs.map +1 -0
  72. package/dist/node_modules/zod/v4/core/checks.cjs +2 -0
  73. package/dist/node_modules/zod/v4/core/checks.cjs.map +1 -0
  74. package/dist/node_modules/zod/v4/core/checks.mjs +421 -0
  75. package/dist/node_modules/zod/v4/core/checks.mjs.map +1 -0
  76. package/dist/node_modules/zod/v4/core/core.cjs +2 -0
  77. package/dist/node_modules/zod/v4/core/core.cjs.map +1 -0
  78. package/dist/node_modules/zod/v4/core/core.mjs +62 -0
  79. package/dist/node_modules/zod/v4/core/core.mjs.map +1 -0
  80. package/dist/node_modules/zod/v4/core/doc.cjs +4 -0
  81. package/dist/node_modules/zod/v4/core/doc.cjs.map +1 -0
  82. package/dist/node_modules/zod/v4/core/doc.mjs +27 -0
  83. package/dist/node_modules/zod/v4/core/doc.mjs.map +1 -0
  84. package/dist/node_modules/zod/v4/core/errors.cjs +3 -0
  85. package/dist/node_modules/zod/v4/core/errors.cjs.map +1 -0
  86. package/dist/node_modules/zod/v4/core/errors.mjs +89 -0
  87. package/dist/node_modules/zod/v4/core/errors.mjs.map +1 -0
  88. package/dist/node_modules/zod/v4/core/index.cjs +2 -0
  89. package/dist/node_modules/zod/v4/core/index.cjs.map +1 -0
  90. package/dist/node_modules/zod/v4/core/index.mjs +293 -0
  91. package/dist/node_modules/zod/v4/core/index.mjs.map +1 -0
  92. package/dist/node_modules/zod/v4/core/json-schema-generator.cjs +2 -0
  93. package/dist/node_modules/zod/v4/core/json-schema-generator.cjs.map +1 -0
  94. package/dist/node_modules/zod/v4/core/json-schema-generator.mjs +66 -0
  95. package/dist/node_modules/zod/v4/core/json-schema-generator.mjs.map +1 -0
  96. package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +2 -0
  97. package/dist/node_modules/zod/v4/core/json-schema-processors.cjs.map +1 -0
  98. package/dist/node_modules/zod/v4/core/json-schema-processors.mjs +346 -0
  99. package/dist/node_modules/zod/v4/core/json-schema-processors.mjs.map +1 -0
  100. package/dist/node_modules/zod/v4/core/json-schema.cjs +2 -0
  101. package/dist/node_modules/zod/v4/core/json-schema.cjs.map +1 -0
  102. package/dist/node_modules/zod/v4/core/json-schema.mjs +2 -0
  103. package/dist/node_modules/zod/v4/core/json-schema.mjs.map +1 -0
  104. package/dist/node_modules/zod/v4/core/parse.cjs +2 -0
  105. package/dist/node_modules/zod/v4/core/parse.cjs.map +1 -0
  106. package/dist/node_modules/zod/v4/core/parse.mjs +75 -0
  107. package/dist/node_modules/zod/v4/core/parse.mjs.map +1 -0
  108. package/dist/node_modules/zod/v4/core/regexes.cjs +2 -0
  109. package/dist/node_modules/zod/v4/core/regexes.cjs.map +1 -0
  110. package/dist/node_modules/zod/v4/core/regexes.mjs +94 -0
  111. package/dist/node_modules/zod/v4/core/regexes.mjs.map +1 -0
  112. package/dist/node_modules/zod/v4/core/registries.cjs +2 -0
  113. package/dist/node_modules/zod/v4/core/registries.cjs.map +1 -0
  114. package/dist/node_modules/zod/v4/core/registries.mjs +44 -0
  115. package/dist/node_modules/zod/v4/core/registries.mjs.map +1 -0
  116. package/dist/node_modules/zod/v4/core/schemas.cjs +36 -0
  117. package/dist/node_modules/zod/v4/core/schemas.cjs.map +1 -0
  118. package/dist/node_modules/zod/v4/core/schemas.mjs +1319 -0
  119. package/dist/node_modules/zod/v4/core/schemas.mjs.map +1 -0
  120. package/dist/node_modules/zod/v4/core/to-json-schema.cjs +4 -0
  121. package/dist/node_modules/zod/v4/core/to-json-schema.cjs.map +1 -0
  122. package/dist/node_modules/zod/v4/core/to-json-schema.mjs +244 -0
  123. package/dist/node_modules/zod/v4/core/to-json-schema.mjs.map +1 -0
  124. package/dist/node_modules/zod/v4/core/util.cjs +2 -0
  125. package/dist/node_modules/zod/v4/core/util.cjs.map +1 -0
  126. package/dist/node_modules/zod/v4/core/util.mjs +523 -0
  127. package/dist/node_modules/zod/v4/core/util.mjs.map +1 -0
  128. package/dist/node_modules/zod/v4/core/versions.cjs +2 -0
  129. package/dist/node_modules/zod/v4/core/versions.cjs.map +1 -0
  130. package/dist/node_modules/zod/v4/core/versions.mjs +9 -0
  131. package/dist/node_modules/zod/v4/core/versions.mjs.map +1 -0
  132. package/dist/node_modules/zod/v4/locales/ar.cjs +2 -0
  133. package/dist/node_modules/zod/v4/locales/ar.cjs.map +1 -0
  134. package/dist/node_modules/zod/v4/locales/ar.mjs +87 -0
  135. package/dist/node_modules/zod/v4/locales/ar.mjs.map +1 -0
  136. package/dist/node_modules/zod/v4/locales/az.cjs +2 -0
  137. package/dist/node_modules/zod/v4/locales/az.cjs.map +1 -0
  138. package/dist/node_modules/zod/v4/locales/az.mjs +87 -0
  139. package/dist/node_modules/zod/v4/locales/az.mjs.map +1 -0
  140. package/dist/node_modules/zod/v4/locales/be.cjs +2 -0
  141. package/dist/node_modules/zod/v4/locales/be.cjs.map +1 -0
  142. package/dist/node_modules/zod/v4/locales/be.mjs +129 -0
  143. package/dist/node_modules/zod/v4/locales/be.mjs.map +1 -0
  144. package/dist/node_modules/zod/v4/locales/bg.cjs +2 -0
  145. package/dist/node_modules/zod/v4/locales/bg.cjs.map +1 -0
  146. package/dist/node_modules/zod/v4/locales/bg.mjs +98 -0
  147. package/dist/node_modules/zod/v4/locales/bg.mjs.map +1 -0
  148. package/dist/node_modules/zod/v4/locales/ca.cjs +2 -0
  149. package/dist/node_modules/zod/v4/locales/ca.cjs.map +1 -0
  150. package/dist/node_modules/zod/v4/locales/ca.mjs +88 -0
  151. package/dist/node_modules/zod/v4/locales/ca.mjs.map +1 -0
  152. package/dist/node_modules/zod/v4/locales/cs.cjs +2 -0
  153. package/dist/node_modules/zod/v4/locales/cs.cjs.map +1 -0
  154. package/dist/node_modules/zod/v4/locales/cs.mjs +91 -0
  155. package/dist/node_modules/zod/v4/locales/cs.mjs.map +1 -0
  156. package/dist/node_modules/zod/v4/locales/da.cjs +2 -0
  157. package/dist/node_modules/zod/v4/locales/da.cjs.map +1 -0
  158. package/dist/node_modules/zod/v4/locales/da.mjs +94 -0
  159. package/dist/node_modules/zod/v4/locales/da.mjs.map +1 -0
  160. package/dist/node_modules/zod/v4/locales/de.cjs +2 -0
  161. package/dist/node_modules/zod/v4/locales/de.cjs.map +1 -0
  162. package/dist/node_modules/zod/v4/locales/de.mjs +89 -0
  163. package/dist/node_modules/zod/v4/locales/de.mjs.map +1 -0
  164. package/dist/node_modules/zod/v4/locales/en.cjs +2 -0
  165. package/dist/node_modules/zod/v4/locales/en.cjs.map +1 -0
  166. package/dist/node_modules/zod/v4/locales/en.mjs +91 -0
  167. package/dist/node_modules/zod/v4/locales/en.mjs.map +1 -0
  168. package/dist/node_modules/zod/v4/locales/eo.cjs +2 -0
  169. package/dist/node_modules/zod/v4/locales/eo.cjs.map +1 -0
  170. package/dist/node_modules/zod/v4/locales/eo.mjs +90 -0
  171. package/dist/node_modules/zod/v4/locales/eo.mjs.map +1 -0
  172. package/dist/node_modules/zod/v4/locales/es.cjs +2 -0
  173. package/dist/node_modules/zod/v4/locales/es.cjs.map +1 -0
  174. package/dist/node_modules/zod/v4/locales/es.mjs +111 -0
  175. package/dist/node_modules/zod/v4/locales/es.mjs.map +1 -0
  176. package/dist/node_modules/zod/v4/locales/fa.cjs +2 -0
  177. package/dist/node_modules/zod/v4/locales/fa.cjs.map +1 -0
  178. package/dist/node_modules/zod/v4/locales/fa.mjs +89 -0
  179. package/dist/node_modules/zod/v4/locales/fa.mjs.map +1 -0
  180. package/dist/node_modules/zod/v4/locales/fi.cjs +2 -0
  181. package/dist/node_modules/zod/v4/locales/fi.cjs.map +1 -0
  182. package/dist/node_modules/zod/v4/locales/fi.mjs +91 -0
  183. package/dist/node_modules/zod/v4/locales/fi.mjs.map +1 -0
  184. package/dist/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  185. package/dist/node_modules/zod/v4/locales/fr-CA.cjs.map +1 -0
  186. package/dist/node_modules/zod/v4/locales/fr-CA.mjs +87 -0
  187. package/dist/node_modules/zod/v4/locales/fr-CA.mjs.map +1 -0
  188. package/dist/node_modules/zod/v4/locales/fr.cjs +2 -0
  189. package/dist/node_modules/zod/v4/locales/fr.cjs.map +1 -0
  190. package/dist/node_modules/zod/v4/locales/fr.mjs +89 -0
  191. package/dist/node_modules/zod/v4/locales/fr.mjs.map +1 -0
  192. package/dist/node_modules/zod/v4/locales/he.cjs +2 -0
  193. package/dist/node_modules/zod/v4/locales/he.cjs.map +1 -0
  194. package/dist/node_modules/zod/v4/locales/he.mjs +152 -0
  195. package/dist/node_modules/zod/v4/locales/he.mjs.map +1 -0
  196. package/dist/node_modules/zod/v4/locales/hu.cjs +2 -0
  197. package/dist/node_modules/zod/v4/locales/hu.cjs.map +1 -0
  198. package/dist/node_modules/zod/v4/locales/hu.mjs +89 -0
  199. package/dist/node_modules/zod/v4/locales/hu.mjs.map +1 -0
  200. package/dist/node_modules/zod/v4/locales/hy.cjs +2 -0
  201. package/dist/node_modules/zod/v4/locales/hy.cjs.map +1 -0
  202. package/dist/node_modules/zod/v4/locales/hy.mjs +130 -0
  203. package/dist/node_modules/zod/v4/locales/hy.mjs.map +1 -0
  204. package/dist/node_modules/zod/v4/locales/id.cjs +2 -0
  205. package/dist/node_modules/zod/v4/locales/id.cjs.map +1 -0
  206. package/dist/node_modules/zod/v4/locales/id.mjs +87 -0
  207. package/dist/node_modules/zod/v4/locales/id.mjs.map +1 -0
  208. package/dist/node_modules/zod/v4/locales/index.cjs +2 -0
  209. package/dist/node_modules/zod/v4/locales/index.cjs.map +1 -0
  210. package/dist/node_modules/zod/v4/locales/index.mjs +101 -0
  211. package/dist/node_modules/zod/v4/locales/index.mjs.map +1 -0
  212. package/dist/node_modules/zod/v4/locales/is.cjs +2 -0
  213. package/dist/node_modules/zod/v4/locales/is.cjs.map +1 -0
  214. package/dist/node_modules/zod/v4/locales/is.mjs +89 -0
  215. package/dist/node_modules/zod/v4/locales/is.mjs.map +1 -0
  216. package/dist/node_modules/zod/v4/locales/it.cjs +2 -0
  217. package/dist/node_modules/zod/v4/locales/it.cjs.map +1 -0
  218. package/dist/node_modules/zod/v4/locales/it.mjs +89 -0
  219. package/dist/node_modules/zod/v4/locales/it.mjs.map +1 -0
  220. package/dist/node_modules/zod/v4/locales/ja.cjs +2 -0
  221. package/dist/node_modules/zod/v4/locales/ja.cjs.map +1 -0
  222. package/dist/node_modules/zod/v4/locales/ja.mjs +89 -0
  223. package/dist/node_modules/zod/v4/locales/ja.mjs.map +1 -0
  224. package/dist/node_modules/zod/v4/locales/ka.cjs +2 -0
  225. package/dist/node_modules/zod/v4/locales/ka.cjs.map +1 -0
  226. package/dist/node_modules/zod/v4/locales/ka.mjs +92 -0
  227. package/dist/node_modules/zod/v4/locales/ka.mjs.map +1 -0
  228. package/dist/node_modules/zod/v4/locales/kh.cjs +2 -0
  229. package/dist/node_modules/zod/v4/locales/kh.cjs.map +1 -0
  230. package/dist/node_modules/zod/v4/locales/kh.mjs +8 -0
  231. package/dist/node_modules/zod/v4/locales/kh.mjs.map +1 -0
  232. package/dist/node_modules/zod/v4/locales/km.cjs +2 -0
  233. package/dist/node_modules/zod/v4/locales/km.cjs.map +1 -0
  234. package/dist/node_modules/zod/v4/locales/km.mjs +90 -0
  235. package/dist/node_modules/zod/v4/locales/km.mjs.map +1 -0
  236. package/dist/node_modules/zod/v4/locales/ko.cjs +2 -0
  237. package/dist/node_modules/zod/v4/locales/ko.cjs.map +1 -0
  238. package/dist/node_modules/zod/v4/locales/ko.mjs +87 -0
  239. package/dist/node_modules/zod/v4/locales/ko.mjs.map +1 -0
  240. package/dist/node_modules/zod/v4/locales/lt.cjs +2 -0
  241. package/dist/node_modules/zod/v4/locales/lt.cjs.map +1 -0
  242. package/dist/node_modules/zod/v4/locales/lt.mjs +178 -0
  243. package/dist/node_modules/zod/v4/locales/lt.mjs.map +1 -0
  244. package/dist/node_modules/zod/v4/locales/mk.cjs +2 -0
  245. package/dist/node_modules/zod/v4/locales/mk.cjs.map +1 -0
  246. package/dist/node_modules/zod/v4/locales/mk.mjs +89 -0
  247. package/dist/node_modules/zod/v4/locales/mk.mjs.map +1 -0
  248. package/dist/node_modules/zod/v4/locales/ms.cjs +2 -0
  249. package/dist/node_modules/zod/v4/locales/ms.cjs.map +1 -0
  250. package/dist/node_modules/zod/v4/locales/ms.mjs +88 -0
  251. package/dist/node_modules/zod/v4/locales/ms.mjs.map +1 -0
  252. package/dist/node_modules/zod/v4/locales/nl.cjs +2 -0
  253. package/dist/node_modules/zod/v4/locales/nl.cjs.map +1 -0
  254. package/dist/node_modules/zod/v4/locales/nl.mjs +88 -0
  255. package/dist/node_modules/zod/v4/locales/nl.mjs.map +1 -0
  256. package/dist/node_modules/zod/v4/locales/no.cjs +2 -0
  257. package/dist/node_modules/zod/v4/locales/no.cjs.map +1 -0
  258. package/dist/node_modules/zod/v4/locales/no.mjs +89 -0
  259. package/dist/node_modules/zod/v4/locales/no.mjs.map +1 -0
  260. package/dist/node_modules/zod/v4/locales/ota.cjs +2 -0
  261. package/dist/node_modules/zod/v4/locales/ota.cjs.map +1 -0
  262. package/dist/node_modules/zod/v4/locales/ota.mjs +90 -0
  263. package/dist/node_modules/zod/v4/locales/ota.mjs.map +1 -0
  264. package/dist/node_modules/zod/v4/locales/pl.cjs +2 -0
  265. package/dist/node_modules/zod/v4/locales/pl.cjs.map +1 -0
  266. package/dist/node_modules/zod/v4/locales/pl.mjs +89 -0
  267. package/dist/node_modules/zod/v4/locales/pl.mjs.map +1 -0
  268. package/dist/node_modules/zod/v4/locales/ps.cjs +2 -0
  269. package/dist/node_modules/zod/v4/locales/ps.cjs.map +1 -0
  270. package/dist/node_modules/zod/v4/locales/ps.mjs +89 -0
  271. package/dist/node_modules/zod/v4/locales/ps.mjs.map +1 -0
  272. package/dist/node_modules/zod/v4/locales/pt.cjs +2 -0
  273. package/dist/node_modules/zod/v4/locales/pt.cjs.map +1 -0
  274. package/dist/node_modules/zod/v4/locales/pt.mjs +89 -0
  275. package/dist/node_modules/zod/v4/locales/pt.mjs.map +1 -0
  276. package/dist/node_modules/zod/v4/locales/ru.cjs +2 -0
  277. package/dist/node_modules/zod/v4/locales/ru.cjs.map +1 -0
  278. package/dist/node_modules/zod/v4/locales/ru.mjs +129 -0
  279. package/dist/node_modules/zod/v4/locales/ru.mjs.map +1 -0
  280. package/dist/node_modules/zod/v4/locales/sl.cjs +2 -0
  281. package/dist/node_modules/zod/v4/locales/sl.cjs.map +1 -0
  282. package/dist/node_modules/zod/v4/locales/sl.mjs +89 -0
  283. package/dist/node_modules/zod/v4/locales/sl.mjs.map +1 -0
  284. package/dist/node_modules/zod/v4/locales/sv.cjs +2 -0
  285. package/dist/node_modules/zod/v4/locales/sv.cjs.map +1 -0
  286. package/dist/node_modules/zod/v4/locales/sv.mjs +89 -0
  287. package/dist/node_modules/zod/v4/locales/sv.mjs.map +1 -0
  288. package/dist/node_modules/zod/v4/locales/ta.cjs +2 -0
  289. package/dist/node_modules/zod/v4/locales/ta.cjs.map +1 -0
  290. package/dist/node_modules/zod/v4/locales/ta.mjs +90 -0
  291. package/dist/node_modules/zod/v4/locales/ta.mjs.map +1 -0
  292. package/dist/node_modules/zod/v4/locales/th.cjs +2 -0
  293. package/dist/node_modules/zod/v4/locales/th.cjs.map +1 -0
  294. package/dist/node_modules/zod/v4/locales/th.mjs +90 -0
  295. package/dist/node_modules/zod/v4/locales/th.mjs.map +1 -0
  296. package/dist/node_modules/zod/v4/locales/tr.cjs +2 -0
  297. package/dist/node_modules/zod/v4/locales/tr.cjs.map +1 -0
  298. package/dist/node_modules/zod/v4/locales/tr.mjs +87 -0
  299. package/dist/node_modules/zod/v4/locales/tr.mjs.map +1 -0
  300. package/dist/node_modules/zod/v4/locales/ua.cjs +2 -0
  301. package/dist/node_modules/zod/v4/locales/ua.cjs.map +1 -0
  302. package/dist/node_modules/zod/v4/locales/ua.mjs +8 -0
  303. package/dist/node_modules/zod/v4/locales/ua.mjs.map +1 -0
  304. package/dist/node_modules/zod/v4/locales/uk.cjs +2 -0
  305. package/dist/node_modules/zod/v4/locales/uk.cjs.map +1 -0
  306. package/dist/node_modules/zod/v4/locales/uk.mjs +89 -0
  307. package/dist/node_modules/zod/v4/locales/uk.mjs.map +1 -0
  308. package/dist/node_modules/zod/v4/locales/ur.cjs +2 -0
  309. package/dist/node_modules/zod/v4/locales/ur.cjs.map +1 -0
  310. package/dist/node_modules/zod/v4/locales/ur.mjs +90 -0
  311. package/dist/node_modules/zod/v4/locales/ur.mjs.map +1 -0
  312. package/dist/node_modules/zod/v4/locales/uz.cjs +2 -0
  313. package/dist/node_modules/zod/v4/locales/uz.cjs.map +1 -0
  314. package/dist/node_modules/zod/v4/locales/uz.mjs +90 -0
  315. package/dist/node_modules/zod/v4/locales/uz.mjs.map +1 -0
  316. package/dist/node_modules/zod/v4/locales/vi.cjs +2 -0
  317. package/dist/node_modules/zod/v4/locales/vi.cjs.map +1 -0
  318. package/dist/node_modules/zod/v4/locales/vi.mjs +89 -0
  319. package/dist/node_modules/zod/v4/locales/vi.mjs.map +1 -0
  320. package/dist/node_modules/zod/v4/locales/yo.cjs +2 -0
  321. package/dist/node_modules/zod/v4/locales/yo.cjs.map +1 -0
  322. package/dist/node_modules/zod/v4/locales/yo.mjs +89 -0
  323. package/dist/node_modules/zod/v4/locales/yo.mjs.map +1 -0
  324. package/dist/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  325. package/dist/node_modules/zod/v4/locales/zh-CN.cjs.map +1 -0
  326. package/dist/node_modules/zod/v4/locales/zh-CN.mjs +90 -0
  327. package/dist/node_modules/zod/v4/locales/zh-CN.mjs.map +1 -0
  328. package/dist/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  329. package/dist/node_modules/zod/v4/locales/zh-TW.cjs.map +1 -0
  330. package/dist/node_modules/zod/v4/locales/zh-TW.mjs +87 -0
  331. package/dist/node_modules/zod/v4/locales/zh-TW.mjs.map +1 -0
  332. package/dist/openapi/analyzerModule/analyzerModule.cjs +1 -1
  333. package/dist/openapi/analyzerModule/analyzerModule.cjs.map +1 -1
  334. package/dist/openapi/analyzerModule/analyzerModule.d.ts.map +1 -1
  335. package/dist/openapi/analyzerModule/analyzerModule.mjs +42 -42
  336. package/dist/openapi/analyzerModule/analyzerModule.mjs.map +1 -1
  337. package/dist/openapi/analyzerModule/nodeParsers.cjs +1 -1
  338. package/dist/openapi/analyzerModule/nodeParsers.cjs.map +1 -1
  339. package/dist/openapi/analyzerModule/nodeParsers.d.ts +1 -0
  340. package/dist/openapi/analyzerModule/nodeParsers.d.ts.map +1 -1
  341. package/dist/openapi/analyzerModule/nodeParsers.mjs +261 -206
  342. package/dist/openapi/analyzerModule/nodeParsers.mjs.map +1 -1
  343. package/dist/openapi/analyzerModule/parseEndpoint.cjs +1 -1
  344. package/dist/openapi/analyzerModule/parseEndpoint.cjs.map +1 -1
  345. package/dist/openapi/analyzerModule/parseEndpoint.d.ts.map +1 -1
  346. package/dist/openapi/analyzerModule/parseEndpoint.mjs +62 -62
  347. package/dist/openapi/analyzerModule/parseEndpoint.mjs.map +1 -1
  348. package/dist/openapi/analyzerModule/test/TestCase.d.ts +9 -0
  349. package/dist/openapi/analyzerModule/test/TestCase.d.ts.map +1 -0
  350. package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.d.ts +2 -0
  351. package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.d.ts.map +1 -0
  352. package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.data.d.ts +2 -0
  353. package/dist/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.data.d.ts.map +1 -0
  354. package/dist/utils/getValueAsNullableString.cjs +2 -0
  355. package/dist/utils/getValueAsNullableString.cjs.map +1 -0
  356. package/dist/utils/getValueAsNullableString.d.ts +2 -0
  357. package/dist/utils/getValueAsNullableString.d.ts.map +1 -0
  358. package/dist/utils/getValueAsNullableString.mjs +7 -0
  359. package/dist/utils/getValueAsNullableString.mjs.map +1 -0
  360. package/dist/utils/validationMessages.cjs +1 -1
  361. package/dist/utils/validationMessages.cjs.map +1 -1
  362. package/dist/utils/validationMessages.d.ts +1 -1
  363. package/dist/utils/validationMessages.d.ts.map +1 -1
  364. package/dist/utils/validationMessages.mjs +8 -8
  365. package/dist/utils/validationMessages.mjs.map +1 -1
  366. package/dist/validators/types.d.ts +4 -0
  367. package/dist/validators/types.d.ts.map +1 -1
  368. package/dist/validators/validateMissingParams.cjs +2 -0
  369. package/dist/validators/validateMissingParams.cjs.map +1 -0
  370. package/dist/validators/validateMissingParams.d.ts +7 -0
  371. package/dist/validators/validateMissingParams.d.ts.map +1 -0
  372. package/dist/validators/validateMissingParams.mjs +17 -0
  373. package/dist/validators/validateMissingParams.mjs.map +1 -0
  374. package/dist/validators/validateParam.cjs +2 -0
  375. package/dist/validators/validateParam.cjs.map +1 -0
  376. package/dist/validators/validateParam.d.ts +8 -0
  377. package/dist/validators/validateParam.d.ts.map +1 -0
  378. package/dist/validators/validateParam.mjs +41 -0
  379. package/dist/validators/validateParam.mjs.map +1 -0
  380. package/package.json +9 -2
  381. package/src/errors/UserFacingErrors.ts +75 -0
  382. package/src/hooks/usePathParams.spec.ts +27 -0
  383. package/src/hooks/usePathParams.ts +5 -13
  384. package/src/hooks/useQueryParams.spec.ts +99 -0
  385. package/src/hooks/useQueryParams.ts +16 -25
  386. package/src/hooks/useRequestBody.spec.ts +99 -0
  387. package/src/hooks/useRequestBody.ts +16 -35
  388. package/src/openapi/analyzerModule/analyzerModule.ts +2 -3
  389. package/src/openapi/analyzerModule/nodeParsers.ts +113 -8
  390. package/src/openapi/analyzerModule/parseEndpoint.ts +2 -2
  391. package/src/openapi/analyzerModule/test/TestCase.ts +8 -0
  392. package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.data.ts +9 -0
  393. package/src/openapi/analyzerModule/test/openApiAnalyzer.spec.ts +21 -0
  394. package/src/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.data.ts +87 -0
  395. package/src/openapi/analyzerModule/test/openApiAnalyzer.zod.spec.ts +178 -0
  396. package/src/utils/getValueAsNullableString.ts +8 -0
  397. package/src/utils/validationMessages.ts +4 -0
  398. package/src/validators/types.ts +5 -0
  399. package/src/validators/validateMissingParams.ts +27 -0
  400. package/src/validators/validateParam.ts +69 -0
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Moonflower
2
2
 
3
- > This section is work-in-progress.
4
-
5
3
  Moonflower is a TypeScript-first [Koa Router](https://www.npmjs.com/package/koa-router) extension that allows for automatic [OpenAPI](https://www.openapis.org/what-is-openapi) spec generation directly from backend code, without any extra work. Combined with an ORM like [Prisma.js](https://www.npmjs.com/package/prisma) and an API client generator on frontend, it allows for creation of end-to-end type safe REST API.
6
4
 
7
5
  Moonflower provides type safe 'hooks' that handle runtime validation and return clean types with minimal boilerplate.
8
6
 
7
+ > This readme is work-in-progress.
8
+
9
9
  ## Feature Overview
10
10
 
11
11
  - React hooks inspired Node.js backend REST API
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./BaseHttpError.cjs"),e=require("./StatusCodes.cjs");class o extends t.BaseHttpError{constructor(r){super(e.StatusCodes.BAD_REQUEST,r)}}class a extends t.BaseHttpError{constructor(r){super(e.StatusCodes.BAD_REQUEST,r)}}class u extends t.BaseHttpError{constructor(r){super(e.StatusCodes.UNAUTHORIZED,r)}}exports.BadRequestError=a;exports.UnauthorizedError=u;exports.ValidationError=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./BaseHttpError.cjs"),s=require("./StatusCodes.cjs"),e=t.BaseHttpError;class a extends t.BaseHttpError{constructor(r){super(s.StatusCodes.BAD_REQUEST,r)}}class E extends t.BaseHttpError{constructor(r){super(s.StatusCodes.BAD_REQUEST,r)}}class n extends t.BaseHttpError{constructor(r){super(s.StatusCodes.UNAUTHORIZED,r)}}class u extends t.BaseHttpError{constructor(r){super(s.StatusCodes.NOT_FOUND,r)}}class c extends t.BaseHttpError{constructor(r){super(s.StatusCodes.INTERNAL_SERVER_ERROR,r)}}class d extends t.BaseHttpError{constructor(r){super(s.StatusCodes.FORBIDDEN,r)}}class l extends t.BaseHttpError{constructor(r){super(s.StatusCodes.METHOD_NOT_ALLOWED,r)}}class p extends t.BaseHttpError{constructor(r){super(s.StatusCodes.CONFLICT,r)}}class S extends t.BaseHttpError{constructor(r){super(s.StatusCodes.GONE,r)}}class B extends t.BaseHttpError{constructor(r){super(s.StatusCodes.UNPROCESSABLE_ENTITY,r)}}class C extends t.BaseHttpError{constructor(r){super(s.StatusCodes.TOO_MANY_REQUESTS,r)}}class i extends t.BaseHttpError{constructor(r){super(s.StatusCodes.NOT_IMPLEMENTED,r)}}class T extends t.BaseHttpError{constructor(r){super(s.StatusCodes.BAD_GATEWAY,r)}}class N extends t.BaseHttpError{constructor(r){super(s.StatusCodes.SERVICE_UNAVAILABLE,r)}}class H extends t.BaseHttpError{constructor(r){super(s.StatusCodes.GATEWAY_TIMEOUT,r)}}exports.HttpStatusCodes=s.StatusCodes;exports.BadGatewayError=T;exports.BadRequestError=E;exports.ConflictError=p;exports.ForbiddenError=d;exports.GatewayTimeoutError=H;exports.GoneError=S;exports.InternalServerError=c;exports.MethodNotAllowedError=l;exports.MoonflowerError=e;exports.NotFoundError=u;exports.NotImplementedError=i;exports.ServiceUnavailableError=N;exports.TooManyRequestsError=C;exports.UnauthorizedError=n;exports.UnprocessableEntityError=B;exports.ValidationError=a;
2
2
  //# sourceMappingURL=UserFacingErrors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserFacingErrors.cjs","sources":["../../src/errors/UserFacingErrors.ts"],"sourcesContent":["import { BaseHttpError } from './BaseHttpError'\nimport { StatusCodes } from './StatusCodes'\n\nexport class ValidationError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class BadRequestError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class UnauthorizedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.UNAUTHORIZED, message)\n\t}\n}\n\n// To be used later\n// export const errorNameToStatusCode = (name: string): number => {\n// \tswitch (name) {\n// \t\tcase 'ValidationError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'BadRequestError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'UnauthorizedError':\n// \t\t\treturn StatusCodes.UNAUTHORIZED\n// \t}\n// \treturn StatusCodes.INTERNAL_SERVER_ERROR\n// }\n\n// import { getReasonPhrase } from 'http-status-codes'\n// export const errorNameToReason = (name: string): string => {\n// \treturn getReasonPhrase(errorNameToStatusCode(name) || 500)\n// }\n"],"names":["ValidationError","BaseHttpError","message","StatusCodes","BadRequestError","UnauthorizedError"],"mappings":"sJAGO,MAAMA,UAAwBC,EAAAA,aAAc,CAClD,YAAYC,EAAiB,CACtB,MAAAC,EAAAA,YAAY,YAAaD,CAAO,CAAA,CAExC,CAEO,MAAME,UAAwBH,EAAAA,aAAc,CAClD,YAAYC,EAAiB,CACtB,MAAAC,EAAAA,YAAY,YAAaD,CAAO,CAAA,CAExC,CAEO,MAAMG,UAA0BJ,EAAAA,aAAc,CACpD,YAAYC,EAAiB,CACtB,MAAAC,EAAAA,YAAY,aAAcD,CAAO,CAAA,CAEzC"}
1
+ {"version":3,"file":"UserFacingErrors.cjs","sources":["../../src/errors/UserFacingErrors.ts"],"sourcesContent":["import { BaseHttpError } from './BaseHttpError'\nimport { StatusCodes } from './StatusCodes'\n\nexport const MoonflowerError = BaseHttpError\nexport { StatusCodes as HttpStatusCodes }\n\nexport class ValidationError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class BadRequestError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class UnauthorizedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.UNAUTHORIZED, message)\n\t}\n}\n\nexport class NotFoundError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.NOT_FOUND, message)\n\t}\n}\n\nexport class InternalServerError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.INTERNAL_SERVER_ERROR, message)\n\t}\n}\n\nexport class ForbiddenError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.FORBIDDEN, message)\n\t}\n}\n\nexport class MethodNotAllowedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.METHOD_NOT_ALLOWED, message)\n\t}\n}\n\nexport class ConflictError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.CONFLICT, message)\n\t}\n}\n\nexport class GoneError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.GONE, message)\n\t}\n}\n\nexport class UnprocessableEntityError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.UNPROCESSABLE_ENTITY, message)\n\t}\n}\n\nexport class TooManyRequestsError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.TOO_MANY_REQUESTS, message)\n\t}\n}\n\nexport class NotImplementedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.NOT_IMPLEMENTED, message)\n\t}\n}\n\nexport class BadGatewayError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_GATEWAY, message)\n\t}\n}\n\nexport class ServiceUnavailableError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.SERVICE_UNAVAILABLE, message)\n\t}\n}\n\nexport class GatewayTimeoutError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.GATEWAY_TIMEOUT, message)\n\t}\n}\n\n// To be used later\n// export const errorNameToStatusCode = (name: string): number => {\n// \tswitch (name) {\n// \t\tcase 'ValidationError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'BadRequestError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'UnauthorizedError':\n// \t\t\treturn StatusCodes.UNAUTHORIZED\n// \t}\n// \treturn StatusCodes.INTERNAL_SERVER_ERROR\n// }\n\n// import { getReasonPhrase } from 'http-status-codes'\n// export const errorNameToReason = (name: string): string => {\n// \treturn getReasonPhrase(errorNameToStatusCode(name) || 500)\n// }\n"],"names":["MoonflowerError","BaseHttpError","ValidationError","message","StatusCodes","BadRequestError","UnauthorizedError","NotFoundError","InternalServerError","ForbiddenError","MethodNotAllowedError","ConflictError","GoneError","UnprocessableEntityError","TooManyRequestsError","NotImplementedError","BadGatewayError","ServiceUnavailableError","GatewayTimeoutError"],"mappings":"sJAGaA,EAAkBC,EAAAA,cAGxB,MAAMC,UAAwBD,EAAAA,aAAc,CAClD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,YAAaD,CAAO,CAAA,CAExC,CAEO,MAAME,UAAwBJ,EAAAA,aAAc,CAClD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,YAAaD,CAAO,CAAA,CAExC,CAEO,MAAMG,UAA0BL,EAAAA,aAAc,CACpD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,aAAcD,CAAO,CAAA,CAEzC,CAEO,MAAMI,UAAsBN,EAAAA,aAAc,CAChD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,UAAWD,CAAO,CAAA,CAEtC,CAEO,MAAMK,UAA4BP,EAAAA,aAAc,CACtD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,sBAAuBD,CAAO,CAAA,CAElD,CAEO,MAAMM,UAAuBR,EAAAA,aAAc,CACjD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,UAAWD,CAAO,CAAA,CAEtC,CAEO,MAAMO,UAA8BT,EAAAA,aAAc,CACxD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,mBAAoBD,CAAO,CAAA,CAE/C,CAEO,MAAMQ,UAAsBV,EAAAA,aAAc,CAChD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,SAAUD,CAAO,CAAA,CAErC,CAEO,MAAMS,UAAkBX,EAAAA,aAAc,CAC5C,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,KAAMD,CAAO,CAAA,CAEjC,CAEO,MAAMU,UAAiCZ,EAAAA,aAAc,CAC3D,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,qBAAsBD,CAAO,CAAA,CAEjD,CAEO,MAAMW,UAA6Bb,EAAAA,aAAc,CACvD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,kBAAmBD,CAAO,CAAA,CAE9C,CAEO,MAAMY,UAA4Bd,EAAAA,aAAc,CACtD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,gBAAiBD,CAAO,CAAA,CAE5C,CAEO,MAAMa,UAAwBf,EAAAA,aAAc,CAClD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,YAAaD,CAAO,CAAA,CAExC,CAEO,MAAMc,UAAgChB,EAAAA,aAAc,CAC1D,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,oBAAqBD,CAAO,CAAA,CAEhD,CAEO,MAAMe,UAA4BjB,EAAAA,aAAc,CACtD,YAAYE,EAAiB,CACtB,MAAAC,EAAAA,YAAY,gBAAiBD,CAAO,CAAA,CAE5C"}
@@ -1,5 +1,8 @@
1
1
  import { BaseHttpError } from './BaseHttpError';
2
+ import { StatusCodes } from './StatusCodes';
2
3
 
4
+ export declare const MoonflowerError: typeof BaseHttpError;
5
+ export { StatusCodes as HttpStatusCodes };
3
6
  export declare class ValidationError extends BaseHttpError {
4
7
  constructor(message: string);
5
8
  }
@@ -9,4 +12,40 @@ export declare class BadRequestError extends BaseHttpError {
9
12
  export declare class UnauthorizedError extends BaseHttpError {
10
13
  constructor(message: string);
11
14
  }
15
+ export declare class NotFoundError extends BaseHttpError {
16
+ constructor(message: string);
17
+ }
18
+ export declare class InternalServerError extends BaseHttpError {
19
+ constructor(message: string);
20
+ }
21
+ export declare class ForbiddenError extends BaseHttpError {
22
+ constructor(message: string);
23
+ }
24
+ export declare class MethodNotAllowedError extends BaseHttpError {
25
+ constructor(message: string);
26
+ }
27
+ export declare class ConflictError extends BaseHttpError {
28
+ constructor(message: string);
29
+ }
30
+ export declare class GoneError extends BaseHttpError {
31
+ constructor(message: string);
32
+ }
33
+ export declare class UnprocessableEntityError extends BaseHttpError {
34
+ constructor(message: string);
35
+ }
36
+ export declare class TooManyRequestsError extends BaseHttpError {
37
+ constructor(message: string);
38
+ }
39
+ export declare class NotImplementedError extends BaseHttpError {
40
+ constructor(message: string);
41
+ }
42
+ export declare class BadGatewayError extends BaseHttpError {
43
+ constructor(message: string);
44
+ }
45
+ export declare class ServiceUnavailableError extends BaseHttpError {
46
+ constructor(message: string);
47
+ }
48
+ export declare class GatewayTimeoutError extends BaseHttpError {
49
+ constructor(message: string);
50
+ }
12
51
  //# sourceMappingURL=UserFacingErrors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserFacingErrors.d.ts","sourceRoot":"","sources":["../../src/errors/UserFacingErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM;CAG3B"}
1
+ {"version":3,"file":"UserFacingErrors.d.ts","sourceRoot":"","sources":["../../src/errors/UserFacingErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,eAAO,MAAM,eAAe,sBAAgB,CAAA;AAC5C,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACvC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,aAAc,SAAQ,aAAa;gBACnC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACzC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,cAAe,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;gBAC3C,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,aAAc,SAAQ,aAAa;gBACnC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,SAAU,SAAQ,aAAa;gBAC/B,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,wBAAyB,SAAQ,aAAa;gBAC9C,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,oBAAqB,SAAQ,aAAa;gBAC1C,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACzC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,eAAgB,SAAQ,aAAa;gBACrC,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,uBAAwB,SAAQ,aAAa;gBAC7C,OAAO,EAAE,MAAM;CAG3B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACzC,OAAO,EAAE,MAAM;CAG3B"}
@@ -1,23 +1,98 @@
1
1
  import { BaseHttpError as s } from "./BaseHttpError.mjs";
2
- import { StatusCodes as t } from "./StatusCodes.mjs";
3
- class c extends s {
2
+ import { StatusCodes as e } from "./StatusCodes.mjs";
3
+ const n = s;
4
+ class E extends s {
4
5
  constructor(r) {
5
- super(t.BAD_REQUEST, r);
6
+ super(e.BAD_REQUEST, r);
6
7
  }
7
8
  }
8
9
  class u extends s {
9
10
  constructor(r) {
10
- super(t.BAD_REQUEST, r);
11
+ super(e.BAD_REQUEST, r);
11
12
  }
12
13
  }
13
- class E extends s {
14
+ class a extends s {
15
+ constructor(r) {
16
+ super(e.UNAUTHORIZED, r);
17
+ }
18
+ }
19
+ class d extends s {
20
+ constructor(r) {
21
+ super(e.NOT_FOUND, r);
22
+ }
23
+ }
24
+ class l extends s {
25
+ constructor(r) {
26
+ super(e.INTERNAL_SERVER_ERROR, r);
27
+ }
28
+ }
29
+ class p extends s {
30
+ constructor(r) {
31
+ super(e.FORBIDDEN, r);
32
+ }
33
+ }
34
+ class T extends s {
35
+ constructor(r) {
36
+ super(e.METHOD_NOT_ALLOWED, r);
37
+ }
38
+ }
39
+ class N extends s {
40
+ constructor(r) {
41
+ super(e.CONFLICT, r);
42
+ }
43
+ }
44
+ class x extends s {
45
+ constructor(r) {
46
+ super(e.GONE, r);
47
+ }
48
+ }
49
+ class A extends s {
50
+ constructor(r) {
51
+ super(e.UNPROCESSABLE_ENTITY, r);
52
+ }
53
+ }
54
+ class O extends s {
55
+ constructor(r) {
56
+ super(e.TOO_MANY_REQUESTS, r);
57
+ }
58
+ }
59
+ class R extends s {
60
+ constructor(r) {
61
+ super(e.NOT_IMPLEMENTED, r);
62
+ }
63
+ }
64
+ class _ extends s {
65
+ constructor(r) {
66
+ super(e.BAD_GATEWAY, r);
67
+ }
68
+ }
69
+ class S extends s {
70
+ constructor(r) {
71
+ super(e.SERVICE_UNAVAILABLE, r);
72
+ }
73
+ }
74
+ class U extends s {
14
75
  constructor(r) {
15
- super(t.UNAUTHORIZED, r);
76
+ super(e.GATEWAY_TIMEOUT, r);
16
77
  }
17
78
  }
18
79
  export {
80
+ _ as BadGatewayError,
19
81
  u as BadRequestError,
20
- E as UnauthorizedError,
21
- c as ValidationError
82
+ N as ConflictError,
83
+ p as ForbiddenError,
84
+ U as GatewayTimeoutError,
85
+ x as GoneError,
86
+ e as HttpStatusCodes,
87
+ l as InternalServerError,
88
+ T as MethodNotAllowedError,
89
+ n as MoonflowerError,
90
+ d as NotFoundError,
91
+ R as NotImplementedError,
92
+ S as ServiceUnavailableError,
93
+ O as TooManyRequestsError,
94
+ a as UnauthorizedError,
95
+ A as UnprocessableEntityError,
96
+ E as ValidationError
22
97
  };
23
98
  //# sourceMappingURL=UserFacingErrors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserFacingErrors.mjs","sources":["../../src/errors/UserFacingErrors.ts"],"sourcesContent":["import { BaseHttpError } from './BaseHttpError'\nimport { StatusCodes } from './StatusCodes'\n\nexport class ValidationError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class BadRequestError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class UnauthorizedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.UNAUTHORIZED, message)\n\t}\n}\n\n// To be used later\n// export const errorNameToStatusCode = (name: string): number => {\n// \tswitch (name) {\n// \t\tcase 'ValidationError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'BadRequestError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'UnauthorizedError':\n// \t\t\treturn StatusCodes.UNAUTHORIZED\n// \t}\n// \treturn StatusCodes.INTERNAL_SERVER_ERROR\n// }\n\n// import { getReasonPhrase } from 'http-status-codes'\n// export const errorNameToReason = (name: string): string => {\n// \treturn getReasonPhrase(errorNameToStatusCode(name) || 500)\n// }\n"],"names":["ValidationError","BaseHttpError","message","StatusCodes","BadRequestError","UnauthorizedError"],"mappings":";;AAGO,MAAMA,UAAwBC,EAAc;AAAA,EAClD,YAAYC,GAAiB;AACtB,UAAAC,EAAY,aAAaD,CAAO;AAAA,EAAA;AAExC;AAEO,MAAME,UAAwBH,EAAc;AAAA,EAClD,YAAYC,GAAiB;AACtB,UAAAC,EAAY,aAAaD,CAAO;AAAA,EAAA;AAExC;AAEO,MAAMG,UAA0BJ,EAAc;AAAA,EACpD,YAAYC,GAAiB;AACtB,UAAAC,EAAY,cAAcD,CAAO;AAAA,EAAA;AAEzC;"}
1
+ {"version":3,"file":"UserFacingErrors.mjs","sources":["../../src/errors/UserFacingErrors.ts"],"sourcesContent":["import { BaseHttpError } from './BaseHttpError'\nimport { StatusCodes } from './StatusCodes'\n\nexport const MoonflowerError = BaseHttpError\nexport { StatusCodes as HttpStatusCodes }\n\nexport class ValidationError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class BadRequestError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_REQUEST, message)\n\t}\n}\n\nexport class UnauthorizedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.UNAUTHORIZED, message)\n\t}\n}\n\nexport class NotFoundError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.NOT_FOUND, message)\n\t}\n}\n\nexport class InternalServerError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.INTERNAL_SERVER_ERROR, message)\n\t}\n}\n\nexport class ForbiddenError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.FORBIDDEN, message)\n\t}\n}\n\nexport class MethodNotAllowedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.METHOD_NOT_ALLOWED, message)\n\t}\n}\n\nexport class ConflictError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.CONFLICT, message)\n\t}\n}\n\nexport class GoneError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.GONE, message)\n\t}\n}\n\nexport class UnprocessableEntityError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.UNPROCESSABLE_ENTITY, message)\n\t}\n}\n\nexport class TooManyRequestsError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.TOO_MANY_REQUESTS, message)\n\t}\n}\n\nexport class NotImplementedError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.NOT_IMPLEMENTED, message)\n\t}\n}\n\nexport class BadGatewayError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.BAD_GATEWAY, message)\n\t}\n}\n\nexport class ServiceUnavailableError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.SERVICE_UNAVAILABLE, message)\n\t}\n}\n\nexport class GatewayTimeoutError extends BaseHttpError {\n\tconstructor(message: string) {\n\t\tsuper(StatusCodes.GATEWAY_TIMEOUT, message)\n\t}\n}\n\n// To be used later\n// export const errorNameToStatusCode = (name: string): number => {\n// \tswitch (name) {\n// \t\tcase 'ValidationError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'BadRequestError':\n// \t\t\treturn StatusCodes.BAD_REQUEST\n// \t\tcase 'UnauthorizedError':\n// \t\t\treturn StatusCodes.UNAUTHORIZED\n// \t}\n// \treturn StatusCodes.INTERNAL_SERVER_ERROR\n// }\n\n// import { getReasonPhrase } from 'http-status-codes'\n// export const errorNameToReason = (name: string): string => {\n// \treturn getReasonPhrase(errorNameToStatusCode(name) || 500)\n// }\n"],"names":["MoonflowerError","BaseHttpError","ValidationError","message","StatusCodes","BadRequestError","UnauthorizedError","NotFoundError","InternalServerError","ForbiddenError","MethodNotAllowedError","ConflictError","GoneError","UnprocessableEntityError","TooManyRequestsError","NotImplementedError","BadGatewayError","ServiceUnavailableError","GatewayTimeoutError"],"mappings":";;AAGO,MAAMA,IAAkBC;AAGxB,MAAMC,UAAwBD,EAAc;AAAA,EAClD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,aAAaD,CAAO;AAAA,EAAA;AAExC;AAEO,MAAME,UAAwBJ,EAAc;AAAA,EAClD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,aAAaD,CAAO;AAAA,EAAA;AAExC;AAEO,MAAMG,UAA0BL,EAAc;AAAA,EACpD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,cAAcD,CAAO;AAAA,EAAA;AAEzC;AAEO,MAAMI,UAAsBN,EAAc;AAAA,EAChD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,WAAWD,CAAO;AAAA,EAAA;AAEtC;AAEO,MAAMK,UAA4BP,EAAc;AAAA,EACtD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,uBAAuBD,CAAO;AAAA,EAAA;AAElD;AAEO,MAAMM,UAAuBR,EAAc;AAAA,EACjD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,WAAWD,CAAO;AAAA,EAAA;AAEtC;AAEO,MAAMO,UAA8BT,EAAc;AAAA,EACxD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,oBAAoBD,CAAO;AAAA,EAAA;AAE/C;AAEO,MAAMQ,UAAsBV,EAAc;AAAA,EAChD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,UAAUD,CAAO;AAAA,EAAA;AAErC;AAEO,MAAMS,UAAkBX,EAAc;AAAA,EAC5C,YAAYE,GAAiB;AACtB,UAAAC,EAAY,MAAMD,CAAO;AAAA,EAAA;AAEjC;AAEO,MAAMU,UAAiCZ,EAAc;AAAA,EAC3D,YAAYE,GAAiB;AACtB,UAAAC,EAAY,sBAAsBD,CAAO;AAAA,EAAA;AAEjD;AAEO,MAAMW,UAA6Bb,EAAc;AAAA,EACvD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,mBAAmBD,CAAO;AAAA,EAAA;AAE9C;AAEO,MAAMY,UAA4Bd,EAAc;AAAA,EACtD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,iBAAiBD,CAAO;AAAA,EAAA;AAE5C;AAEO,MAAMa,UAAwBf,EAAc;AAAA,EAClD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,aAAaD,CAAO;AAAA,EAAA;AAExC;AAEO,MAAMc,UAAgChB,EAAc;AAAA,EAC1D,YAAYE,GAAiB;AACtB,UAAAC,EAAY,qBAAqBD,CAAO;AAAA,EAAA;AAEhD;AAEO,MAAMe,UAA4BjB,EAAc;AAAA,EACtD,YAAYE,GAAiB;AACtB,UAAAC,EAAY,iBAAiBD,CAAO;AAAA,EAAA;AAE5C;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../errors/UserFacingErrors.cjs"),m=require("../utils/object.cjs"),f=require("../utils/validationMessages.cjs"),V=(d,r)=>{const n=d.params,s=m.keysOf(r).map(a=>({name:a,validator:r[a]})).map(a=>{const t=n[a.name];if(t===void 0)return{param:a,validated:!0};try{const e=a.validator,u=!e.prevalidate||e.prevalidate(t),l=e.parse(t),v=!e.validate||e.validate(l);return{param:a,validated:u&&v,parsedValue:l}}catch{return{param:a,validated:!1}}}),i=s.filter(a=>!a.validated);if(i.length>0)throw new p.ValidationError(`Failed route param validation: ${i.map(a=>f.getValidationResultMessage(a.param)).join(", ")}`);const c=s.filter(a=>a.validated),o={};return c.forEach(a=>{o[a.param.name]=a.parsedValue}),o};exports.usePathParams=V;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../errors/UserFacingErrors.cjs"),u=require("../utils/object.cjs"),c=require("../utils/validationMessages.cjs"),m=require("../validators/validateParam.cjs"),p=(o,e)=>{const n=o.params,t=u.keysOf(e).map(a=>({name:a,validator:e[a]})).map(a=>{const i=n[a.name];return i===void 0?{param:a,validated:!0,parsedValue:void 0,exception:null}:{...m.validateParam(a.validator,i),param:a}}),r=t.filter(a=>!a.validated);if(r.length>0)throw new d.ValidationError(`Failed route param validation: ${r.map(a=>c.getValidationResultMessage(a.param)).join(", ")}`);const l=t.filter(a=>a.validated),s={};return l.forEach(a=>{s[a.param.name]=a.parsedValue}),s};exports.usePathParams=p;
2
2
  //# sourceMappingURL=usePathParams.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePathParams.cjs","sources":["../../src/hooks/usePathParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { CleanUpPathParam } from '../utils/TypeUtils'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\n\ntype CheckIfOptional<T, B> = B extends string ? (B extends `${string}?` ? T | undefined : T) : never\n\ntype ValidatedData<\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<TestTemplate[number]['cleaned'], Omit<Validator<any>, 'optional'>>,\n> = {\n\t[K in keyof TestTemplate as K extends `${number}` ? TestTemplate[K]['cleaned'] : never]: CheckIfOptional<\n\t\tReturnType<TestTemplate[K]['callback']['parse']>,\n\t\tTestTemplate[K]['original']\n\t>\n}\n\nexport const usePathParams = <\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<CleanUpPathParam<ParamsT[number]>, Omit<Validator<any>, 'optional'>>,\n>(\n\tctx: ParameterizedContext & { parsedPathParams: ParamsT },\n\tvalidators: ValidatorsT,\n): ValidatedData<ParamsT, TestTemplate, ValidatorsT> => {\n\tconst params = ctx.params\n\tconst expectedParams = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst validationResults = expectedParams.map((param) => {\n\t\tconst paramValue = params[param.name] as string\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true }\n\t\t}\n\n\t\ttry {\n\t\t\tconst validatorObject = param.validator\n\t\t\tconst prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue)\n\t\t\tconst parsedValue = validatorObject.parse(paramValue)\n\t\t\tconst validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue)\n\t\t\treturn {\n\t\t\t\tparam,\n\t\t\t\tvalidated: prevalidatorSuccess && validatorSuccess,\n\t\t\t\tparsedValue,\n\t\t\t}\n\t\t} catch {\n\t\t\treturn { param, validated: false }\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed route param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ParamsT, TestTemplate, ValidatorsT>\n}\n"],"names":["usePathParams","ctx","validators","params","validationResults","keysOf","name","param","paramValue","validatorObject","prevalidatorSuccess","parsedValue","validatorSuccess","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":"gNA2BaA,EAAgB,CAW5BC,EACAC,IACuD,CACvD,MAAMC,EAASF,EAAI,OAMbG,EALiBC,EAAAA,OAAOH,CAAU,EAAE,IAAKI,IAAU,CACxD,KAAAA,EACA,UAAWJ,EAAWI,CAAI,CAAA,EACzB,EAEuC,IAAKC,GAAU,CACjD,MAAAC,EAAaL,EAAOI,EAAM,IAAI,EAGpC,GAAIC,IAAe,OACX,MAAA,CAAE,MAAAD,EAAO,UAAW,EAAK,EAG7B,GAAA,CACH,MAAME,EAAkBF,EAAM,UACxBG,EAAsB,CAACD,EAAgB,aAAeA,EAAgB,YAAYD,CAAU,EAC5FG,EAAcF,EAAgB,MAAMD,CAAU,EAC9CI,EAAmB,CAACH,EAAgB,UAAYA,EAAgB,SAASE,CAAW,EACnF,MAAA,CACN,MAAAJ,EACA,UAAWG,GAAuBE,EAClC,YAAAD,CACD,CAAA,MACO,CACA,MAAA,CAAE,MAAAJ,EAAO,UAAW,EAAM,CAAA,CAClC,CACA,EAEKM,EAAoBT,EAAkB,OAAQU,GAAW,CAACA,EAAO,SAAS,EAE5E,GAAAD,EAAkB,OAAS,EAC9B,MAAM,IAAIE,EAAA,gBACT,kCAAkCF,EAChC,IAAKC,GAAWE,EAAAA,2BAA2BF,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC,EACb,EAGD,MAAMG,EAAwBb,EAAkB,OAAQU,GAAWA,EAAO,SAAS,EAE7EI,EAAuC,CAAC,EACxB,OAAAD,EAAA,QAASH,GAAW,CACzCI,EAAYJ,EAAO,MAAM,IAAI,EAAIA,EAAO,WAAA,CACxC,EAEMI,CACR"}
1
+ {"version":3,"file":"usePathParams.cjs","sources":["../../src/hooks/usePathParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { CleanUpPathParam } from '../utils/TypeUtils'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\nimport { validateParam } from '../validators/validateParam'\n\ntype CheckIfOptional<T, B> = B extends string ? (B extends `${string}?` ? T | undefined : T) : never\n\ntype ValidatedData<\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<TestTemplate[number]['cleaned'], Omit<Validator<any>, 'optional'>>,\n> = {\n\t[K in keyof TestTemplate as K extends `${number}` ? TestTemplate[K]['cleaned'] : never]: CheckIfOptional<\n\t\tReturnType<TestTemplate[K]['callback']['parse']>,\n\t\tTestTemplate[K]['original']\n\t>\n}\n\nexport const usePathParams = <\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<CleanUpPathParam<ParamsT[number]>, Omit<Validator<any>, 'optional'>>,\n>(\n\tctx: ParameterizedContext & { parsedPathParams: ParamsT },\n\tvalidators: ValidatorsT,\n): ValidatedData<ParamsT, TestTemplate, ValidatorsT> => {\n\tconst params = ctx.params\n\tconst expectedParams = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst validationResults = expectedParams.map((param) => {\n\t\tconst paramValue = params[param.name] as string\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true, parsedValue: undefined, exception: null }\n\t\t}\n\n\t\treturn {\n\t\t\t...validateParam(param.validator, paramValue),\n\t\t\tparam,\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed route param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ParamsT, TestTemplate, ValidatorsT>\n}\n"],"names":["usePathParams","ctx","validators","params","validationResults","keysOf","name","param","paramValue","validateParam","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":"6PA4BaA,EAAgB,CAW5BC,EACAC,IACuD,CACvD,MAAMC,EAASF,EAAI,OAMbG,EALiBC,EAAAA,OAAOH,CAAU,EAAE,IAAKI,IAAU,CACxD,KAAAA,EACA,UAAWJ,EAAWI,CAAI,CAAA,EACzB,EAEuC,IAAKC,GAAU,CACjD,MAAAC,EAAaL,EAAOI,EAAM,IAAI,EAGpC,OAAIC,IAAe,OACX,CAAE,MAAAD,EAAO,UAAW,GAAM,YAAa,OAAW,UAAW,IAAK,EAGnE,CACN,GAAGE,gBAAcF,EAAM,UAAWC,CAAU,EAC5C,MAAAD,CACD,CAAA,CACA,EAEKG,EAAoBN,EAAkB,OAAQO,GAAW,CAACA,EAAO,SAAS,EAE5E,GAAAD,EAAkB,OAAS,EAC9B,MAAM,IAAIE,EAAA,gBACT,kCAAkCF,EAChC,IAAKC,GAAWE,EAAAA,2BAA2BF,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC,EACb,EAGD,MAAMG,EAAwBV,EAAkB,OAAQO,GAAWA,EAAO,SAAS,EAE7EI,EAAuC,CAAC,EACxB,OAAAD,EAAA,QAASH,GAAW,CACzCI,EAAYJ,EAAO,MAAM,IAAI,EAAIA,EAAO,WAAA,CACxC,EAEMI,CACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePathParams.d.ts","sourceRoot":"","sources":["../../src/hooks/usePathParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAI1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AAEpG,KAAK,aAAa,CACjB,OAAO,SAAS,MAAM,EAAE,EACxB,YAAY,SAAS;KACnB,CAAC,IAAI,MAAM,OAAO,GAAG;QACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACnD;CACD,EACD,WAAW,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,IAC1F;KACF,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,eAAe,CACvG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAChD,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAC3B;CACD,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,OAAO,SAAS,MAAM,EAAE,EACxB,YAAY,SAAS,GACnB,CAAC,IAAI,MAAM,OAAO,GAAG;IACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACpB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CACnD,GACD,EACD,WAAW,SAAS,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,OAE1F,oBAAoB,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,cAC7C,WAAW,KACrB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAgDlD,CAAA"}
1
+ {"version":3,"file":"usePathParams.d.ts","sourceRoot":"","sources":["../../src/hooks/usePathParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAI1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAG/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AAEpG,KAAK,aAAa,CACjB,OAAO,SAAS,MAAM,EAAE,EACxB,YAAY,SAAS;KACnB,CAAC,IAAI,MAAM,OAAO,GAAG;QACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACnD;CACD,EACD,WAAW,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,IAC1F;KACF,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,eAAe,CACvG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAChD,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAC3B;CACD,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,OAAO,SAAS,MAAM,EAAE,EACxB,YAAY,SAAS,GACnB,CAAC,IAAI,MAAM,OAAO,GAAG;IACrB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACpB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CACnD,GACD,EACD,WAAW,SAAS,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,OAE1F,oBAAoB,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,cAC7C,WAAW,KACrB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAuClD,CAAA"}
@@ -1,35 +1,28 @@
1
- import { ValidationError as v } from "../errors/UserFacingErrors.mjs";
1
+ import { ValidationError as d } from "../errors/UserFacingErrors.mjs";
2
2
  import { keysOf as m } from "../utils/object.mjs";
3
- import { getValidationResultMessage as f } from "../utils/validationMessages.mjs";
4
- const x = (l, r) => {
5
- const n = l.params, i = m(r).map((a) => ({
3
+ import { getValidationResultMessage as p } from "../utils/validationMessages.mjs";
4
+ import { validateParam as u } from "../validators/validateParam.mjs";
5
+ const h = (s, t) => {
6
+ const l = s.params, e = m(t).map((a) => ({
6
7
  name: a,
7
- validator: r[a]
8
+ validator: t[a]
8
9
  })).map((a) => {
9
- const e = n[a.name];
10
- if (e === void 0)
11
- return { param: a, validated: !0 };
12
- try {
13
- const t = a.validator, p = !t.prevalidate || t.prevalidate(e), d = t.parse(e), u = !t.validate || t.validate(d);
14
- return {
15
- param: a,
16
- validated: p && u,
17
- parsedValue: d
18
- };
19
- } catch {
20
- return { param: a, validated: !1 };
21
- }
22
- }), o = i.filter((a) => !a.validated);
23
- if (o.length > 0)
24
- throw new v(
25
- `Failed route param validation: ${o.map((a) => f(a.param)).join(", ")}`
10
+ const i = l[a.name];
11
+ return i === void 0 ? { param: a, validated: !0, parsedValue: void 0, exception: null } : {
12
+ ...u(a.validator, i),
13
+ param: a
14
+ };
15
+ }), r = e.filter((a) => !a.validated);
16
+ if (r.length > 0)
17
+ throw new d(
18
+ `Failed route param validation: ${r.map((a) => p(a.param)).join(", ")}`
26
19
  );
27
- const c = i.filter((a) => a.validated), s = {};
28
- return c.forEach((a) => {
29
- s[a.param.name] = a.parsedValue;
30
- }), s;
20
+ const n = e.filter((a) => a.validated), o = {};
21
+ return n.forEach((a) => {
22
+ o[a.param.name] = a.parsedValue;
23
+ }), o;
31
24
  };
32
25
  export {
33
- x as usePathParams
26
+ h as usePathParams
34
27
  };
35
28
  //# sourceMappingURL=usePathParams.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePathParams.mjs","sources":["../../src/hooks/usePathParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { CleanUpPathParam } from '../utils/TypeUtils'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\n\ntype CheckIfOptional<T, B> = B extends string ? (B extends `${string}?` ? T | undefined : T) : never\n\ntype ValidatedData<\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<TestTemplate[number]['cleaned'], Omit<Validator<any>, 'optional'>>,\n> = {\n\t[K in keyof TestTemplate as K extends `${number}` ? TestTemplate[K]['cleaned'] : never]: CheckIfOptional<\n\t\tReturnType<TestTemplate[K]['callback']['parse']>,\n\t\tTestTemplate[K]['original']\n\t>\n}\n\nexport const usePathParams = <\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<CleanUpPathParam<ParamsT[number]>, Omit<Validator<any>, 'optional'>>,\n>(\n\tctx: ParameterizedContext & { parsedPathParams: ParamsT },\n\tvalidators: ValidatorsT,\n): ValidatedData<ParamsT, TestTemplate, ValidatorsT> => {\n\tconst params = ctx.params\n\tconst expectedParams = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst validationResults = expectedParams.map((param) => {\n\t\tconst paramValue = params[param.name] as string\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true }\n\t\t}\n\n\t\ttry {\n\t\t\tconst validatorObject = param.validator\n\t\t\tconst prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue)\n\t\t\tconst parsedValue = validatorObject.parse(paramValue)\n\t\t\tconst validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue)\n\t\t\treturn {\n\t\t\t\tparam,\n\t\t\t\tvalidated: prevalidatorSuccess && validatorSuccess,\n\t\t\t\tparsedValue,\n\t\t\t}\n\t\t} catch {\n\t\t\treturn { param, validated: false }\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed route param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ParamsT, TestTemplate, ValidatorsT>\n}\n"],"names":["usePathParams","ctx","validators","params","validationResults","keysOf","name","param","paramValue","validatorObject","prevalidatorSuccess","parsedValue","validatorSuccess","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":";;;AA2Ba,MAAAA,IAAgB,CAW5BC,GACAC,MACuD;AACvD,QAAMC,IAASF,EAAI,QAMbG,IALiBC,EAAOH,CAAU,EAAE,IAAI,CAACI,OAAU;AAAA,IACxD,MAAAA;AAAA,IACA,WAAWJ,EAAWI,CAAI;AAAA,EAAA,EACzB,EAEuC,IAAI,CAACC,MAAU;AACjD,UAAAC,IAAaL,EAAOI,EAAM,IAAI;AAGpC,QAAIC,MAAe;AACX,aAAA,EAAE,OAAAD,GAAO,WAAW,GAAK;AAG7B,QAAA;AACH,YAAME,IAAkBF,EAAM,WACxBG,IAAsB,CAACD,EAAgB,eAAeA,EAAgB,YAAYD,CAAU,GAC5FG,IAAcF,EAAgB,MAAMD,CAAU,GAC9CI,IAAmB,CAACH,EAAgB,YAAYA,EAAgB,SAASE,CAAW;AACnF,aAAA;AAAA,QACN,OAAAJ;AAAA,QACA,WAAWG,KAAuBE;AAAA,QAClC,aAAAD;AAAA,MACD;AAAA,IAAA,QACO;AACA,aAAA,EAAE,OAAAJ,GAAO,WAAW,GAAM;AAAA,IAAA;AAAA,EAClC,CACA,GAEKM,IAAoBT,EAAkB,OAAO,CAACU,MAAW,CAACA,EAAO,SAAS;AAE5E,MAAAD,EAAkB,SAAS;AAC9B,UAAM,IAAIE;AAAA,MACT,kCAAkCF,EAChC,IAAI,CAACC,MAAWE,EAA2BF,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC;AAAA,IACb;AAGD,QAAMG,IAAwBb,EAAkB,OAAO,CAACU,MAAWA,EAAO,SAAS,GAE7EI,IAAuC,CAAC;AACxB,SAAAD,EAAA,QAAQ,CAACH,MAAW;AACzC,IAAAI,EAAYJ,EAAO,MAAM,IAAI,IAAIA,EAAO;AAAA,EAAA,CACxC,GAEMI;AACR;"}
1
+ {"version":3,"file":"usePathParams.mjs","sources":["../../src/hooks/usePathParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { CleanUpPathParam } from '../utils/TypeUtils'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\nimport { validateParam } from '../validators/validateParam'\n\ntype CheckIfOptional<T, B> = B extends string ? (B extends `${string}?` ? T | undefined : T) : never\n\ntype ValidatedData<\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<TestTemplate[number]['cleaned'], Omit<Validator<any>, 'optional'>>,\n> = {\n\t[K in keyof TestTemplate as K extends `${number}` ? TestTemplate[K]['cleaned'] : never]: CheckIfOptional<\n\t\tReturnType<TestTemplate[K]['callback']['parse']>,\n\t\tTestTemplate[K]['original']\n\t>\n}\n\nexport const usePathParams = <\n\tParamsT extends string[],\n\tTestTemplate extends {\n\t\t[K in keyof ParamsT]: {\n\t\t\toriginal: ParamsT[K]\n\t\t\tcleaned: CleanUpPathParam<ParamsT[K]>\n\t\t\tcallback: ValidatorsT[CleanUpPathParam<ParamsT[K]>]\n\t\t}\n\t},\n\tValidatorsT extends Record<CleanUpPathParam<ParamsT[number]>, Omit<Validator<any>, 'optional'>>,\n>(\n\tctx: ParameterizedContext & { parsedPathParams: ParamsT },\n\tvalidators: ValidatorsT,\n): ValidatedData<ParamsT, TestTemplate, ValidatorsT> => {\n\tconst params = ctx.params\n\tconst expectedParams = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst validationResults = expectedParams.map((param) => {\n\t\tconst paramValue = params[param.name] as string\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true, parsedValue: undefined, exception: null }\n\t\t}\n\n\t\treturn {\n\t\t\t...validateParam(param.validator, paramValue),\n\t\t\tparam,\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed route param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ParamsT, TestTemplate, ValidatorsT>\n}\n"],"names":["usePathParams","ctx","validators","params","validationResults","keysOf","name","param","paramValue","validateParam","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":";;;;AA4Ba,MAAAA,IAAgB,CAW5BC,GACAC,MACuD;AACvD,QAAMC,IAASF,EAAI,QAMbG,IALiBC,EAAOH,CAAU,EAAE,IAAI,CAACI,OAAU;AAAA,IACxD,MAAAA;AAAA,IACA,WAAWJ,EAAWI,CAAI;AAAA,EAAA,EACzB,EAEuC,IAAI,CAACC,MAAU;AACjD,UAAAC,IAAaL,EAAOI,EAAM,IAAI;AAGpC,WAAIC,MAAe,SACX,EAAE,OAAAD,GAAO,WAAW,IAAM,aAAa,QAAW,WAAW,KAAK,IAGnE;AAAA,MACN,GAAGE,EAAcF,EAAM,WAAWC,CAAU;AAAA,MAC5C,OAAAD;AAAA,IACD;AAAA,EAAA,CACA,GAEKG,IAAoBN,EAAkB,OAAO,CAACO,MAAW,CAACA,EAAO,SAAS;AAE5E,MAAAD,EAAkB,SAAS;AAC9B,UAAM,IAAIE;AAAA,MACT,kCAAkCF,EAChC,IAAI,CAACC,MAAWE,EAA2BF,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC;AAAA,IACb;AAGD,QAAMG,IAAwBV,EAAkB,OAAO,CAACO,MAAWA,EAAO,SAAS,GAE7EI,IAAuC,CAAC;AACxB,SAAAD,EAAA,QAAQ,CAACH,MAAW;AACzC,IAAAI,EAAYJ,EAAO,MAAM,IAAI,IAAIA,EAAO;AAAA,EAAA,CACxC,GAEMI;AACR;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../errors/UserFacingErrors.cjs"),y=require("../utils/object.cjs"),v=require("../utils/validationMessages.cjs"),V=(g,r)=>{const s=g.query,i=y.keysOf(r).map(a=>({name:a,validator:r[a]})),o=i.filter(a=>!s[a.name]&&!a.validator.optional);if(o.length>0)throw new u.ValidationError(`Missing query params: ${o.map(a=>v.getMissingParamMessage(a)).join(", ")}`);const n=i.map(a=>{const t=s[a.name];if(t===void 0)return{param:a,validated:!0};try{const e=a.validator,p=!e.prevalidate||e.prevalidate(t),c=e.parse(t),f=!e.validate||e.validate(c);return{param:a,validated:p&&f,parsedValue:c}}catch{return{param:a,validated:!1}}}),l=n.filter(a=>!a.validated);if(l.length>0)throw new u.ValidationError(`Failed query param validation: ${l.map(a=>v.getValidationResultMessage(a.param)).join(", ")}`);const m=n.filter(a=>a.validated),d={};return m.forEach(a=>{d[a.param.name]=a.parsedValue}),d};exports.useQueryParams=V;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../errors/UserFacingErrors.cjs"),c=require("../utils/object.cjs"),m=require("../utils/validationMessages.cjs"),v=require("../validators/validateMissingParams.cjs"),f=require("../validators/validateParam.cjs"),g=(l,a)=>{const r=l.query,t=c.keysOf(a).map(e=>({name:e,validator:a[e]}));v.validateMissingParams(t,r,a,"query");const i=t.map(e=>{const o=r[e.name];return o===void 0?{param:e,validated:!0,parsedValue:void 0,exception:null}:{...f.validateParam(e.validator,o),param:e}}),s=i.filter(e=>!e.validated);if(s.length>0)throw new d.ValidationError(`Failed query param validation: ${s.map(e=>m.getValidationResultMessage(e.param)).join(", ")}`);const u=i.filter(e=>e.validated),n={};return u.forEach(e=>{n[e.param.name]=e.parsedValue}),n};exports.useQueryParams=g;
2
2
  //# sourceMappingURL=useQueryParams.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryParams.cjs","sources":["../../src/hooks/useQueryParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { getMissingParamMessage, getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\n\ntype CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined\n\ntype ValidatedData<T extends Record<string, Validator<any>>> = {\n\t[K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>\n}\n\nexport const useQueryParams = <ValidatorsT extends Record<string, Validator<any>>>(\n\tctx: ParameterizedContext,\n\tvalidators: ValidatorsT,\n): ValidatedData<ValidatorsT> => {\n\tconst query = ctx.query\n\tconst params = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst missingParams = params.filter((param) => !query[param.name] && !param.validator.optional)\n\n\tif (missingParams.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Missing query params: ${missingParams.map((param) => getMissingParamMessage(param)).join(', ')}`,\n\t\t)\n\t}\n\n\tconst validationResults = params.map((param) => {\n\t\tconst paramValue = query[param.name] as string\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true }\n\t\t}\n\n\t\ttry {\n\t\t\tconst validatorObject = param.validator\n\t\t\tconst prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue)\n\t\t\tconst parsedValue = validatorObject.parse(paramValue)\n\t\t\tconst validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue)\n\t\t\treturn {\n\t\t\t\tparam,\n\t\t\t\tvalidated: prevalidatorSuccess && validatorSuccess,\n\t\t\t\tparsedValue,\n\t\t\t}\n\t\t} catch {\n\t\t\treturn { param, validated: false }\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed query param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ValidatorsT>\n}\n"],"names":["useQueryParams","ctx","validators","query","params","keysOf","name","missingParams","param","ValidationError","getMissingParamMessage","validationResults","paramValue","validatorObject","prevalidatorSuccess","parsedValue","validatorSuccess","failedValidations","result","getValidationResultMessage","successfulValidations","returnValue"],"mappings":"gNAaaA,EAAiB,CAC7BC,EACAC,IACgC,CAChC,MAAMC,EAAQF,EAAI,MACZG,EAASC,EAAAA,OAAOH,CAAU,EAAE,IAAKI,IAAU,CAChD,KAAAA,EACA,UAAWJ,EAAWI,CAAI,CAAA,EACzB,EAEIC,EAAgBH,EAAO,OAAQI,GAAU,CAACL,EAAMK,EAAM,IAAI,GAAK,CAACA,EAAM,UAAU,QAAQ,EAE1F,GAAAD,EAAc,OAAS,EAC1B,MAAM,IAAIE,EAAA,gBACT,yBAAyBF,EAAc,IAAKC,GAAUE,yBAAuBF,CAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAChG,EAGD,MAAMG,EAAoBP,EAAO,IAAKI,GAAU,CACzC,MAAAI,EAAaT,EAAMK,EAAM,IAAI,EAGnC,GAAII,IAAe,OACX,MAAA,CAAE,MAAAJ,EAAO,UAAW,EAAK,EAG7B,GAAA,CACH,MAAMK,EAAkBL,EAAM,UACxBM,EAAsB,CAACD,EAAgB,aAAeA,EAAgB,YAAYD,CAAU,EAC5FG,EAAcF,EAAgB,MAAMD,CAAU,EAC9CI,EAAmB,CAACH,EAAgB,UAAYA,EAAgB,SAASE,CAAW,EACnF,MAAA,CACN,MAAAP,EACA,UAAWM,GAAuBE,EAClC,YAAAD,CACD,CAAA,MACO,CACA,MAAA,CAAE,MAAAP,EAAO,UAAW,EAAM,CAAA,CAClC,CACA,EAEKS,EAAoBN,EAAkB,OAAQO,GAAW,CAACA,EAAO,SAAS,EAE5E,GAAAD,EAAkB,OAAS,EAC9B,MAAM,IAAIR,EAAA,gBACT,kCAAkCQ,EAChC,IAAKC,GAAWC,EAAAA,2BAA2BD,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC,EACb,EAGD,MAAME,EAAwBT,EAAkB,OAAQO,GAAWA,EAAO,SAAS,EAE7EG,EAAuC,CAAC,EACxB,OAAAD,EAAA,QAASF,GAAW,CACzCG,EAAYH,EAAO,MAAM,IAAI,EAAIA,EAAO,WAAA,CACxC,EAEMG,CACR"}
1
+ {"version":3,"file":"useQueryParams.cjs","sources":["../../src/hooks/useQueryParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\nimport z from 'zod'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\nimport { validateMissingParams } from '../validators/validateMissingParams'\nimport { validateParam } from '../validators/validateParam'\n\ntype CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined\n\ntype ValidatedData<T extends Record<string, Validator<any> | z.ZodType<any>>> = {\n\t[K in keyof T]: CheckIfOptional<\n\t\tReturnType<T[K] extends Validator<any> ? T[K]['parse'] : T[K]['parse']>,\n\t\tT[K] extends Validator<any> ? T[K]['optional'] : false\n\t>\n}\n\nexport const useQueryParams = <ValidatorsT extends Record<string, Validator<any> | z.ZodType<any>>>(\n\tctx: ParameterizedContext,\n\tvalidators: ValidatorsT,\n): ValidatedData<ValidatorsT> => {\n\tconst query = ctx.query\n\tconst params = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tvalidateMissingParams(params, query, validators, 'query')\n\n\tconst validationResults = params.map((param) => {\n\t\tconst paramValue = query[param.name]\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true, parsedValue: undefined, exception: null }\n\t\t}\n\n\t\treturn {\n\t\t\t...validateParam(param.validator, paramValue),\n\t\t\tparam,\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed query param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ValidatorsT>\n}\n"],"names":["useQueryParams","ctx","validators","query","params","keysOf","name","validateMissingParams","validationResults","param","paramValue","validateParam","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":"kTAmBaA,EAAiB,CAC7BC,EACAC,IACgC,CAChC,MAAMC,EAAQF,EAAI,MACZG,EAASC,EAAAA,OAAOH,CAAU,EAAE,IAAKI,IAAU,CAChD,KAAAA,EACA,UAAWJ,EAAWI,CAAI,CAAA,EACzB,EAEoBC,EAAAA,sBAAAH,EAAQD,EAAOD,EAAY,OAAO,EAExD,MAAMM,EAAoBJ,EAAO,IAAKK,GAAU,CACzC,MAAAC,EAAaP,EAAMM,EAAM,IAAI,EAGnC,OAAIC,IAAe,OACX,CAAE,MAAAD,EAAO,UAAW,GAAM,YAAa,OAAW,UAAW,IAAK,EAGnE,CACN,GAAGE,gBAAcF,EAAM,UAAWC,CAAU,EAC5C,MAAAD,CACD,CAAA,CACA,EAEKG,EAAoBJ,EAAkB,OAAQK,GAAW,CAACA,EAAO,SAAS,EAE5E,GAAAD,EAAkB,OAAS,EAC9B,MAAM,IAAIE,EAAA,gBACT,kCAAkCF,EAChC,IAAKC,GAAWE,EAAAA,2BAA2BF,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC,EACb,EAGD,MAAMG,EAAwBR,EAAkB,OAAQK,GAAWA,EAAO,SAAS,EAE7EI,EAAuC,CAAC,EACxB,OAAAD,EAAA,QAASH,GAAW,CACzCI,EAAYJ,EAAO,MAAM,IAAI,EAAIA,EAAO,WAAA,CACxC,EAEMI,CACR"}
@@ -1,10 +1,11 @@
1
1
  import { ParameterizedContext } from 'koa';
2
+ import { default as z } from 'zod';
2
3
  import { Validator } from '../validators/types';
3
4
 
4
5
  type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined;
5
- type ValidatedData<T extends Record<string, Validator<any>>> = {
6
- [K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>;
6
+ type ValidatedData<T extends Record<string, Validator<any> | z.ZodType<any>>> = {
7
+ [K in keyof T]: CheckIfOptional<ReturnType<T[K] extends Validator<any> ? T[K]['parse'] : T[K]['parse']>, T[K] extends Validator<any> ? T[K]['optional'] : false>;
7
8
  };
8
- export declare const useQueryParams: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
9
+ export declare const useQueryParams: <ValidatorsT extends Record<string, Validator<any> | z.ZodType<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
9
10
  export {};
10
11
  //# sourceMappingURL=useQueryParams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryParams.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueryParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAK1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC5E,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,OAC3E,oBAAoB,cACb,WAAW,KACrB,aAAa,CAAC,WAAW,CAwD3B,CAAA"}
1
+ {"version":3,"file":"useQueryParams.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueryParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,CAAC,MAAM,KAAK,CAAA;AAKnB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;KAC9E,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAC9B,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACvE,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CACtD;CACD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAC5F,oBAAoB,cACb,WAAW,KACrB,aAAa,CAAC,WAAW,CAyC3B,CAAA"}
@@ -1,40 +1,31 @@
1
- import { ValidationError as u } from "../errors/UserFacingErrors.mjs";
2
- import { keysOf as g } from "../utils/object.mjs";
3
- import { getMissingParamMessage as V, getValidationResultMessage as y } from "../utils/validationMessages.mjs";
4
- const M = (m, i) => {
5
- const r = m.query, s = g(i).map((a) => ({
1
+ import { ValidationError as m } from "../errors/UserFacingErrors.mjs";
2
+ import { keysOf as u } from "../utils/object.mjs";
3
+ import { getValidationResultMessage as p } from "../utils/validationMessages.mjs";
4
+ import { validateMissingParams as f } from "../validators/validateMissingParams.mjs";
5
+ import { validateParam as c } from "../validators/validateParam.mjs";
6
+ const h = (s, e) => {
7
+ const r = s.query, t = u(e).map((a) => ({
6
8
  name: a,
7
- validator: i[a]
8
- })), o = s.filter((a) => !r[a.name] && !a.validator.optional);
9
+ validator: e[a]
10
+ }));
11
+ f(t, r, e, "query");
12
+ const i = t.map((a) => {
13
+ const l = r[a.name];
14
+ return l === void 0 ? { param: a, validated: !0, parsedValue: void 0, exception: null } : {
15
+ ...c(a.validator, l),
16
+ param: a
17
+ };
18
+ }), o = i.filter((a) => !a.validated);
9
19
  if (o.length > 0)
10
- throw new u(
11
- `Missing query params: ${o.map((a) => V(a)).join(", ")}`
20
+ throw new m(
21
+ `Failed query param validation: ${o.map((a) => p(a.param)).join(", ")}`
12
22
  );
13
- const n = s.map((a) => {
14
- const e = r[a.name];
15
- if (e === void 0)
16
- return { param: a, validated: !0 };
17
- try {
18
- const t = a.validator, p = !t.prevalidate || t.prevalidate(e), c = t.parse(e), f = !t.validate || t.validate(c);
19
- return {
20
- param: a,
21
- validated: p && f,
22
- parsedValue: c
23
- };
24
- } catch {
25
- return { param: a, validated: !1 };
26
- }
27
- }), l = n.filter((a) => !a.validated);
28
- if (l.length > 0)
29
- throw new u(
30
- `Failed query param validation: ${l.map((a) => y(a.param)).join(", ")}`
31
- );
32
- const v = n.filter((a) => a.validated), d = {};
33
- return v.forEach((a) => {
34
- d[a.param.name] = a.parsedValue;
35
- }), d;
23
+ const d = i.filter((a) => a.validated), n = {};
24
+ return d.forEach((a) => {
25
+ n[a.param.name] = a.parsedValue;
26
+ }), n;
36
27
  };
37
28
  export {
38
- M as useQueryParams
29
+ h as useQueryParams
39
30
  };
40
31
  //# sourceMappingURL=useQueryParams.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryParams.mjs","sources":["../../src/hooks/useQueryParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { getMissingParamMessage, getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\n\ntype CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined\n\ntype ValidatedData<T extends Record<string, Validator<any>>> = {\n\t[K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>\n}\n\nexport const useQueryParams = <ValidatorsT extends Record<string, Validator<any>>>(\n\tctx: ParameterizedContext,\n\tvalidators: ValidatorsT,\n): ValidatedData<ValidatorsT> => {\n\tconst query = ctx.query\n\tconst params = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst missingParams = params.filter((param) => !query[param.name] && !param.validator.optional)\n\n\tif (missingParams.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Missing query params: ${missingParams.map((param) => getMissingParamMessage(param)).join(', ')}`,\n\t\t)\n\t}\n\n\tconst validationResults = params.map((param) => {\n\t\tconst paramValue = query[param.name] as string\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true }\n\t\t}\n\n\t\ttry {\n\t\t\tconst validatorObject = param.validator\n\t\t\tconst prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(paramValue)\n\t\t\tconst parsedValue = validatorObject.parse(paramValue)\n\t\t\tconst validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue)\n\t\t\treturn {\n\t\t\t\tparam,\n\t\t\t\tvalidated: prevalidatorSuccess && validatorSuccess,\n\t\t\t\tparsedValue,\n\t\t\t}\n\t\t} catch {\n\t\t\treturn { param, validated: false }\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed query param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ValidatorsT>\n}\n"],"names":["useQueryParams","ctx","validators","query","params","keysOf","name","missingParams","param","ValidationError","getMissingParamMessage","validationResults","paramValue","validatorObject","prevalidatorSuccess","parsedValue","validatorSuccess","failedValidations","result","getValidationResultMessage","successfulValidations","returnValue"],"mappings":";;;AAaa,MAAAA,IAAiB,CAC7BC,GACAC,MACgC;AAChC,QAAMC,IAAQF,EAAI,OACZG,IAASC,EAAOH,CAAU,EAAE,IAAI,CAACI,OAAU;AAAA,IAChD,MAAAA;AAAA,IACA,WAAWJ,EAAWI,CAAI;AAAA,EAAA,EACzB,GAEIC,IAAgBH,EAAO,OAAO,CAACI,MAAU,CAACL,EAAMK,EAAM,IAAI,KAAK,CAACA,EAAM,UAAU,QAAQ;AAE1F,MAAAD,EAAc,SAAS;AAC1B,UAAM,IAAIE;AAAA,MACT,yBAAyBF,EAAc,IAAI,CAACC,MAAUE,EAAuBF,CAAK,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IAChG;AAGD,QAAMG,IAAoBP,EAAO,IAAI,CAACI,MAAU;AACzC,UAAAI,IAAaT,EAAMK,EAAM,IAAI;AAGnC,QAAII,MAAe;AACX,aAAA,EAAE,OAAAJ,GAAO,WAAW,GAAK;AAG7B,QAAA;AACH,YAAMK,IAAkBL,EAAM,WACxBM,IAAsB,CAACD,EAAgB,eAAeA,EAAgB,YAAYD,CAAU,GAC5FG,IAAcF,EAAgB,MAAMD,CAAU,GAC9CI,IAAmB,CAACH,EAAgB,YAAYA,EAAgB,SAASE,CAAW;AACnF,aAAA;AAAA,QACN,OAAAP;AAAA,QACA,WAAWM,KAAuBE;AAAA,QAClC,aAAAD;AAAA,MACD;AAAA,IAAA,QACO;AACA,aAAA,EAAE,OAAAP,GAAO,WAAW,GAAM;AAAA,IAAA;AAAA,EAClC,CACA,GAEKS,IAAoBN,EAAkB,OAAO,CAACO,MAAW,CAACA,EAAO,SAAS;AAE5E,MAAAD,EAAkB,SAAS;AAC9B,UAAM,IAAIR;AAAA,MACT,kCAAkCQ,EAChC,IAAI,CAACC,MAAWC,EAA2BD,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC;AAAA,IACb;AAGD,QAAME,IAAwBT,EAAkB,OAAO,CAACO,MAAWA,EAAO,SAAS,GAE7EG,IAAuC,CAAC;AACxB,SAAAD,EAAA,QAAQ,CAACF,MAAW;AACzC,IAAAG,EAAYH,EAAO,MAAM,IAAI,IAAIA,EAAO;AAAA,EAAA,CACxC,GAEMG;AACR;"}
1
+ {"version":3,"file":"useQueryParams.mjs","sources":["../../src/hooks/useQueryParams.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\nimport z from 'zod'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\nimport { validateMissingParams } from '../validators/validateMissingParams'\nimport { validateParam } from '../validators/validateParam'\n\ntype CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined\n\ntype ValidatedData<T extends Record<string, Validator<any> | z.ZodType<any>>> = {\n\t[K in keyof T]: CheckIfOptional<\n\t\tReturnType<T[K] extends Validator<any> ? T[K]['parse'] : T[K]['parse']>,\n\t\tT[K] extends Validator<any> ? T[K]['optional'] : false\n\t>\n}\n\nexport const useQueryParams = <ValidatorsT extends Record<string, Validator<any> | z.ZodType<any>>>(\n\tctx: ParameterizedContext,\n\tvalidators: ValidatorsT,\n): ValidatedData<ValidatorsT> => {\n\tconst query = ctx.query\n\tconst params = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tvalidateMissingParams(params, query, validators, 'query')\n\n\tconst validationResults = params.map((param) => {\n\t\tconst paramValue = query[param.name]\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true, parsedValue: undefined, exception: null }\n\t\t}\n\n\t\treturn {\n\t\t\t...validateParam(param.validator, paramValue),\n\t\t\tparam,\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed query param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ValidatorsT>\n}\n"],"names":["useQueryParams","ctx","validators","query","params","keysOf","name","validateMissingParams","validationResults","param","paramValue","validateParam","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":";;;;;AAmBa,MAAAA,IAAiB,CAC7BC,GACAC,MACgC;AAChC,QAAMC,IAAQF,EAAI,OACZG,IAASC,EAAOH,CAAU,EAAE,IAAI,CAACI,OAAU;AAAA,IAChD,MAAAA;AAAA,IACA,WAAWJ,EAAWI,CAAI;AAAA,EAAA,EACzB;AAEoB,EAAAC,EAAAH,GAAQD,GAAOD,GAAY,OAAO;AAExD,QAAMM,IAAoBJ,EAAO,IAAI,CAACK,MAAU;AACzC,UAAAC,IAAaP,EAAMM,EAAM,IAAI;AAGnC,WAAIC,MAAe,SACX,EAAE,OAAAD,GAAO,WAAW,IAAM,aAAa,QAAW,WAAW,KAAK,IAGnE;AAAA,MACN,GAAGE,EAAcF,EAAM,WAAWC,CAAU;AAAA,MAC5C,OAAAD;AAAA,IACD;AAAA,EAAA,CACA,GAEKG,IAAoBJ,EAAkB,OAAO,CAACK,MAAW,CAACA,EAAO,SAAS;AAE5E,MAAAD,EAAkB,SAAS;AAC9B,UAAM,IAAIE;AAAA,MACT,kCAAkCF,EAChC,IAAI,CAACC,MAAWE,EAA2BF,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC;AAAA,IACb;AAGD,QAAMG,IAAwBR,EAAkB,OAAO,CAACK,MAAWA,EAAO,SAAS,GAE7EI,IAAuC,CAAC;AACxB,SAAAD,EAAA,QAAQ,CAACH,MAAW;AACzC,IAAAI,EAAYJ,EAAO,MAAM,IAAI,IAAIA,EAAO;AAAA,EAAA,CACxC,GAEMI;AACR;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("../errors/UserFacingErrors.cjs"),V=require("../utils/object.cjs"),f=require("../utils/validationMessages.cjs"),b=(g,r)=>{const i=g.request.body||{},s=V.keysOf(r).map(e=>({name:e,validator:r[e]})),o=s.filter(e=>i[e.name]===void 0&&!r[e.name].optional);if(o.length>0)throw new v.ValidationError(`Missing body params: ${o.map(e=>f.getMissingParamMessage(e)).join(", ")}`);const n=s.map(e=>{const a=i[e.name];if(a===void 0)return{param:e,validated:!0};try{const c=a===null?null:typeof a=="object"?JSON.stringify(a):String(a),t=e.validator,m=!t.prevalidate||t.prevalidate(c),u=t.parse(c),y=!t.validate||t.validate(u);return{param:e,validated:m&&y,parsedValue:u}}catch{return{param:e,validated:!1}}}),l=n.filter(e=>!e.validated);if(l.length>0)throw new v.ValidationError(`Failed body param validation: ${l.map(e=>f.getValidationResultMessage(e.param)).join(", ")}`);const p=n.filter(e=>e.validated),d={};return p.forEach(e=>{d[e.param.name]=e.parsedValue}),d};exports.useRequestBody=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../errors/UserFacingErrors.cjs"),c=require("../utils/object.cjs"),v=require("../utils/validationMessages.cjs"),m=require("../validators/validateMissingParams.cjs"),p=require("../validators/validateParam.cjs"),f=(d,a)=>{const t=d.request.body||{},i=c.keysOf(a).map(e=>({name:e,validator:a[e]}));m.validateMissingParams(i,t,a,"body");const r=i.map(e=>{const n=t[e.name];return n===void 0?{param:e,validated:!0,parsedValue:void 0,exception:null}:{...p.validateParam(e.validator,n),param:e}}),s=r.filter(e=>!e.validated);if(s.length>0)throw new u.ValidationError(`Failed body param validation: ${s.map(e=>v.getValidationResultMessage(e.param,e.exception)).join(", ")}`);const l=r.filter(e=>e.validated),o={};return l.forEach(e=>{o[e.param.name]=e.parsedValue}),o};exports.useRequestBody=f;
2
2
  //# sourceMappingURL=useRequestBody.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRequestBody.cjs","sources":["../../src/hooks/useRequestBody.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { getMissingParamMessage, getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\n\ntype CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined\n\ntype ValidatedData<T extends Record<string, Validator<any>>> = {\n\t[K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>\n}\n\n/**\n * Hook to access request body data in JSON or form formats.\n *\n * Supported content types:\n * - `application/json`\n * - `application/x-www-form-urlencoded`\n *\n * @param ctx Koa context\n * @param validators Validator definitions\n * @returns Validated parameters\n */\nexport const useRequestBody = <ValidatorsT extends Record<string, Validator<any>>>(\n\tctx: ParameterizedContext,\n\tvalidators: ValidatorsT,\n): ValidatedData<ValidatorsT> => {\n\tconst providedParams = (ctx.request.body || {}) as Record<string, string | number | boolean | object>\n\tconst params = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tconst missingParams = params.filter(\n\t\t(param) => providedParams[param.name] === undefined && !validators[param.name].optional,\n\t)\n\n\tif (missingParams.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Missing body params: ${missingParams.map((param) => getMissingParamMessage(param)).join(', ')}`,\n\t\t)\n\t}\n\n\tconst validationResults = params.map((param) => {\n\t\tconst paramValue = providedParams[param.name]\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true }\n\t\t}\n\n\t\ttry {\n\t\t\tconst convertedValue = (() => {\n\t\t\t\tif (paramValue === null) {\n\t\t\t\t\treturn null\n\t\t\t\t} else if (typeof paramValue === 'object') {\n\t\t\t\t\treturn JSON.stringify(paramValue)\n\t\t\t\t}\n\t\t\t\treturn String(paramValue)\n\t\t\t})()\n\t\t\tconst validatorObject = param.validator\n\t\t\tconst prevalidatorSuccess = !validatorObject.prevalidate || validatorObject.prevalidate(convertedValue)\n\t\t\tconst parsedValue = validatorObject.parse(convertedValue)\n\t\t\tconst validatorSuccess = !validatorObject.validate || validatorObject.validate(parsedValue)\n\t\t\treturn {\n\t\t\t\tparam,\n\t\t\t\tvalidated: prevalidatorSuccess && validatorSuccess,\n\t\t\t\tparsedValue,\n\t\t\t}\n\t\t} catch {\n\t\t\treturn { param, validated: false }\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed body param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ValidatorsT>\n}\n"],"names":["useRequestBody","ctx","validators","providedParams","params","keysOf","name","missingParams","param","ValidationError","getMissingParamMessage","validationResults","paramValue","convertedValue","validatorObject","prevalidatorSuccess","parsedValue","validatorSuccess","failedValidations","result","getValidationResultMessage","successfulValidations","returnValue"],"mappings":"gNAwBaA,EAAiB,CAC7BC,EACAC,IACgC,CAChC,MAAMC,EAAkBF,EAAI,QAAQ,MAAQ,CAAC,EACvCG,EAASC,EAAAA,OAAOH,CAAU,EAAE,IAAKI,IAAU,CAChD,KAAAA,EACA,UAAWJ,EAAWI,CAAI,CAAA,EACzB,EAEIC,EAAgBH,EAAO,OAC3BI,GAAUL,EAAeK,EAAM,IAAI,IAAM,QAAa,CAACN,EAAWM,EAAM,IAAI,EAAE,QAChF,EAEI,GAAAD,EAAc,OAAS,EAC1B,MAAM,IAAIE,EAAA,gBACT,wBAAwBF,EAAc,IAAKC,GAAUE,yBAAuBF,CAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAC/F,EAGD,MAAMG,EAAoBP,EAAO,IAAKI,GAAU,CACzC,MAAAI,EAAaT,EAAeK,EAAM,IAAI,EAG5C,GAAII,IAAe,OACX,MAAA,CAAE,MAAAJ,EAAO,UAAW,EAAK,EAG7B,GAAA,CACH,MAAMK,EACDD,IAAe,KACX,KACG,OAAOA,GAAe,SACzB,KAAK,UAAUA,CAAU,EAE1B,OAAOA,CAAU,EAEnBE,EAAkBN,EAAM,UACxBO,EAAsB,CAACD,EAAgB,aAAeA,EAAgB,YAAYD,CAAc,EAChGG,EAAcF,EAAgB,MAAMD,CAAc,EAClDI,EAAmB,CAACH,EAAgB,UAAYA,EAAgB,SAASE,CAAW,EACnF,MAAA,CACN,MAAAR,EACA,UAAWO,GAAuBE,EAClC,YAAAD,CACD,CAAA,MACO,CACA,MAAA,CAAE,MAAAR,EAAO,UAAW,EAAM,CAAA,CAClC,CACA,EAEKU,EAAoBP,EAAkB,OAAQQ,GAAW,CAACA,EAAO,SAAS,EAE5E,GAAAD,EAAkB,OAAS,EAC9B,MAAM,IAAIT,EAAA,gBACT,iCAAiCS,EAC/B,IAAKC,GAAWC,EAAAA,2BAA2BD,EAAO,KAAK,CAAC,EACxD,KAAK,IAAI,CAAC,EACb,EAGD,MAAME,EAAwBV,EAAkB,OAAQQ,GAAWA,EAAO,SAAS,EAE7EG,EAAuC,CAAC,EACxB,OAAAD,EAAA,QAASF,GAAW,CACzCG,EAAYH,EAAO,MAAM,IAAI,EAAIA,EAAO,WAAA,CACxC,EAEMG,CACR"}
1
+ {"version":3,"file":"useRequestBody.cjs","sources":["../../src/hooks/useRequestBody.ts"],"sourcesContent":["import { ParameterizedContext } from 'koa'\nimport z from 'zod'\n\nimport { ValidationError } from '../errors/UserFacingErrors'\nimport { keysOf } from '../utils/object'\nimport { getValidationResultMessage } from '../utils/validationMessages'\nimport { Validator } from '../validators/types'\nimport { validateMissingParams } from '../validators/validateMissingParams'\nimport { validateParam } from '../validators/validateParam'\n\ntype CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined\n\ntype ValidatedData<T extends Record<string, Validator<any> | z.ZodType<any>>> = {\n\t[K in keyof T]: CheckIfOptional<\n\t\tReturnType<T[K] extends Validator<any> ? T[K]['parse'] : T[K]['parse']>,\n\t\tT[K] extends Validator<any> ? T[K]['optional'] : false\n\t>\n}\n\n/**\n * Hook to access request body data in JSON or form formats.\n *\n * Supported content types:\n * - `application/json`\n * - `application/x-www-form-urlencoded`\n *\n * @param ctx Koa context\n * @param validators Validator definitions\n * @returns Validated parameters\n */\nexport const useRequestBody = <ValidatorsT extends Record<string, Validator<any> | z.ZodType<any>>>(\n\tctx: ParameterizedContext,\n\tvalidators: ValidatorsT,\n): ValidatedData<ValidatorsT> => {\n\tconst providedParams = (ctx.request.body || {}) as Record<string, string | number | boolean | object>\n\tconst params = keysOf(validators).map((name) => ({\n\t\tname,\n\t\tvalidator: validators[name],\n\t}))\n\n\tvalidateMissingParams(params, providedParams, validators, 'body')\n\n\tconst validationResults = params.map((param) => {\n\t\tconst paramValue = providedParams[param.name]\n\n\t\t// Param is optional and is not provided - skip validation\n\t\tif (paramValue === undefined) {\n\t\t\treturn { param, validated: true, parsedValue: undefined, exception: null }\n\t\t}\n\n\t\treturn {\n\t\t\t...validateParam(param.validator, paramValue),\n\t\t\tparam,\n\t\t}\n\t})\n\n\tconst failedValidations = validationResults.filter((result) => !result.validated)\n\n\tif (failedValidations.length > 0) {\n\t\tthrow new ValidationError(\n\t\t\t`Failed body param validation: ${failedValidations\n\t\t\t\t.map((result) => getValidationResultMessage(result.param, result.exception))\n\t\t\t\t.join(', ')}`,\n\t\t)\n\t}\n\n\tconst successfulValidations = validationResults.filter((result) => result.validated)\n\n\tconst returnValue: Record<string, unknown> = {}\n\tsuccessfulValidations.forEach((result) => {\n\t\treturnValue[result.param.name] = result.parsedValue\n\t})\n\n\treturn returnValue as ValidatedData<ValidatorsT>\n}\n"],"names":["useRequestBody","ctx","validators","providedParams","params","keysOf","name","validateMissingParams","validationResults","param","paramValue","validateParam","failedValidations","result","ValidationError","getValidationResultMessage","successfulValidations","returnValue"],"mappings":"kTA8BaA,EAAiB,CAC7BC,EACAC,IACgC,CAChC,MAAMC,EAAkBF,EAAI,QAAQ,MAAQ,CAAC,EACvCG,EAASC,EAAAA,OAAOH,CAAU,EAAE,IAAKI,IAAU,CAChD,KAAAA,EACA,UAAWJ,EAAWI,CAAI,CAAA,EACzB,EAEoBC,EAAAA,sBAAAH,EAAQD,EAAgBD,EAAY,MAAM,EAEhE,MAAMM,EAAoBJ,EAAO,IAAKK,GAAU,CACzC,MAAAC,EAAaP,EAAeM,EAAM,IAAI,EAG5C,OAAIC,IAAe,OACX,CAAE,MAAAD,EAAO,UAAW,GAAM,YAAa,OAAW,UAAW,IAAK,EAGnE,CACN,GAAGE,gBAAcF,EAAM,UAAWC,CAAU,EAC5C,MAAAD,CACD,CAAA,CACA,EAEKG,EAAoBJ,EAAkB,OAAQK,GAAW,CAACA,EAAO,SAAS,EAE5E,GAAAD,EAAkB,OAAS,EAC9B,MAAM,IAAIE,EAAA,gBACT,iCAAiCF,EAC/B,IAAKC,GAAWE,EAAAA,2BAA2BF,EAAO,MAAOA,EAAO,SAAS,CAAC,EAC1E,KAAK,IAAI,CAAC,EACb,EAGD,MAAMG,EAAwBR,EAAkB,OAAQK,GAAWA,EAAO,SAAS,EAE7EI,EAAuC,CAAC,EACxB,OAAAD,EAAA,QAASH,GAAW,CACzCI,EAAYJ,EAAO,MAAM,IAAI,EAAIA,EAAO,WAAA,CACxC,EAEMI,CACR"}
@@ -1,10 +1,11 @@
1
1
  import { ParameterizedContext } from 'koa';
2
+ import { default as z } from 'zod';
2
3
  import { Validator } from '../validators/types';
3
4
 
4
5
  type CheckIfOptional<T, B extends boolean | undefined> = B extends false ? T : T | undefined;
5
- type ValidatedData<T extends Record<string, Validator<any>>> = {
6
- [K in keyof T]: CheckIfOptional<ReturnType<T[K]['parse']>, T[K]['optional']>;
6
+ type ValidatedData<T extends Record<string, Validator<any> | z.ZodType<any>>> = {
7
+ [K in keyof T]: CheckIfOptional<ReturnType<T[K] extends Validator<any> ? T[K]['parse'] : T[K]['parse']>, T[K] extends Validator<any> ? T[K]['optional'] : false>;
7
8
  };
8
- export declare const useRequestBody: <ValidatorsT extends Record<string, Validator<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
9
+ export declare const useRequestBody: <ValidatorsT extends Record<string, Validator<any> | z.ZodType<any>>>(ctx: ParameterizedContext, validators: ValidatorsT) => ValidatedData<ValidatorsT>;
9
10
  export {};
10
11
  //# sourceMappingURL=useRequestBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRequestBody.d.ts","sourceRoot":"","sources":["../../src/hooks/useRequestBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAK1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC5E,CAAA;AAaD,eAAO,MAAM,cAAc,GAAI,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,OAC3E,oBAAoB,cACb,WAAW,KACrB,aAAa,CAAC,WAAW,CAkE3B,CAAA"}
1
+ {"version":3,"file":"useRequestBody.d.ts","sourceRoot":"","sources":["../../src/hooks/useRequestBody.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,CAAC,MAAM,KAAK,CAAA;AAKnB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAE5F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;KAC9E,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAC9B,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACvE,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CACtD;CACD,CAAA;AAaD,eAAO,MAAM,cAAc,GAAI,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAC5F,oBAAoB,cACb,WAAW,KACrB,aAAa,CAAC,WAAW,CAyC3B,CAAA"}